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; }