Open Monograph Press  3.3.0
AnnouncementNotificationManager.inc.php
1 <?php
15 import('lib.pkp.classes.notification.NotificationManagerDelegate');
16 
19  public $_announcement;
20 
25  public function initialize(Announcement $announcement) : void {
26  $this->_announcement = $announcement;
27  }
28 
32  public function getNotificationMessage($request, $notification) : string {
33  return __('emails.announcement.subject');
34  }
35 
39  public function getNotificationContents($request, $notification) : EmailTemplate {
40  return Services::get('emailTemplate')->getByKey($notification->getContextId(), 'ANNOUNCEMENT');
41  }
42 
46  public function getNotificationUrl($request, $notification) {
47  return $request->getDispatcher()->url(
48  $request,
49  ROUTE_PAGE,
50  $request->getContext()->getData('path'),
51  'announcement',
52  'view',
53  $this->_announcement->getId()
54  );
55  }
56 
60  public function getIconClass($notification) : string {
61  return 'notifyIconInfo';
62  }
63 
67  public function getStyleClass($notification) : string {
68  return NOTIFICATION_STYLE_CLASS_INFORMATION;
69  }
70 
76  public function notify(User $user) : ?PKPNotification {
77  return parent::createNotification(
78  Application::get()->getRequest(),
79  $user->getId(),
80  NOTIFICATION_TYPE_NEW_ANNOUNCEMENT,
81  $this->_announcement->getAssocId(),
82  null,
83  null,
84  NOTIFICATION_LEVEL_NORMAL,
85  array('contents' => $this->_announcement->getLocalizedTitle()),
86  false,
87  function ($mail) use ($user) {
88  return $this->_setupMessage($mail, $user);
89  }
90  );
91  }
92 
96  protected function getMailTemplate($emailKey = null) : MailTemplate {
97  $contextId = $this->_announcement->getAssocId();
98  $context = Application::get()->getRequest()->getContext();
99  if ($context->getId() != $contextId) {
100  $context = Services::get('context')->get($contextId);
101  }
102  import('lib.pkp.classes.mail.MailTemplate');
103  $mail = new MailTemplate('ANNOUNCEMENT', null, $context, false);
104  return $mail;
105  }
106 
113  private function _setupMessage(Mail $mail, User $user) : Mail {
114  $mail->assignParams($this->_getMessageParams($user));
115  return $mail;
116  }
117 
122  private function _getMessageParams() : array {
123  return [
124  'title' => $this->_announcement->getLocalizedTitle(),
125  'summary' => $this->_announcement->getLocalizedDescriptionShort(),
126  'announcement' => $this->_announcement->getLocalizedDescription(),
127  'url' => Application::get()->getRequest()->getDispatcher()->url(
129  ROUTE_PAGE,
130  Application::get()->getRequest()->getContext()->getData('path'),
131  'announcement',
132  'view',
133  $this->_announcement->getId()
134  ),
135  ];
136  }
137 }
AnnouncementNotificationManager\$_announcement
$_announcement
Definition: AnnouncementNotificationManager.inc.php:22
AnnouncementNotificationManager\notify
notify(User $user)
Definition: AnnouncementNotificationManager.inc.php:79
NotificationManagerDelegate
Abstract class to support notification manager delegates that provide default implementation to the i...
Definition: NotificationManagerDelegate.inc.php:21
Http\Client\Exception\getRequest
getRequest()
Definition: RequestAwareTrait.php:25
AnnouncementNotificationManager\getNotificationMessage
getNotificationMessage($request, $notification)
Definition: AnnouncementNotificationManager.inc.php:35
MailTemplate
Subclass of Mail for mailing a template email.
Definition: MailTemplate.inc.php:21
EmailTemplate
Describes basic email template properties.
Definition: EmailTemplate.inc.php:17
AnnouncementNotificationManager\getNotificationUrl
getNotificationUrl($request, $notification)
Definition: AnnouncementNotificationManager.inc.php:49
Mail
Class defining basic operations for handling and sending emails.
Definition: Mail.inc.php:23
AnnouncementNotificationManager\getIconClass
getIconClass($notification)
Definition: AnnouncementNotificationManager.inc.php:63
Announcement
Basic class describing a announcement.
Definition: Announcement.inc.php:22
AnnouncementNotificationManager\initialize
initialize(Announcement $announcement)
Definition: AnnouncementNotificationManager.inc.php:28
DataObject\getId
getId()
Definition: DataObject.inc.php:206
PKPNotification
Definition: PKPNotification.inc.php:87
AnnouncementNotificationManager\getNotificationContents
getNotificationContents($request, $notification)
Definition: AnnouncementNotificationManager.inc.php:42
PKPApplication\get
static get()
Definition: PKPApplication.inc.php:235
User
Basic class describing users existing in the system.
Definition: User.inc.php:23
AnnouncementNotificationManager\getMailTemplate
getMailTemplate($emailKey=null)
Definition: AnnouncementNotificationManager.inc.php:99
AnnouncementNotificationManager\getStyleClass
getStyleClass($notification)
Definition: AnnouncementNotificationManager.inc.php:70
PKPServices\get
static get($service)
Definition: PKPServices.inc.php:49
AnnouncementNotificationManager
New announcement notification manager.
Definition: AnnouncementNotificationManager.inc.php:17