Skip to content
Prev Previous commit
Next Next commit
Update shipped implementations of the INotifier
Signed-off-by: Joas Schilling <[email protected]>
  • Loading branch information
nickvergessen committed Jul 15, 2019
commit 6d71e471e166c30c0b9abe05d36240b9f1556d8e
10 changes: 1 addition & 9 deletions apps/comments/lib/AppInfo/Application.php
Original file line number Diff line number Diff line change
Expand Up @@ -76,15 +76,7 @@ protected function registerDavEntity(EventDispatcherInterface $dispatcher) {
}

protected function registerNotifier() {
$this->getContainer()->getServer()->getNotificationManager()->registerNotifier(
function() {
return $this->getContainer()->query(Notifier::class);
},
function () {
$l = $this->getContainer()->getServer()->getL10NFactory()->get('comments');
return ['id' => 'comments', 'name' => $l->t('Comments')];
}
);
$this->getContainer()->getServer()->getNotificationManager()->registerNotifier(Notifier::class);
}

protected function registerCommentsEventHandler() {
Expand Down
27 changes: 25 additions & 2 deletions apps/comments/lib/Notification/Notifier.php
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
use OCP\IUser;
use OCP\IUserManager;
use OCP\L10N\IFactory;
use OCP\Notification\AlreadyProcessedException;
use OCP\Notification\INotification;
use OCP\Notification\INotifier;

Expand Down Expand Up @@ -66,13 +67,35 @@ public function __construct(
$this->userManager = $userManager;
}

/**
* Identifier of the notifier, only use [a-z0-9_]
*
* @return string
* @since 17.0.0
*/
public function getID(): string {
return 'comments';
}

/**
* Human readable name describing the notifier
*
* @return string
* @since 17.0.0
*/
public function getName(): string {
return $this->l10nFactory->get('comments')->t('Comments');
}

/**
* @param INotification $notification
* @param string $languageCode The code of the language that should be used to prepare the notification
* @return INotification
* @throws \InvalidArgumentException When the notification was not prepared by a notifier
* @throws AlreadyProcessedException When the notification is not needed anymore and should be deleted
* @since 9.0.0
*/
public function prepare(INotification $notification, $languageCode) {
public function prepare(INotification $notification, string $languageCode): INotification {
if($notification->getApp() !== 'comments') {
throw new \InvalidArgumentException();
}
Expand Down Expand Up @@ -101,7 +124,7 @@ public function prepare(INotification $notification, $languageCode) {
$userFolder = $this->rootFolder->getUserFolder($notification->getUser());
$nodes = $userFolder->getById((int)$parameters[1]);
if(empty($nodes)) {
throw new \InvalidArgumentException('Cannot resolve file ID to node instance');
throw new AlreadyProcessedException();
}
$node = $nodes[0];

Expand Down
10 changes: 1 addition & 9 deletions apps/updatenotification/lib/AppInfo/Application.php
Original file line number Diff line number Diff line change
Expand Up @@ -71,14 +71,6 @@ public function register() {

public function registerNotifier() {
$notificationsManager = $this->getContainer()->getServer()->getNotificationManager();
$notificationsManager->registerNotifier(function() {
return $this->getContainer()->query(Notifier::class);
}, function() {
$l = $this->getContainer()->getServer()->getL10N('updatenotification');
return [
'id' => 'updatenotification',
'name' => $l->t('Update notifications'),
];
});
$notificationsManager->registerNotifier(Notifier::class);
}
}
29 changes: 25 additions & 4 deletions apps/updatenotification/lib/Notification/Notifier.php
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
use OCP\IUser;
use OCP\IUserSession;
use OCP\L10N\IFactory;
use OCP\Notification\AlreadyProcessedException;
use OCP\Notification\IManager;
use OCP\Notification\INotification;
use OCP\Notification\INotifier;
Expand Down Expand Up @@ -79,14 +80,35 @@ public function __construct(IURLGenerator $url, IConfig $config, IManager $notif
$this->appVersions = $this->getAppVersions();
}

/**
* Identifier of the notifier, only use [a-z0-9_]
*
* @return string
* @since 17.0.0
*/
public function getID(): string {
return 'updatenotification';
}

/**
* Human readable name describing the notifier
*
* @return string
* @since 17.0.0
*/
public function getName(): string {
return $this->l10NFactory->get('updatenotification')->t('Update notifications');
}

/**
* @param INotification $notification
* @param string $languageCode The code of the language that should be used to prepare the notification
* @return INotification
* @throws \InvalidArgumentException When the notification was not prepared by a notifier
* @throws AlreadyProcessedException When the notification is not needed anymore and should be deleted
* @since 9.0.0
*/
public function prepare(INotification $notification, $languageCode): INotification {
public function prepare(INotification $notification, string $languageCode): INotification {
if ($notification->getApp() !== 'updatenotification') {
throw new \InvalidArgumentException('Unknown app id');
}
Expand Down Expand Up @@ -142,12 +164,11 @@ public function prepare(INotification $notification, $languageCode): INotificati
*
* @param INotification $notification
* @param string $installedVersion
* @throws \InvalidArgumentException When the update is already installed
* @throws AlreadyProcessedException When the update is already installed
*/
protected function updateAlreadyInstalledCheck(INotification $notification, $installedVersion) {
if (version_compare($notification->getObjectId(), $installedVersion, '<=')) {
$this->notificationManager->markProcessed($notification);
throw new \InvalidArgumentException('Update already installed');
throw new AlreadyProcessedException();
}
}

Expand Down
12 changes: 1 addition & 11 deletions apps/user_ldap/appinfo/app.php
Original file line number Diff line number Diff line change
Expand Up @@ -42,17 +42,7 @@
$ldapWrapper = new OCA\User_LDAP\LDAP();
$ocConfig = \OC::$server->getConfig();
$notificationManager = \OC::$server->getNotificationManager();
$notificationManager->registerNotifier(function() {
return new \OCA\User_LDAP\Notification\Notifier(
\OC::$server->getL10NFactory()
);
}, function() {
$l = \OC::$server->getL10N('user_ldap');
return [
'id' => 'user_ldap',
'name' => $l->t('LDAP user and group backend'),
];
});
$notificationManager->registerNotifier(\OCA\User_LDAP\Notification\Notifier::class);
$userSession = \OC::$server->getUserSession();

$userPluginManager = \OC::$server->query('LDAPUserPluginManager');
Expand Down
22 changes: 21 additions & 1 deletion apps/user_ldap/lib/Notification/Notifier.php
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,33 @@ public function __construct(\OCP\L10N\IFactory $l10nFactory) {
$this->l10nFactory = $l10nFactory;
}

/**
* Identifier of the notifier, only use [a-z0-9_]
*
* @return string
* @since 17.0.0
*/
public function getID(): string {
return 'user_ldap';
}

/**
* Human readable name describing the notifier
*
* @return string
* @since 17.0.0
*/
public function getName(): string {
return $this->l10nFactory->get('user_ldap')->t('LDAP User backend');
}

/**
* @param INotification $notification
* @param string $languageCode The code of the language that should be used to prepare the notification
* @return INotification
* @throws \InvalidArgumentException When the notification was not prepared by a notifier
*/
public function prepare(INotification $notification, $languageCode) {
public function prepare(INotification $notification, string $languageCode): INotification {
if ($notification->getApp() !== 'user_ldap') {
// Not my app => throw
throw new \InvalidArgumentException();
Expand Down