Esempio n. 1
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);
     }
 }
Esempio n. 2
0
 /**
  * @param $redirectId
  *
  * @return \Symfony\Component\HttpFoundation\RedirectResponse
  * @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException
  */
 public function redirectAction($redirectId)
 {
     /** @var \Mautic\PageBundle\Model\RedirectModel $redirectModel */
     $redirectModel = $this->getModel('page.redirect');
     $redirect = $redirectModel->getRedirectById($redirectId);
     if (empty($redirect) || !$redirect->isPublished(false)) {
         throw $this->createNotFoundException($this->factory->getTranslator()->trans('mautic.core.url.error.404'));
     }
     $this->getModel('page')->hitPage($redirect, $this->request);
     $url = $redirect->getUrl();
     // Ensure the URL does not have encoded ampersands
     $url = str_replace('&', '&', $url);
     // Get query string
     $query = $this->request->query->all();
     // Unset the clickthrough
     unset($query['ct']);
     // Tak on anything left to the URL
     if (count($query)) {
         $url .= strpos($url, '?') !== false ? '&' : '?';
         $url .= http_build_query($query);
     }
     // Search replace lead fields in the URL
     /** @var \Mautic\LeadBundle\Model\LeadModel $leadModel */
     $leadModel = $this->getModel('lead');
     $lead = $leadModel->getCurrentLead();
     $leadArray = $lead->getProfileFields();
     $url = TokenHelper::findLeadTokens($url, $leadArray, true);
     return $this->redirect($url);
 }
Esempio n. 3
0
 /**
  * @param TokenReplacementEvent $event
  */
 public function onTokenReplacement(TokenReplacementEvent $event)
 {
     /** @var Lead $lead */
     $lead = $event->getLead();
     $content = $event->getContent();
     $clickthrough = $event->getClickthrough();
     if ($content) {
         $tokens = array_merge(TokenHelper::findLeadTokens($content, $lead->getProfileFields()), $this->pageTokenHelper->findPageTokens($content, $clickthrough), $this->assetTokenHelper->findAssetTokens($content, $clickthrough));
         list($content, $trackables) = $this->trackableModel->parseContentForTrackables($content, $tokens, 'sms', $clickthrough['channel'][1]);
         /**
          * @var string
          * @var Trackable $trackable
          */
         foreach ($trackables as $token => $trackable) {
             $tokens[$token] = $this->trackableModel->generateTrackableUrl($trackable, $clickthrough, true);
         }
         $content = str_replace(array_keys($tokens), array_values($tokens), $content);
         $event->setContent($content);
     }
 }
Esempio n. 4
0
 /**
  * @param $string
  * @param $submissionEvent
  */
 private function replacePostSubmitTokens($string, SubmissionEvent $submissionEvent)
 {
     static $tokens = [];
     if (empty($tokens)) {
         $tokens = array_merge($submissionEvent->getTokens(), TokenHelper::findLeadTokens($string, $submissionEvent->getLead()->getProfileFields()));
     }
     return str_replace(array_keys($tokens), array_values($tokens), $string);
 }
Esempio n. 5
0
 /**
  * PreParse the twitter message and replace placeholders with values.
  *
  * @param $tweet
  * @param $lead
  *
  * @return mixed
  */
 protected function parseTweetText($tweet, $lead)
 {
     $tweetHandle = $lead['twitter'];
     $tokens = ['{twitter_handle}' => strpos($tweetHandle, '@') !== false ? $tweetHandle : "@{$tweetHandle}"];
     $tokens = array_merge($tokens, TokenHelper::findLeadTokens($tweet, $lead), $this->pageTokenHelper->findPageTokens($tweet, $this->clickthrough), $this->assetTokenHelper->findAssetTokens($tweet, $this->clickthrough));
     list($tweet, $trackables) = $this->trackableModel->parseContentForTrackables($tweet, $tokens, 'social_twitter', -1);
     /**
      * @var string $token
      * @var Trackable $trackable
      */
     foreach ($trackables as $token => $trackable) {
         $tokens[$token] = $this->trackableModel->generateTrackableUrl($trackable, $this->clickthrough);
     }
     return str_replace(array_keys($tokens), array_values($tokens), $tweet);
 }