$values * @return array{subject: string, html: string} */ public function render(MailCampaign $campaign, array $values): array { $subject = MailPlaceholders::fill((string) $campaign->subject, $values, escapeHtml: false); $content = MailPlaceholders::fill((string) $campaign->message, $values); return [ 'subject' => $subject, 'html' => $campaign->template_id ? $content : Template::renderWithLayout($subject, $content), ]; } /** * @return array */ public function recipientValues(MailCampaign $campaign, ?Customer $customer, string $email): array { return [...MailGlobals::values(), ...MailPlaceholders::recipientValues($customer, $email), ...$this->adminValues($campaign)]; } /** * @return array */ public function sampleValues(MailCampaign $campaign): array { $samples = array_map(fn (string $key) => "[{$key}]", array_combine( array_keys(MailPlaceholders::RECIPIENT_FIELDS), array_keys(MailPlaceholders::RECIPIENT_FIELDS), )); return [...MailGlobals::values(), ...$samples, ...$this->adminValues($campaign), ...RenewalCampaign::sampleValues($campaign)]; } private function adminValues(MailCampaign $campaign): array { return array_filter($campaign->variables ?? [], fn ($value) => $value !== null && $value !== ''); } }