[ Mini Kiebo ]
Server: Windows NT DESKTOP-5B8S0D4 6.2 build 9200 (Windows 8 Professional Edition) i586
Path:
D:
/
Backup
/
05122024
/
htdocs
/
jurnal-kesmas
/
jobs
/
notifications
/
[
Home
]
File: IssuePublishedNotifyUsers.php
<?php /** * @file jobs/notifications/IssuePublishedMailUsers.php * * Copyright (c) 2014-2022 Simon Fraser University * Copyright (c) 2000-2022 John Willinsky * Distributed under the GNU GPL v3. For full terms see the file docs/COPYING. * * @class IssuePublishedNotifyUsers * * @ingroup jobs * * @brief Class to send emails when a new issue is published */ namespace APP\jobs\notifications; use APP\core\Application; use APP\facades\Repo; use APP\issue\Issue; use APP\mail\mailables\IssuePublishedNotify; use APP\notification\Notification; use APP\notification\NotificationManager; use Illuminate\Bus\Batchable; use Illuminate\Support\Collection; use Illuminate\Support\Facades\Mail; use PKP\context\Context; use PKP\emailTemplate\EmailTemplate; use PKP\jobs\BaseJob; use PKP\user\User; class IssuePublishedNotifyUsers extends BaseJob { use Batchable; protected Collection $recipientIds; protected int $contextId; protected Issue $issue; protected string $locale; // The sender of the email protected ?User $sender; public function __construct( Collection $recipientIds, int $contextId, Issue $issue, string $locale, ?User $sender = null // Leave null to not send an email ) { parent::__construct(); $this->recipientIds = $recipientIds; $this->contextId = $contextId; $this->issue = $issue; $this->locale = $locale; $this->sender = $sender; } public function handle() { $context = Application::getContextDAO()->getById($this->contextId); $template = Repo::emailTemplate()->getByKey($this->contextId, IssuePublishedNotify::getEmailTemplateKey()); foreach ($this->recipientIds as $recipientId) { /** @var int $recipientId */ $recipient = Repo::user()->get($recipientId); if (!$recipient) { continue; } $notificationManager = new NotificationManager(); $notification = $notificationManager->createNotification( null, $recipientId, Notification::NOTIFICATION_TYPE_PUBLISHED_ISSUE, $this->contextId, Application::ASSOC_TYPE_ISSUE, $this->issue->getId() ); if (!$this->sender) { continue; } $mailable = $this->createMailable($context, $this->issue, $recipient, $template, $notification); $mailable->setData($this->locale); Mail::send($mailable); } } /** * Creates new issue published notification email */ protected function createMailable( Context $context, Issue $issue, User $recipient, EmailTemplate $template, Notification $notification ): IssuePublishedNotify { $mailable = new IssuePublishedNotify($context, $issue); $mailable ->recipients([$recipient]) ->sender($this->sender) ->body($template->getLocalizedData('body', $this->locale)) ->subject($template->getLocalizedData('subject', $this->locale)) ->allowUnsubscribe($notification); return $mailable; } }