/** * @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); }
/** * 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); }
/** * @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()); } }
/** * @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); }
/** * Trigger point actions for email send * * @param EmailSendEvent $event */ public function onEmailSend(EmailSendEvent $event) { $this->factory->getModel('point')->triggerAction('email.send', $event->getEmail()); }
/** * @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); }
/** * @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(); $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)); } }
/** * @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); }