first commit
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* @file classes/notification/NotificationManagerDelegate.php
|
||||
*
|
||||
* Copyright (c) 2014-2021 Simon Fraser University
|
||||
* Copyright (c) 2003-2021 John Willinsky
|
||||
* Distributed under the GNU GPL v3. For full terms see the file docs/COPYING.
|
||||
*
|
||||
* @class NotificationManagerDelegate
|
||||
*
|
||||
* @ingroup notification
|
||||
*
|
||||
* @brief Abstract class to support notification manager delegates
|
||||
* that provide default implementation to the interface that defines
|
||||
* notification presentation data. It also introduce a method to be
|
||||
* extended by subclasses to update notification objects.
|
||||
*/
|
||||
|
||||
namespace PKP\notification;
|
||||
|
||||
use APP\notification\Notification;
|
||||
use PKP\core\PKPRequest;
|
||||
|
||||
abstract class NotificationManagerDelegate extends PKPNotificationOperationManager
|
||||
{
|
||||
/** @var int NOTIFICATION_TYPE_... */
|
||||
private $_notificationType;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
*
|
||||
* @param int $notificationType NOTIFICATION_TYPE_...
|
||||
*/
|
||||
public function __construct($notificationType)
|
||||
{
|
||||
$this->_notificationType = $notificationType;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the current notification type this manager is handling.
|
||||
*
|
||||
* @return int NOTIFICATION_TYPE_...
|
||||
*/
|
||||
public function getNotificationType()
|
||||
{
|
||||
return $this->_notificationType;
|
||||
}
|
||||
|
||||
/**
|
||||
* Define operations to update notifications.
|
||||
*
|
||||
* @param PKPRequest $request Request object
|
||||
* @param array $userIds List of user IDs to notify
|
||||
* @param int $assocType Application::ASSOC_TYPE_...
|
||||
* @param int $assocId ID corresponding to $assocType
|
||||
*
|
||||
* @return bool True iff success
|
||||
*/
|
||||
public function updateNotification($request, $userIds, $assocType, $assocId)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if this manager delegate can handle the
|
||||
* creation of the passed notification type.
|
||||
*
|
||||
* @copydoc PKPNotificationOperationManager::createNotification()
|
||||
*
|
||||
* @param null|mixed $userId
|
||||
* @param null|mixed $notificationType
|
||||
* @param null|mixed $contextId
|
||||
* @param null|mixed $assocType
|
||||
* @param null|mixed $assocId
|
||||
* @param null|mixed $params
|
||||
*/
|
||||
public function createNotification($request, $userId = null, $notificationType = null, $contextId = null, $assocType = null, $assocId = null, $level = Notification::NOTIFICATION_LEVEL_NORMAL, $params = null)
|
||||
{
|
||||
assert($notificationType == $this->getNotificationType() || $this->multipleTypesUpdate());
|
||||
return parent::createNotification($request, $userId, $notificationType, $contextId, $assocType, $assocId, $level, $params);
|
||||
}
|
||||
|
||||
/**
|
||||
* Flag a notification manager that handles multiple notification
|
||||
* types inside the update method within the same call. Only set
|
||||
* this to true if you're sure the notification manager provides
|
||||
* all information for all notification types you're handling (via
|
||||
* the getNotification... methods).
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
protected function multipleTypesUpdate()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
if (!PKP_STRICT_MODE) {
|
||||
class_alias('\PKP\notification\NotificationManagerDelegate', '\NotificationManagerDelegate');
|
||||
}
|
||||
Reference in New Issue
Block a user