Пример #1
0
 /**
  * @param EmailSendEvent $event
  */
 public function onEmailGenerate(EmailSendEvent $event)
 {
     $lead = $event->getLead();
     $leadId = $lead !== null ? $lead['id'] : null;
     $email = $event->getEmail();
     $tokens = $this->generateTokensFromContent($event, $leadId, $event->getSource(), $email === null ? null : $email->getId());
     $event->addTokens($tokens);
 }
Пример #2
0
 /**
  * Trigger point actions for email send
  *
  * @param EmailSendEvent $event
  */
 public function onEmailSend(EmailSendEvent $event)
 {
     if ($leadArray = $event->getLead()) {
         $lead = $this->factory->getEntityManager()->getReference('MauticLeadBundle:Lead', $leadArray['id']);
     } else {
         return;
     }
     $this->factory->getModel('point')->triggerAction('email.send', $event->getEmail(), null, $lead);
 }
Пример #3
0
 /**
  * @param EmailSendEvent $event
  */
 public function decodeTokens(EmailSendEvent $event)
 {
     // Find and replace encoded tokens for trackable URL conversion
     $content = $event->getContent();
     $content = preg_replace('/(%7B)(.*?)(%7D)/i', '{$2}', $content, -1, $count);
     $event->setContent($content);
     if ($plainText = $event->getPlainText()) {
         $plainText = preg_replace('/(%7B)(.*?)(%7D)/i', '{$2}', $plainText);
         $event->setPlainText($plainText);
     }
     $lead = $event->getLead();
     $email = $event->getEmail();
     $dynamicContentAsArray = $email instanceof Email ? $email->getDynamicContent() : null;
     if (!empty($dynamicContentAsArray)) {
         $tokenEvent = new TokenReplacementEvent(null, $lead, ['lead' => null, 'dynamicContent' => $dynamicContentAsArray]);
         $this->dispatcher->dispatch(EmailEvents::TOKEN_REPLACEMENT, $tokenEvent);
         $event->addTokens($tokenEvent->getTokens());
     }
 }
Пример #4
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);
 }
Пример #5
0
 /**
  * Trigger point actions for email send
  *
  * @param EmailSendEvent $event
  */
 public function onEmailSend(EmailSendEvent $event)
 {
     $this->factory->getModel('point')->triggerAction('email.send', $event->getEmail());
 }
Пример #6
0
 /**
  * @param EmailSendEvent $event
  *
  * @return void
  */
 public function onEmailGenerate(EmailSendEvent $event)
 {
     $content = $event->getContent();
     $source = $event->getSource();
     $email = $event->getEmail();
     $clickthrough = array();
     if (!$event->isInternalSend()) {
         $clickthrough = array('source' => $source, 'email' => $email != null ? $email->getId() : null, 'stat' => $event->getIdHash());
         $lead = $event->getLead();
         if ($lead !== null) {
             $clickthrough['lead'] = $lead['id'];
         }
     }
     $tokens = $this->generateUrlTokens($content, $clickthrough, $email === null ? 0 : $email->getId(), $email, $event);
     $event->addTokens($tokens);
 }
Пример #7
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);
     }
 }
Пример #8
0
 /**
  * @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));
     }
 }
Пример #9
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);
 }
 /**
  * Search and replace tokens with content
  *
  * @param EmailSendEvent $event
  */
 public function onEmailGenerate(EmailSendEvent $event)
 {
     $active = $this->factory->getParameter('active');
     if (!$active) {
         return;
     }
     // Get content
     $content = $event->getContent();
     $email = $event->getEmail();
     if (empty($email)) {
         return;
     }
     $email_id = $email->getId();
     $content = str_replace('{extendedplugin}', 'world!', $content);
     $utm_campaign = $utm_source = $this->factory->getParameter('utm_source');
     $utm_content = '';
     $utm_medium = $this->factory->getParameter('utm_medium');
     $utm_campaign_type = $this->factory->getParameter('utm_campaign');
     $utm_content_type = $this->factory->getParameter('utm_content');
     $remove_accents = $this->factory->getParameter('remove_accents');
     switch ($utm_campaign_type) {
         case 'name':
             $utm_campaign = $email->getName();
             break;
         case 'subject':
             $utm_campaign = $email->getSubject();
             break;
         case 'category':
             if (is_null($email->getCategory())) {
                 $utm_campaign = $email->getSubject();
             } else {
                 $utm_campaign = $email->getCategory()->getTitle();
             }
             break;
     }
     switch ($utm_content_type) {
         case 'name':
             $utm_content = $email->getName();
             break;
         case 'subject':
             $utm_content = $email->getSubject();
             break;
         case 'category':
             if (is_null($email->getCategory())) {
                 $utm_content = $email->getSubject();
             } else {
                 $utm_content = $email->getCategory()->getTitle();
             }
             break;
     }
     if ($remove_accents) {
         setlocale(LC_CTYPE, 'en_US.UTF8');
         $str_campaign = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $utm_campaign);
         $str_campaign = str_replace(' ', '-', $str_campaign);
         $str_campaign = preg_replace('/\\s+/', '-', $str_campaign);
         $utm_campaign = strtolower($str_campaign);
         $str_content = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $utm_content);
         $str_content = str_replace(' ', '-', $str_content);
         $str_content = preg_replace('/\\s+/', '-', $str_content);
         $utm_content = strtolower($str_content);
     }
     $content = $this->add_analytics_tracking_to_urls($content, $utm_source, $utm_campaign, $utm_content, $utm_medium);
     $content = $this->add_analytics_tracking_to_urls2($content, $utm_source, $utm_campaign, $utm_content, $utm_medium);
     $event->setContent($content);
 }