Пример #1
0
 public function onEmailGenerate(EmailSendEvent $event)
 {
     $content = $event->getContent();
     $regex = '/' . $this->leadFieldRegex . '/';
     $lead = $event->getLead();
     preg_match_all($regex, $content, $matches);
     if (!empty($matches[1])) {
         $tokenList = array();
         foreach ($matches[1] as $key => $match) {
             $token = $matches[0][$key];
             if (isset($tokenList[$token])) {
                 continue;
             }
             $fallbackCheck = explode('|', $match);
             $fallback = $urlencode = false;
             if (isset($fallbackCheck[1])) {
                 // There is a fallback or to be urlencoded
                 $alias = $fallbackCheck[0];
                 if ($fallbackCheck[1] === 'true') {
                     $urlencode = true;
                     $fallback = '';
                 } else {
                     $fallback = $fallbackCheck[1];
                 }
             } else {
                 $alias = $match;
             }
             $value = !empty($lead[$alias]) ? $lead[$alias] : $fallback;
             $tokenList[$token] = $urlencode ? urlencode($value) : $value;
         }
         $event->addTokens($tokenList);
         unset($tokenList);
     }
 }
Пример #2
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);
 }
Пример #3
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);
 }
Пример #4
0
 /**
  * @param EmailSendEvent $event
  */
 public function onEmailGenerate(EmailSendEvent $event)
 {
     $content = $event->getContent();
     $lead = $event->getLead();
     $tokenList = self::findLeadTokens($content, $lead);
     if (count($tokenList)) {
         $event->addTokens($tokenList);
         unset($tokenList);
     }
 }
Пример #5
0
 /**
  * @param EmailSendEvent $event
  */
 public function onEmailGenerate(EmailSendEvent $event)
 {
     // Combine all possible content to find tokens across them
     $content = $event->getSubject();
     $content .= $event->getContent();
     $content .= $event->getPlainText();
     $lead = $event->getLead();
     $tokenList = TokenHelper::findLeadTokens($content, $lead);
     if (count($tokenList)) {
         $event->addTokens($tokenList);
         unset($tokenList);
     }
 }
Пример #6
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());
     }
 }
Пример #7
0
 /**
  * @param EmailSendEvent $event
  */
 public function onEmailGenerate(EmailSendEvent $event)
 {
     $idHash = $event->getIdHash();
     $lead = $event->getLead();
     $email = $event->getEmail();
     if ($idHash == null) {
         // Generate a bogus idHash to prevent errors for routes that may include it
         $idHash = uniqid();
     }
     $model = $this->factory->getModel('email');
     $unsubscribeText = $this->factory->getParameter('unsubscribe_text');
     if (!$unsubscribeText) {
         $unsubscribeText = $this->translator->trans('mautic.email.unsubscribe.text', array('%link%' => '|URL|'));
     }
     $unsubscribeText = str_replace('|URL|', $model->buildUrl('mautic_email_unsubscribe', array('idHash' => $idHash)), $unsubscribeText);
     $event->addToken('{unsubscribe_text}', $unsubscribeText);
     $event->addToken('{unsubscribe_url}', $model->buildUrl('mautic_email_unsubscribe', array('idHash' => $idHash)));
     $webviewText = $this->factory->getParameter('webview_text');
     if (!$webviewText) {
         $webviewText = $this->translator->trans('mautic.email.webview.text', array('%link%' => '|URL|'));
     }
     $webviewText = str_replace('|URL|', $model->buildUrl('mautic_email_webview', array('idHash' => $idHash)), $webviewText);
     $event->addToken('{webview_text}', $webviewText);
     // Show public email preview if the lead is not known to prevent 404
     if (empty($lead['id']) && $email) {
         $event->addToken('{webview_url}', $model->buildUrl('mautic_email_preview', array('objectId' => $email->getId())));
     } else {
         $event->addToken('{webview_url}', $model->buildUrl('mautic_email_webview', array('idHash' => $idHash)));
     }
     $signatureText = $this->factory->getParameter('default_signature_text');
     $fromName = $this->factory->getParameter('mailer_from_name');
     if (!empty($lead['owner_id'])) {
         $owner = $this->factory->getModel('lead')->getRepository()->getLeadOwner($lead['owner_id']);
         if ($owner && !empty($owner['signature'])) {
             $fromName = $owner['first_name'] . ' ' . $owner['last_name'];
             $signatureText = $owner['signature'];
         }
     }
     $signatureText = str_replace('|FROM_NAME|', $fromName, nl2br($signatureText));
     $event->addToken('{signature}', $signatureText);
     $event->addToken('{subject}', $event->getSubject());
 }
Пример #8
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);
 }
Пример #9
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));
     }
 }