/** * @param EmailSendEvent $event * * @return array */ public function convertUrlsToTokens(EmailSendEvent $event) { if ($event->isInternalSend()) { // Don't convert for previews, example emails, etc return; } $email = $event->getEmail(); $emailId = $email ? $email->getId() : null; $clickthrough = $event->generateClickthrough(); $trackables = $this->parseContentForUrls($event, $emailId); /** * @var string * @var Trackable $trackable */ foreach ($trackables as $token => $trackable) { $url = $trackable instanceof Trackable ? $this->pageTrackableModel->generateTrackableUrl($trackable, $clickthrough) : $this->pageRedirectModel->generateRedirectUrl($trackable, $clickthrough); $event->addToken($token, $url); } }
/** * @param EmailSendEvent $event * * @return void */ public function onEmailGenerate(EmailSendEvent $event) { $content = $event->getContent(); $plainText = $event->getPlainText(); $clickthrough = $event->shouldAppendClickthrough() ? $event->generateClickthrough() : array(); $this->emailIsInternalSend = $event->isInternalSend(); $this->emailEntity = $event->getEmail(); $tokens = array_merge($this->generatePageTokens($content . $plainText, $clickthrough), $this->generateExternalLinkTokens($content . $plainText, $clickthrough)); $event->addTokens($tokens); }
/** * @param EmailSendEvent $event */ public function onEmailGenerate(EmailSendEvent $event) { $content = $event->getContent(); $plainText = $event->getPlainText(); $clickthrough = $event->shouldAppendClickthrough() ? $event->generateClickthrough() : []; $this->emailIsInternalSend = $event->isInternalSend(); $this->emailEntity = $event->getEmail(); $tokens = $this->tokenHelper->findPageTokens($content . $plainText, $clickthrough); $event->addTokens($tokens); }