$reviewAssignments */ public function __construct(Context $context, Submission $submission, Decision $decision, array $reviewAssignments) { parent::__construct(array_slice(func_get_args(), 0, -1)); $this->setupRecommendationVariable($decision); $this->setupReviewerCommentsVariable($reviewAssignments, $submission); } public static function getDataDescriptions(): array { $variables = parent::getDataDescriptions(); $variables[static::RECOMMENDATION_VARIABLE] = __('emailTemplate.variable.recommendation'); return self::addReviewerCommentsDescription($variables); } protected function setupRecommendationVariable(Decision $decision) { $decisionType = Repo::decision()->getDecisionType($decision->getData('decision')); if (!$decisionType || !method_exists($decisionType, 'getRecommendationLabel')) { throw new Exception('Tried to get the recommendation from a decision that does not exist'); } $this->addData([ static::RECOMMENDATION_VARIABLE => $decisionType->getRecommendationLabel(), ]); } public function recipients(array $recipients): Mailable { $this->traitRecipients($recipients); // See pkp/pkp-lib#9111 foreach ($this->variables as $key => $variable) { if (get_class($variable) === RecipientEmailVariable::class) { // override including new variable $this->variables[$key] = new class($recipients, $this) extends RecipientEmailVariable { public function values(string $locale): array { $values = parent::values($locale); $values['editors'] = $values[RecipientEmailVariable::RECIPIENT_FULL_NAME]; return $values; } }; break; } } return $this; } }