%PDF- %PDF-
| Direktori : /www/varak.net/nextcloud.varak.net/apps_old/apps/passwords/lib/Notification/ |
| Current File : /www/varak.net/nextcloud.varak.net/apps_old/apps/passwords/lib/Notification/SurveyNotification.php |
<?php
/**
* This file is part of the Passwords App
* created by Marius David Wieschollek
* and licensed under the AGPL.
*/
namespace OCA\Passwords\Notification;
use Exception;
use OCP\IL10N;
use OCP\Notification\INotification;
/**
* Class SurveyNotification
*
* @package OCA\Passwords\Notification
*/
class SurveyNotification extends AbstractNotification {
const NAME = 'survey';
const TYPE = 'admin';
/**
* Send the notification
*
* @param string $userId
* @param array $parameters
*
* @throws Exception
*/
public function send(string $userId, array $parameters = []): void {
$notification = $this->createNotification($userId)
->setSubject(self::NAME, $parameters)
->setObject('admin', 'survey');
$actionYesUrl = $this->urlGenerator->linkToRouteAbsolute('passwords.notification.survey', ['answer' => 'yes']);
$enableAction = $notification->createAction();
$enableAction->setLabel('enable')
->setLink($actionYesUrl, 'GET')
->setPrimary(true);
$notification->addAction($enableAction);
$actionNoUrl = $this->urlGenerator->linkToRouteAbsolute('passwords.notification.survey', ['answer' => 'no']);
$disableAction = $notification->createAction();
$disableAction->setLabel('disable')
->setLink($actionNoUrl, 'GET')
->setPrimary(false);
$notification->addAction($disableAction);
$this->notificationManager->notify($notification);
}
/**
* Process the notification for display
*
* @param INotification $notification
* @param IL10N $localisation
*
* @return INotification
*/
public function process(INotification $notification, IL10N $localisation): INotification {
$title = $localisation->t('Help us to improve Passwords');
$message = $this->getMessage($localisation);
$link = $this->urlGenerator->linkToRouteAbsolute('settings.AdminSettings.index', ['section' => 'passwords']).'#passwords-server-survey';
foreach($notification->getActions() as $action) {
if($action->getLabel() === 'disable') {
$actionUrl = $this->urlGenerator->linkToRouteAbsolute('passwords.notification.survey', ['answer' => 'no']);
$action->setLink($actionUrl, 'GET')->setParsedLabel($localisation->t('Not yet'));
} else if($action->getLabel() === 'enable') {
$actionUrl = $this->urlGenerator->linkToRouteAbsolute('passwords.notification.survey', ['answer' => 'yes']);
$action->setLink($actionUrl, 'GET')->setParsedLabel($localisation->t('Participate'));
}
$notification->addParsedAction($action);
}
return $notification
->setParsedSubject($title)
->setParsedMessage($message)
->setLink($link);
}
/**
* @param IL10N $localisation
*
* @return string
*/
protected function getMessage(IL10N $localisation): string {
return $localisation->t('You can help us to improve the Passwords app by participating in our server survey.')
.' '.
$localisation->t('This will send us some anonymized data about your setup and selected settings.')
.' '.
$localisation->t('You can change this at any time in the app settings.');
}
}