/**
  * @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);
 }