Files
OSJ/lib/pkp/classes/mail/variables/ReviewAssignmentEmailVariable.php
T
CHIEFSOFT\ameye df3a033196 first commit
2024-06-08 17:09:23 -04:00

137 lines
4.9 KiB
PHP

<?php
/**
* @file classes/mail/variables/ReviewAssignmentEmailVariable.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 ReviewAssignmentEmailVariable
*
* @ingroup mail_variables
*
* @brief Represents email template variables that are associated with a review assignment
*/
namespace PKP\mail\variables;
use PKP\context\Context;
use PKP\core\PKPApplication;
use PKP\core\PKPString;
use PKP\mail\Mailable;
use PKP\submission\reviewAssignment\ReviewAssignment;
class ReviewAssignmentEmailVariable extends Variable
{
public const RESPONSE_DUE_DATE = 'responseDueDate';
public const REVIEW_ASSIGNED_DATE = 'reviewAssignedDate';
public const REVIEW_ASSIGNMENT_URL = 'reviewAssignmentUrl';
public const REVIEW_DUE_DATE = 'reviewDueDate';
public const REVIEW_METHOD = 'reviewMethod';
public const REVIEW_RECOMMENDATION = 'reviewRecommendation';
public const REVIEW_ROUND = 'reviewRound';
public const REVIEWER_NAME = 'reviewerName';
protected ReviewAssignment $reviewAssignment;
public function __construct(ReviewAssignment $reviewAssignment, Mailable $mailable)
{
parent::__construct($mailable);
$this->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()]
);
}
}