コード例 #1
0
 /**
  * @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);
 }
コード例 #2
0
ファイル: BuilderSubscriber.php プロジェクト: spdaly/mautic
 /**
  * @param                $content
  * @param                $clickthrough
  * @param null           $emailId
  * @param Email          $email
  * @param EmailSendEvent $event
  *
  * @return array
  */
 protected function generateUrlTokens($content, $clickthrough, $emailId = null, Email $email = null, EmailSendEvent $event = null)
 {
     $tokens = array();
     // check we have a complete event property before trying to use it's methods
     if ($event !== null) {
         $this->emailIsInternalSend = $event->isInternalSend();
     }
     if ($emailId !== null && isset($this->emailTrackedLinks[$emailId])) {
         // Tokenization is supported and the links have already been parsed so rebuild tokens from saved links
         /** @var \Mautic\PageBundle\Model\RedirectModel $redirectModel */
         $redirectModel = $this->factory->getModel('page.redirect');
         foreach ($this->emailTrackedLinks[$emailId] as $url => $link) {
             $trackedUrl = $redirectModel->generateRedirectUrl($link, $clickthrough);
             if (strpos($url, '{') === 0) {
                 // pageurl, externallink, or trackedlink tokens
                 $tokens[$url] = $trackedUrl;
             } else {
                 $tokens['{trackedlink=' . $link->getRedirectId() . '}'] = $trackedUrl;
             }
         }
     } else {
         $trackedLinks = $persistEntities = array();
         $this->generatePageTokens($content, $clickthrough, $tokens, $persistEntities, $trackedLinks, $emailId, $email);
         $this->generateExternalLinkTokens($content, $clickthrough, $tokens, $persistEntities, $trackedLinks, $emailId, $email);
         if ($emailId !== null && !$this->emailIsInternalSend) {
             $this->generateTrackedLinkTokens($content, $clickthrough, $tokens, $persistEntities, $trackedLinks, $emailId, $email, $event);
         } elseif (!empty($persistEntities)) {
             /** @var \Mautic\PageBundle\Model\RedirectModel $redirectModel */
             $redirectModel = $this->factory->getModel('page.redirect');
             $redirectModel->getRepository()->saveEntities($persistEntities);
         }
     }
     return $tokens;
 }
コード例 #3
0
ファイル: BuilderSubscriber.php プロジェクト: emtudo/mautic
 /**
  * @param EmailSendEvent $event
  *
  * @return void
  */
 public function onEmailGenerate(EmailSendEvent $event)
 {
     $content = $event->getContent();
     $plainText = $event->getPlainText();
     $source = $event->getSource();
     $email = $event->getEmail();
     $clickthrough = array('source' => $source, 'email' => $email != null ? $email->getId() : null, 'stat' => $event->getIdHash());
     $lead = $event->getLead();
     if ($lead !== null) {
         $clickthrough['lead'] = $lead['id'];
     }
     $this->emailIsInternalSend = $event->isInternalSend();
     $this->emailEntity = $event->getEmail();
     // Generate page tokens first so they are available to convert to trackables
     $tokens = array_merge($this->generatePageTokens($content . $plainText, $event->shouldAppendClickthrough() ? $clickthrough : array()), $this->generateExternalLinkTokens($content . $plainText, $clickthrough));
     $event->addTokens($tokens);
     // Convert links to trackables if there is an email entity
     if (!$event->isInternalSend() && null !== $email) {
         $event->addTokens($this->generateEmailTokens($clickthrough, $event));
     }
 }
コード例 #4
0
 /**
  * @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);
     }
 }
コード例 #5
0
 /**
  * @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);
 }