[ Mini Kiebo ]
Server: Windows NT DESKTOP-5B8S0D4 6.2 build 9200 (Windows 8 Professional Edition) i586
Path:
D:
/
Backup
/
05122024
/
htdocs
/
jurnal-kesmas
/
lib
/
pkp
/
classes
/
mail
/
variables
/
[
Home
]
File: SubmissionEmailVariable.php
<?php /** * @file classes/mail/variables/SubmissionEmailVariable.php * * Copyright (c) 2014-2021 Simon Fraser University * Copyright (c) 2000-2021 John Willinsky * Distributed under the GNU GPL v3. For full terms see the file docs/COPYING. * * @class SubmissionEmailVariable * * @ingroup mail_variables * * @brief Represents variables associated with a submission that can be assigned to a template */ namespace PKP\mail\variables; use APP\publication\Publication; use APP\submission\Submission; use PKP\author\Author; use PKP\context\Context; use PKP\core\PKPApplication; use PKP\core\PKPString; use PKP\mail\Mailable; abstract class SubmissionEmailVariable extends Variable { public const AUTHOR_SUBMISSION_URL = 'authorSubmissionUrl'; public const AUTHORS = 'authors'; public const AUTHORS_SHORT = 'authorsShort'; public const SUBMISSION_ABSTRACT = 'submissionAbstract'; public const SUBMISSION_ID = 'submissionId'; public const SUBMISSION_PUBLISHED_URL = 'submissionPublishedUrl'; public const SUBMISSION_TITLE = 'submissionTitle'; public const SUBMISSION_URL = 'submissionUrl'; public const SUBMISSION_WIZARD_URL = 'submissionWizardUrl'; protected Submission $submission; protected Publication $currentPublication; public function __construct(Submission $submission, Mailable $mailable) { parent::__construct($mailable); $this->submission = $submission; $this->currentPublication = $this->submission->getCurrentPublication(); } /** * @copydoc Variable::descriptions() */ public static function descriptions(): array { return [ self::AUTHOR_SUBMISSION_URL => __('emailTemplate.variable.submission.authorSubmissionUrl'), self::AUTHORS => __('emailTemplate.variable.submission.authors'), self::AUTHORS_SHORT => __('emailTemplate.variable.submission.authorsShort'), self::SUBMISSION_ABSTRACT => __('emailTemplate.variable.submission.submissionAbstract'), self::SUBMISSION_ID => __('emailTemplate.variable.submission.submissionId'), self::SUBMISSION_PUBLISHED_URL => __('emailTemplate.variable.submission.submissionPublishedUrl'), self::SUBMISSION_TITLE => __('emailTemplate.variable.submission.submissionTitle'), self::SUBMISSION_URL => __('emailTemplate.variable.submission.submissionUrl'), self::SUBMISSION_WIZARD_URL => __('emailTemplate.variable.submission.submissionWizardUrl'), ]; } /** * @copydoc Variable::values() */ public function values(string $locale): array { $context = $this->getContext(); return [ self::AUTHOR_SUBMISSION_URL => $this->getAuthorSubmissionUrl($context), self::AUTHORS => htmlspecialchars($this->getAuthorsFull($locale)), self::AUTHORS_SHORT => htmlspecialchars($this->currentPublication->getShortAuthorString($locale)), self::SUBMISSION_ABSTRACT => PKPString::stripUnsafeHtml($this->currentPublication->getLocalizedData('abstract', $locale)), self::SUBMISSION_ID => (string) $this->submission->getId(), self::SUBMISSION_PUBLISHED_URL => $this->getSubmissionPublishedUrl($this->getContext()), self::SUBMISSION_TITLE => $this->currentPublication->getLocalizedFullTitle($locale, 'html'), self::SUBMISSION_URL => $this->getSubmissionUrl($context), self::SUBMISSION_WIZARD_URL => $this->getSubmissionWizardUrl($context), ]; } /** * List of authors as a string separated by a comma */ protected function getAuthorsFull(string $locale): string { $authors = $this->currentPublication->getData('authors'); $fullNames = array_map(function (Author $author) use ($locale) { return $author->getFullName(true, false, $locale); }, iterator_to_array($authors)); return join(__('common.commaListSeparator'), $fullNames); } /** * URL to the author's submission workflow */ protected function getAuthorSubmissionUrl(Context $context): string { $request = PKPApplication::get()->getRequest(); return $request->getDispatcher()->url( $request, PKPApplication::ROUTE_PAGE, $context->getData('urlPath'), 'authorDashboard', 'submission', [ $this->submission->getId(), ] ); } /** * URL to a current workflow stage of the submission */ protected function getSubmissionUrl(Context $context): string { $application = PKPApplication::get(); $request = $application->getRequest(); $dispatcher = $application->getDispatcher(); return $dispatcher->url( $request, PKPApplication::ROUTE_PAGE, $context->getData('urlPath'), 'workflow', 'access', $this->submission->getId() ); } /** * URL to the submission in the submission wizard */ protected function getSubmissionWizardUrl(Context $context): string { $application = PKPApplication::get(); $request = $application->getRequest(); $dispatcher = $application->getDispatcher(); return $dispatcher->url( $request, PKPApplication::ROUTE_PAGE, $context->getPath(), 'submission', null, null, [ 'id' => $this->submission->getId(), ] ); } /** * URL to the published submission */ abstract protected function getSubmissionPublishedUrl(Context $context): string; }