parent
d044884cfa
commit
4e347170ac
@ -0,0 +1,151 @@ |
||||
<?php |
||||
/** |
||||
* @author Joas Schilling <nickvergessen@owncloud.com> |
||||
* |
||||
* @copyright Copyright (c) 2015, ownCloud, Inc. |
||||
* @license AGPL-3.0 |
||||
* |
||||
* This code is free software: you can redistribute it and/or modify |
||||
* it under the terms of the GNU Affero General Public License, version 3, |
||||
* as published by the Free Software Foundation. |
||||
* |
||||
* This program is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU Affero General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU Affero General Public License, version 3, |
||||
* along with this program. If not, see <http://www.gnu.org/licenses/> |
||||
* |
||||
*/ |
||||
|
||||
namespace OC\Notification; |
||||
|
||||
use OCP\Notification\IAction; |
||||
|
||||
class Action implements IAction { |
||||
|
||||
/** @var string */ |
||||
protected $label; |
||||
|
||||
/** @var string */ |
||||
protected $labelParsed; |
||||
|
||||
/** @var string */ |
||||
protected $link; |
||||
|
||||
/** @var string */ |
||||
protected $icon; |
||||
|
||||
/** |
||||
* Constructor |
||||
*/ |
||||
public function __construct() { |
||||
$this->label = ''; |
||||
$this->labelParsed = ''; |
||||
$this->link = ''; |
||||
$this->icon = ''; |
||||
} |
||||
|
||||
/** |
||||
* @param string $label |
||||
* @return $this |
||||
* @throws \InvalidArgumentException if the label is invalid |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function setLabel($label) { |
||||
if (!is_string($label) || $label === '' || isset($label[32])) { |
||||
throw new \InvalidArgumentException('The given label is invalid'); |
||||
} |
||||
$this->label = $label; |
||||
return $this; |
||||
} |
||||
|
||||
/** |
||||
* @return string |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function getLabel() { |
||||
return $this->label; |
||||
} |
||||
|
||||
/** |
||||
* @param string $label |
||||
* @return $this |
||||
* @throws \InvalidArgumentException if the label is invalid |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function setParsedLabel($label) { |
||||
if (!is_string($label) || $label === '') { |
||||
throw new \InvalidArgumentException('The given parsed label is invalid'); |
||||
} |
||||
$this->labelParsed = $label; |
||||
return $this; |
||||
} |
||||
|
||||
/** |
||||
* @return string |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function getParsedLabel() { |
||||
return $this->labelParsed; |
||||
} |
||||
|
||||
/** |
||||
* @param string $link |
||||
* @return $this |
||||
* @throws \InvalidArgumentException if the link is invalid |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function setLink($link) { |
||||
if (!is_string($link) || $link === '' || isset($link[256])) { |
||||
throw new \InvalidArgumentException('The given link is invalid'); |
||||
} |
||||
$this->link = $link; |
||||
return $this; |
||||
} |
||||
|
||||
/** |
||||
* @return string |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function getLink() { |
||||
return $this->link; |
||||
} |
||||
|
||||
/** |
||||
* @param string $icon |
||||
* @return $this |
||||
* @throws \InvalidArgumentException if the icon is invalid |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function setIcon($icon) { |
||||
if (!is_string($icon) || $icon === '' || isset($icon[64])) { |
||||
throw new \InvalidArgumentException('The given icon is invalid'); |
||||
} |
||||
$this->icon = $icon; |
||||
return $this; |
||||
} |
||||
|
||||
/** |
||||
* @return string |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function getIcon() { |
||||
return $this->icon; |
||||
} |
||||
|
||||
/** |
||||
* @return bool |
||||
*/ |
||||
public function isValid() { |
||||
return $this->label !== '' && $this->link !== ''; |
||||
} |
||||
|
||||
/** |
||||
* @return bool |
||||
*/ |
||||
public function isValidParsed() { |
||||
return $this->labelParsed !== '' && $this->link !== ''; |
||||
} |
||||
} |
||||
@ -0,0 +1,180 @@ |
||||
<?php |
||||
/** |
||||
* @author Joas Schilling <nickvergessen@owncloud.com> |
||||
* |
||||
* @copyright Copyright (c) 2015, ownCloud, Inc. |
||||
* @license AGPL-3.0 |
||||
* |
||||
* This code is free software: you can redistribute it and/or modify |
||||
* it under the terms of the GNU Affero General Public License, version 3, |
||||
* as published by the Free Software Foundation. |
||||
* |
||||
* This program is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU Affero General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU Affero General Public License, version 3, |
||||
* along with this program. If not, see <http://www.gnu.org/licenses/> |
||||
* |
||||
*/ |
||||
|
||||
namespace OC\Notification; |
||||
|
||||
|
||||
use OCP\Notification\IApp; |
||||
use OCP\Notification\IManager; |
||||
use OCP\Notification\INotification; |
||||
use OCP\Notification\INotifier; |
||||
|
||||
class Manager implements IManager { |
||||
/** @var IApp */ |
||||
protected $apps; |
||||
|
||||
/** @var INotifier */ |
||||
protected $notifiers; |
||||
|
||||
/** @var \Closure */ |
||||
protected $appsClosures; |
||||
|
||||
/** @var \Closure */ |
||||
protected $notifiersClosures; |
||||
|
||||
/** |
||||
* @param \Closure $service The service must implement IApp, otherwise a |
||||
* \InvalidArgumentException is thrown later |
||||
* @return null |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function registerApp(\Closure $service) { |
||||
$this->appsClosures[] = $service; |
||||
$this->apps = []; |
||||
} |
||||
|
||||
/** |
||||
* @param \Closure $service The service must implement INotifier, otherwise a |
||||
* \InvalidArgumentException is thrown later |
||||
* @return null |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function registerNotifier(\Closure $service) { |
||||
$this->notifiersClosures[] = $service; |
||||
$this->notifiers = []; |
||||
} |
||||
|
||||
/** |
||||
* @return IApp[] |
||||
*/ |
||||
protected function getApps() { |
||||
if (!empty($this->apps)) { |
||||
return $this->apps; |
||||
} |
||||
|
||||
foreach ($this->appsClosures as $closure) { |
||||
$app = $closure; |
||||
if (!($app instanceof IApp)) { |
||||
throw new \InvalidArgumentException('The given notification app does not implement the IApp interface'); |
||||
} |
||||
$this->apps[] = $app; |
||||
} |
||||
|
||||
return $this->apps; |
||||
} |
||||
|
||||
/** |
||||
* @return INotifier[] |
||||
*/ |
||||
protected function getNotifiers() { |
||||
if (!empty($this->notifiers)) { |
||||
return $this->notifiers; |
||||
} |
||||
|
||||
foreach ($this->notifiersClosures as $closure) { |
||||
$notifier = $closure; |
||||
if (!($notifier instanceof INotifier)) { |
||||
throw new \InvalidArgumentException('The given notification app does not implement the INotifier interface'); |
||||
} |
||||
$this->notifiers[] = $notifier; |
||||
} |
||||
|
||||
return $this->notifiers; |
||||
} |
||||
|
||||
/** |
||||
* @return INotification |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function createNotification() { |
||||
return new Notification(); |
||||
} |
||||
|
||||
/** |
||||
* @param INotification $notification |
||||
* @return null |
||||
* @throws \InvalidArgumentException When the notification is not valid |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function notify(INotification $notification) { |
||||
if (!$notification->isValid()) { |
||||
throw new \InvalidArgumentException('The given notification is invalid'); |
||||
} |
||||
|
||||
$apps = $this->getApps(); |
||||
|
||||
foreach ($apps as $app) { |
||||
$app->notify($notification); |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* @param INotification $notification |
||||
* @return INotification |
||||
* @throws \InvalidArgumentException When the notification was not prepared by a notifier |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function prepare(INotification $notification) { |
||||
$notifiers = $this->getNotifiers(); |
||||
|
||||
foreach ($notifiers as $notifier) { |
||||
try { |
||||
$notifier->prepare($notification); |
||||
} catch (\InvalidArgumentException $e) {} |
||||
} |
||||
|
||||
if (!$notification->isValidParsed()) { |
||||
throw new \InvalidArgumentException('The given notification has not been handled'); |
||||
} |
||||
|
||||
return $notification; |
||||
} |
||||
|
||||
/** |
||||
* @param string $objectType |
||||
* @param int $objectId |
||||
* @param string $user |
||||
* @return null |
||||
*/ |
||||
public function markProcessed($objectType, $objectId, $user = '') { |
||||
$apps = $this->getApps(); |
||||
|
||||
foreach ($apps as $app) { |
||||
$app->markProcessed($objectType, $objectId, $user); |
||||
} |
||||
} |
||||
|
||||
/** |
||||
* @param string $user |
||||
* @param string $appId |
||||
* @return int |
||||
*/ |
||||
public function getCount($user, $appId = '') { |
||||
$apps = $this->getApps(); |
||||
|
||||
$count = 0; |
||||
foreach ($apps as $app) { |
||||
$count += $app->markProcessed($user, $appId); |
||||
} |
||||
|
||||
return $count; |
||||
} |
||||
} |
||||
@ -0,0 +1,448 @@ |
||||
<?php |
||||
/** |
||||
* @author Joas Schilling <nickvergessen@owncloud.com> |
||||
* |
||||
* @copyright Copyright (c) 2015, ownCloud, Inc. |
||||
* @license AGPL-3.0 |
||||
* |
||||
* This code is free software: you can redistribute it and/or modify |
||||
* it under the terms of the GNU Affero General Public License, version 3, |
||||
* as published by the Free Software Foundation. |
||||
* |
||||
* This program is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU Affero General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU Affero General Public License, version 3, |
||||
* along with this program. If not, see <http://www.gnu.org/licenses/> |
||||
* |
||||
*/ |
||||
|
||||
namespace OC\Notification; |
||||
|
||||
use OCP\Notification\IAction; |
||||
use OCP\Notification\INotification; |
||||
|
||||
class Notification implements INotification { |
||||
/** @var string */ |
||||
protected $app; |
||||
|
||||
/** @var string */ |
||||
protected $user; |
||||
|
||||
/** @var int */ |
||||
protected $timestamp; |
||||
|
||||
/** @var string */ |
||||
protected $objectType; |
||||
|
||||
/** @var int */ |
||||
protected $objectId; |
||||
|
||||
/** @var string */ |
||||
protected $subject; |
||||
|
||||
/** @var array */ |
||||
protected $subjectParameters; |
||||
|
||||
/** @var string */ |
||||
protected $subjectParsed; |
||||
|
||||
/** @var string */ |
||||
protected $message; |
||||
|
||||
/** @var array */ |
||||
protected $messageParameters; |
||||
|
||||
/** @var string */ |
||||
protected $messageParsed; |
||||
|
||||
/** @var string */ |
||||
protected $link; |
||||
|
||||
/** @var string */ |
||||
protected $icon; |
||||
|
||||
/** @var array */ |
||||
protected $actions; |
||||
|
||||
/** @var array */ |
||||
protected $actionsParsed; |
||||
|
||||
/** |
||||
* Constructor |
||||
*/ |
||||
public function __construct() { |
||||
$this->app = ''; |
||||
$this->user = ''; |
||||
$this->timestamp = 0; |
||||
$this->objectType = ''; |
||||
$this->objectId = 0; |
||||
$this->subject = ''; |
||||
$this->subjectParameters = []; |
||||
$this->subjectParsed = ''; |
||||
$this->message = ''; |
||||
$this->messageParameters = []; |
||||
$this->messageParsed = ''; |
||||
$this->link = ''; |
||||
$this->icon = ''; |
||||
$this->actions = []; |
||||
$this->actionsParsed = []; |
||||
} |
||||
|
||||
/** |
||||
* @param string $app |
||||
* @return $this |
||||
* @throws \InvalidArgumentException if the app id is invalid |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function setApp($app) { |
||||
if (!is_string($app) || $app === '' || isset($app[32])) { |
||||
throw new \InvalidArgumentException('The given app name is invalid'); |
||||
} |
||||
$this->app = $app; |
||||
return $this; |
||||
} |
||||
|
||||
/** |
||||
* @return string |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function getApp() { |
||||
return $this->app; |
||||
} |
||||
|
||||
/** |
||||
* @param string $user |
||||
* @return $this |
||||
* @throws \InvalidArgumentException if the user id is invalid |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function setUser($user) { |
||||
if (!is_string($user) || $user === '' || isset($app[64])) { |
||||
throw new \InvalidArgumentException('The given user id is invalid'); |
||||
} |
||||
$this->user = $user; |
||||
return $this; |
||||
} |
||||
|
||||
/** |
||||
* @return string |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function getUser() { |
||||
return $this->user; |
||||
} |
||||
|
||||
/** |
||||
* @param int $timestamp |
||||
* @return $this |
||||
* @throws \InvalidArgumentException if the timestamp is invalid |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function setTimestamp($timestamp) { |
||||
if (!is_int($timestamp)) { |
||||
throw new \InvalidArgumentException('The given timestamp is invalid'); |
||||
} |
||||
$this->timestamp = $timestamp; |
||||
return $this; |
||||
} |
||||
|
||||
/** |
||||
* @return int |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function getTimestamp() { |
||||
return $this->timestamp; |
||||
} |
||||
|
||||
/** |
||||
* @param string $type |
||||
* @param int $id |
||||
* @return $this |
||||
* @throws \InvalidArgumentException if the object type or id is invalid |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function setObject($type, $id) { |
||||
if (!is_string($type) || $type === '' || isset($type[64])) { |
||||
throw new \InvalidArgumentException('The given object type is invalid'); |
||||
} |
||||
$this->objectType = $type; |
||||
|
||||
if (!is_int($id)) { |
||||
throw new \InvalidArgumentException('The given object id is invalid'); |
||||
} |
||||
$this->objectId = $id; |
||||
return $this; |
||||
} |
||||
|
||||
/** |
||||
* @return string |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function getObjectType() { |
||||
return $this->objectType; |
||||
} |
||||
|
||||
/** |
||||
* @return int |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function getObjectId() { |
||||
return $this->objectId; |
||||
} |
||||
|
||||
/** |
||||
* @param string $subject |
||||
* @param array $parameters |
||||
* @return $this |
||||
* @throws \InvalidArgumentException if the subject or parameters are invalid |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function setSubject($subject, array $parameters = []) { |
||||
if (!is_string($subject) || $subject === '' || isset($subject[64])) { |
||||
throw new \InvalidArgumentException('The given subject is invalid'); |
||||
} |
||||
$this->subject = $subject; |
||||
|
||||
if (!is_array($parameters)) { |
||||
throw new \InvalidArgumentException('The given subject parameters are invalid'); |
||||
} |
||||
$this->subjectParameters = $parameters; |
||||
return $this; |
||||
} |
||||
|
||||
/** |
||||
* @return string |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function getSubject() { |
||||
return $this->subject; |
||||
} |
||||
|
||||
/** |
||||
* @return string[] |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function getSubjectParameters() { |
||||
return $this->subjectParameters; |
||||
} |
||||
|
||||
/** |
||||
* @param string $subject |
||||
* @return $this |
||||
* @throws \InvalidArgumentException if the subject are invalid |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function setParsedSubject($subject) { |
||||
if (!is_string($subject) || $subject === '') { |
||||
throw new \InvalidArgumentException('The given parsed subject is invalid'); |
||||
} |
||||
$this->subjectParsed = $subject; |
||||
return $this; |
||||
} |
||||
|
||||
/** |
||||
* @return string |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function getParsedSubject() { |
||||
return $this->messageParsed; |
||||
} |
||||
|
||||
/** |
||||
* @param string $message |
||||
* @param array $parameters |
||||
* @return $this |
||||
* @throws \InvalidArgumentException if the message or parameters are invalid |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function setMessage($message, array $parameters = []) { |
||||
if (!is_string($message) || $message === '' || isset($message[64])) { |
||||
throw new \InvalidArgumentException('The given message is invalid'); |
||||
} |
||||
$this->message = $message; |
||||
|
||||
if (!is_array($parameters)) { |
||||
throw new \InvalidArgumentException('The given message parameters are invalid'); |
||||
} |
||||
$this->messageParameters = $parameters; |
||||
return $this; |
||||
} |
||||
|
||||
/** |
||||
* @return string |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function getMessage() { |
||||
return $this->message; |
||||
} |
||||
|
||||
/** |
||||
* @return string[] |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function getMessageParameters() { |
||||
return $this->messageParameters; |
||||
} |
||||
|
||||
/** |
||||
* @param string $message |
||||
* @return $this |
||||
* @throws \InvalidArgumentException if the message are invalid |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function setParsedMessage($message) { |
||||
if (!is_string($message) || $message === '') { |
||||
throw new \InvalidArgumentException('The given parsed message is invalid'); |
||||
} |
||||
$this->messageParsed = $message; |
||||
return $this; |
||||
} |
||||
|
||||
/** |
||||
* @return string |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function getParsedMessage() { |
||||
return $this->messageParsed; |
||||
} |
||||
|
||||
/** |
||||
* @param string $link |
||||
* @return $this |
||||
* @throws \InvalidArgumentException if the link are invalid |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function setLink($link) { |
||||
if (!is_string($link) || $link === '' || isset($link[256])) { |
||||
throw new \InvalidArgumentException('The given link is invalid'); |
||||
} |
||||
$this->link = $link; |
||||
return $this; |
||||
} |
||||
|
||||
/** |
||||
* @return string |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function getLink() { |
||||
return $this->link; |
||||
} |
||||
|
||||
/** |
||||
* @param string $icon |
||||
* @return $this |
||||
* @throws \InvalidArgumentException if the icon are invalid |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function setIcon($icon) { |
||||
if (!is_string($icon) || $icon === '' || isset($icon[64])) { |
||||
throw new \InvalidArgumentException('The given icon is invalid'); |
||||
} |
||||
$this->icon = $icon; |
||||
return $this; |
||||
} |
||||
|
||||
/** |
||||
* @return string |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function getIcon() { |
||||
return $this->icon; |
||||
} |
||||
|
||||
/** |
||||
* @return IAction |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function createAction() { |
||||
return new Action(); |
||||
} |
||||
|
||||
/** |
||||
* @param IAction $action |
||||
* @return $this |
||||
* @throws \InvalidArgumentException if the action are invalid |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function addAction(IAction $action) { |
||||
if ($action->isValid()) { |
||||
throw new \InvalidArgumentException('The given action is invalid'); |
||||
} |
||||
$this->actions[] = $action; |
||||
return $this; |
||||
} |
||||
|
||||
/** |
||||
* @return IAction[] |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function getActions() { |
||||
return $this->actions; |
||||
} |
||||
|
||||
/** |
||||
* @param IAction $action |
||||
* @return $this |
||||
* @throws \InvalidArgumentException if the action are invalid |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function addParsedAction(IAction $action) { |
||||
if ($action->isValidParsed()) { |
||||
throw new \InvalidArgumentException('The given parsed action is invalid'); |
||||
} |
||||
$this->actions[] = $action; |
||||
return $this; |
||||
} |
||||
|
||||
/** |
||||
* @return IAction[] |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function getParsedActions() { |
||||
return $this->actionsParsed; |
||||
} |
||||
|
||||
/** |
||||
* @return bool |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function isValid() { |
||||
return |
||||
$this->isValidCommon() |
||||
&& |
||||
$this->subject !== '' |
||||
; |
||||
} |
||||
|
||||
/** |
||||
* @return bool |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function isValidParsed() { |
||||
return |
||||
$this->isValidCommon() |
||||
&& |
||||
$this->subjectParsed !== '' |
||||
; |
||||
} |
||||
|
||||
/** |
||||
* @return bool |
||||
*/ |
||||
protected function isValidCommon() { |
||||
return |
||||
$this->app !== '' |
||||
&& |
||||
$this->user !== '' |
||||
&& |
||||
$this->timestamp !== 0 |
||||
&& |
||||
$this->objectType !== '' |
||||
&& |
||||
$this->objectId !== 0 |
||||
; |
||||
} |
||||
} |
||||
@ -0,0 +1,96 @@ |
||||
<?php |
||||
/** |
||||
* @author Joas Schilling <nickvergessen@owncloud.com> |
||||
* |
||||
* @copyright Copyright (c) 2015, ownCloud, Inc. |
||||
* @license AGPL-3.0 |
||||
* |
||||
* This code is free software: you can redistribute it and/or modify |
||||
* it under the terms of the GNU Affero General Public License, version 3, |
||||
* as published by the Free Software Foundation. |
||||
* |
||||
* This program is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU Affero General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU Affero General Public License, version 3, |
||||
* along with this program. If not, see <http://www.gnu.org/licenses/> |
||||
* |
||||
*/ |
||||
|
||||
namespace OCP\Notification; |
||||
|
||||
/** |
||||
* Interface IAction |
||||
* |
||||
* @package OCP\Notification |
||||
* @since 8.2.0 |
||||
*/ |
||||
interface IAction { |
||||
/** |
||||
* @param string $label |
||||
* @return $this |
||||
* @throws \InvalidArgumentException if the label is invalid |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function setLabel($label); |
||||
|
||||
/** |
||||
* @return string |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function getLabel(); |
||||
|
||||
/** |
||||
* @param string $label |
||||
* @return $this |
||||
* @throws \InvalidArgumentException if the label is invalid |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function setParsedLabel($label); |
||||
|
||||
/** |
||||
* @return string |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function getParsedLabel(); |
||||
|
||||
/** |
||||
* @param string $link |
||||
* @return $this |
||||
* @throws \InvalidArgumentException if the link is invalid |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function setLink($link); |
||||
|
||||
/** |
||||
* @return string |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function getLink(); |
||||
|
||||
/** |
||||
* @param string $icon |
||||
* @return $this |
||||
* @throws \InvalidArgumentException if the icon is invalid |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function setIcon($icon); |
||||
|
||||
/** |
||||
* @return string |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function getIcon(); |
||||
|
||||
/** |
||||
* @return bool |
||||
*/ |
||||
public function isValid(); |
||||
|
||||
/** |
||||
* @return bool |
||||
*/ |
||||
public function isValidParsed(); |
||||
} |
||||
@ -0,0 +1,55 @@ |
||||
<?php |
||||
/** |
||||
* @author Joas Schilling <nickvergessen@owncloud.com> |
||||
* |
||||
* @copyright Copyright (c) 2015, ownCloud, Inc. |
||||
* @license AGPL-3.0 |
||||
* |
||||
* This code is free software: you can redistribute it and/or modify |
||||
* it under the terms of the GNU Affero General Public License, version 3, |
||||
* as published by the Free Software Foundation. |
||||
* |
||||
* This program is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU Affero General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU Affero General Public License, version 3, |
||||
* along with this program. If not, see <http://www.gnu.org/licenses/> |
||||
* |
||||
*/ |
||||
|
||||
namespace OCP\Notification; |
||||
|
||||
/** |
||||
* Interface IApp |
||||
* |
||||
* @package OCP\Notification |
||||
* @since 8.2.0 |
||||
*/ |
||||
interface IApp { |
||||
/** |
||||
* @param INotification $notification |
||||
* @return null |
||||
* @throws \InvalidArgumentException When the notification is not valid |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function notify(INotification $notification); |
||||
|
||||
/** |
||||
* @param string $objectType |
||||
* @param int $objectId |
||||
* @param string $user |
||||
* @return null |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function markProcessed($objectType, $objectId, $user = ''); |
||||
|
||||
/** |
||||
* @param string $user |
||||
* @param string $appId |
||||
* @return int |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function getCount($user, $appId = ''); |
||||
} |
||||
@ -0,0 +1,52 @@ |
||||
<?php |
||||
/** |
||||
* @author Joas Schilling <nickvergessen@owncloud.com> |
||||
* |
||||
* @copyright Copyright (c) 2015, ownCloud, Inc. |
||||
* @license AGPL-3.0 |
||||
* |
||||
* This code is free software: you can redistribute it and/or modify |
||||
* it under the terms of the GNU Affero General Public License, version 3, |
||||
* as published by the Free Software Foundation. |
||||
* |
||||
* This program is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU Affero General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU Affero General Public License, version 3, |
||||
* along with this program. If not, see <http://www.gnu.org/licenses/> |
||||
* |
||||
*/ |
||||
|
||||
namespace OCP\Notification; |
||||
|
||||
/** |
||||
* Interface IManager |
||||
* |
||||
* @package OCP\Notification |
||||
* @since 8.2.0 |
||||
*/ |
||||
interface IManager extends IApp, INotifier { |
||||
/** |
||||
* @param \Closure $service The service must implement IApp, otherwise a |
||||
* \InvalidArgumentException is thrown later |
||||
* @return null |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function registerApp(\Closure $service); |
||||
|
||||
/** |
||||
* @param \Closure $service The service must implement INotifier, otherwise a |
||||
* \InvalidArgumentException is thrown later |
||||
* @return null |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function registerNotifier(\Closure $service); |
||||
|
||||
/** |
||||
* @return INotification |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function createNotification(); |
||||
} |
||||
@ -0,0 +1,237 @@ |
||||
<?php |
||||
/** |
||||
* @author Joas Schilling <nickvergessen@owncloud.com> |
||||
* |
||||
* @copyright Copyright (c) 2015, ownCloud, Inc. |
||||
* @license AGPL-3.0 |
||||
* |
||||
* This code is free software: you can redistribute it and/or modify |
||||
* it under the terms of the GNU Affero General Public License, version 3, |
||||
* as published by the Free Software Foundation. |
||||
* |
||||
* This program is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU Affero General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU Affero General Public License, version 3, |
||||
* along with this program. If not, see <http://www.gnu.org/licenses/> |
||||
* |
||||
*/ |
||||
|
||||
namespace OCP\Notification; |
||||
|
||||
/** |
||||
* Interface INotification |
||||
* |
||||
* @package OCP\Notification |
||||
* @since 8.2.0 |
||||
*/ |
||||
interface INotification { |
||||
/** |
||||
* @param string $app |
||||
* @return $this |
||||
* @throws \InvalidArgumentException if the app id are invalid |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function setApp($app); |
||||
|
||||
/** |
||||
* @return string |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function getApp(); |
||||
|
||||
/** |
||||
* @param string $user |
||||
* @return $this |
||||
* @throws \InvalidArgumentException if the user id are invalid |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function setUser($user); |
||||
|
||||
/** |
||||
* @return string |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function getUser(); |
||||
|
||||
/** |
||||
* @param int $timestamp |
||||
* @return $this |
||||
* @throws \InvalidArgumentException if the timestamp are invalid |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function setTimestamp($timestamp); |
||||
|
||||
/** |
||||
* @return int |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function getTimestamp(); |
||||
|
||||
/** |
||||
* @param string $type |
||||
* @param int $id |
||||
* @return $this |
||||
* @throws \InvalidArgumentException if the object type or id are invalid |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function setObject($type, $id); |
||||
|
||||
/** |
||||
* @return string |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function getObjectType(); |
||||
|
||||
/** |
||||
* @return int |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function getObjectId(); |
||||
|
||||
/** |
||||
* @param string $subject |
||||
* @param array $parameters |
||||
* @return $this |
||||
* @throws \InvalidArgumentException if the subject or parameters are invalid |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function setSubject($subject, array $parameters = []); |
||||
|
||||
/** |
||||
* @return string |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function getSubject(); |
||||
|
||||
/** |
||||
* @return string[] |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function getSubjectParameters(); |
||||
|
||||
/** |
||||
* @param string $subject |
||||
* @return $this |
||||
* @throws \InvalidArgumentException if the subject are invalid |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function setParsedSubject($subject); |
||||
|
||||
/** |
||||
* @return string |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function getParsedSubject(); |
||||
|
||||
/** |
||||
* @param string $message |
||||
* @param array $parameters |
||||
* @return $this |
||||
* @throws \InvalidArgumentException if the message or parameters are invalid |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function setMessage($message, array $parameters = []); |
||||
|
||||
/** |
||||
* @return string |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function getMessage(); |
||||
|
||||
/** |
||||
* @return string[] |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function getMessageParameters(); |
||||
|
||||
/** |
||||
* @param string $message |
||||
* @return $this |
||||
* @throws \InvalidArgumentException if the message are invalid |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function setParsedMessage($message); |
||||
|
||||
/** |
||||
* @return string |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function getParsedMessage(); |
||||
|
||||
/** |
||||
* @param string $link |
||||
* @return $this |
||||
* @throws \InvalidArgumentException if the link are invalid |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function setLink($link); |
||||
|
||||
/** |
||||
* @return string |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function getLink(); |
||||
|
||||
/** |
||||
* @param string $icon |
||||
* @return $this |
||||
* @throws \InvalidArgumentException if the icon are invalid |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function setIcon($icon); |
||||
|
||||
/** |
||||
* @return string |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function getIcon(); |
||||
|
||||
/** |
||||
* @return IAction |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function createAction(); |
||||
|
||||
/** |
||||
* @param IAction $action |
||||
* @return $this |
||||
* @throws \InvalidArgumentException if the action are invalid |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function addAction(IAction $action); |
||||
|
||||
/** |
||||
* @return IAction[] |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function getActions(); |
||||
|
||||
/** |
||||
* @param IAction $action |
||||
* @return $this |
||||
* @throws \InvalidArgumentException if the action are invalid |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function addParsedAction(IAction $action); |
||||
|
||||
/** |
||||
* @return IAction[] |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function getParsedActions(); |
||||
|
||||
/** |
||||
* @return bool |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function isValid(); |
||||
|
||||
/** |
||||
* @return bool |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function isValidParsed(); |
||||
} |
||||
@ -0,0 +1,38 @@ |
||||
<?php |
||||
/** |
||||
* @author Joas Schilling <nickvergessen@owncloud.com> |
||||
* |
||||
* @copyright Copyright (c) 2015, ownCloud, Inc. |
||||
* @license AGPL-3.0 |
||||
* |
||||
* This code is free software: you can redistribute it and/or modify |
||||
* it under the terms of the GNU Affero General Public License, version 3, |
||||
* as published by the Free Software Foundation. |
||||
* |
||||
* This program is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU Affero General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU Affero General Public License, version 3, |
||||
* along with this program. If not, see <http://www.gnu.org/licenses/> |
||||
* |
||||
*/ |
||||
|
||||
namespace OCP\Notification; |
||||
|
||||
/** |
||||
* Interface INotifier |
||||
* |
||||
* @package OCP\Notification |
||||
* @since 8.2.0 |
||||
*/ |
||||
interface INotifier { |
||||
/** |
||||
* @param INotification $notification |
||||
* @return INotification |
||||
* @throws \InvalidArgumentException When the notification was not prepared by a notifier |
||||
* @since 8.2.0 |
||||
*/ |
||||
public function prepare(INotification $notification); |
||||
} |
||||
Loading…
Reference in new issue