reviewAssignment = $reviewAssignment; } /** * @copydoc Variable::descriptions() */ public static function descriptions(): array { return [ self::RESPONSE_DUE_DATE => __('emailTemplate.variable.recipient.responseDueDate'), self::REVIEW_ASSIGNED_DATE => __('emailTemplate.variable.review.assignedDate'), self::REVIEW_ASSIGNMENT_URL => __('emailTemplate.variable.recipient.reviewAssignmentUrl'), self::REVIEW_DUE_DATE => __('emailTemplate.variable.recipient.reviewDueDate'), self::REVIEW_METHOD => __('emailTemplate.variable.review.method'), self::REVIEW_RECOMMENDATION => __('emailTemplate.variable.review.recommendation'), self::REVIEW_ROUND => __('emailTemplate.variable.review.round'), self::REVIEWER_NAME => __('emailTemplate.variable.review.name'), ]; } /** * @copydoc Variable::values() */ public function values(string $locale): array { $context = $this->getContext(); return [ self::RESPONSE_DUE_DATE => $this->formatDate((string) $this->reviewAssignment->getDateResponseDue(), $locale, $context) ?? '{$' . self::RESPONSE_DUE_DATE . '}', self::REVIEW_ASSIGNED_DATE => $this->formatDate((string) $this->reviewAssignment->getDateAssigned(), $locale, $context) ?? '{$' . self::REVIEW_ASSIGNED_DATE . '}', self::REVIEW_ASSIGNMENT_URL => $this->getReviewUrl($context), self::REVIEW_DUE_DATE => $this->formatDate((string) $this->reviewAssignment->getDateDue(), $locale, $context) ?? '{$' . self::REVIEW_DUE_DATE . '}', self::REVIEW_METHOD => $this->getReviewMethod($locale), self::REVIEW_RECOMMENDATION => $this->getRecommendation($locale), self::REVIEW_ROUND => __('common.reviewRoundNumber', ['round' => $this->reviewAssignment->getRound()], $locale), self::REVIEWER_NAME => $this->reviewAssignment->getReviewerFullName(), ]; } protected function formatDate(string $date, string $locale, Context $context): ?string { $time = strtotime($date); if ($time === -1 || $time === false) { return null; } $format = PKPString::convertStrftimeFormat($context->getLocalizedDateFormatShort($locale)); return date($format, $time); } protected function getRecommendation(string $locale): string { $recommendationOptions = ReviewAssignment::getReviewerRecommendationOptions(); return isset($recommendationOptions[$this->reviewAssignment->getRecommendation()]) ? __($recommendationOptions[$this->reviewAssignment->getRecommendation()], [], $locale) : __('common.none', [], $locale); } protected function getReviewMethod(string $locale): string { if (!$this->reviewAssignment->getReviewMethod()) { return ''; } return __( $this->reviewAssignment->getReviewMethodKey(), [], $locale ); } /** * URL of the submission for the assigned reviewer */ protected function getReviewUrl(Context $context): string { $application = PKPApplication::get(); $request = $application->getRequest(); $dispatcher = $application->getDispatcher(); return $dispatcher->url( $request, PKPApplication::ROUTE_PAGE, $context->getData('urlPath'), 'reviewer', 'submission', null, ['submissionId' => $this->reviewAssignment->getSubmissionId()] ); } }