announcement = $announcement; $this->context = $context; } /** * Add description to a new email template variables */ public static function getDataDescriptions(): array { $variables = parent::getDataDescriptions(); $variables[static::$announcementTitle] = __('emailTemplate.variable.announcementTitle'); $variables[static::$announcementSummary] = __('emailTemplate.variable.announcementSummary'); $variables[static::$announcementUrl] = __('emailTemplate.variable.announcementUrl'); return $variables; } /** * Set localized email template variables */ public function setData(?string $locale = null): void { parent::setData($locale); if (is_null($locale)) { $locale = Locale::getLocale(); } $request = Application::get()->getRequest(); $dispatcher = $request->getDispatcher(); $this->viewData = array_merge( $this->viewData, [ static::$announcementTitle => $this->announcement->getData('title', $locale), static::$announcementSummary => $this->announcement->getData('descriptionShort', $locale), static::$announcementUrl => $dispatcher->url( $request, PKPApplication::ROUTE_PAGE, $this->context->getData('urlPath'), 'announcement', 'view', $this->announcement->getId() ), ] ); } /** * Adds a footer with unsubscribe link */ protected function addFooter(string $locale): Mailable { $this->setupUnsubscribeFooter($locale, $this->context); return $this; } }