Ejemplo n.º 1
0
 /**
  * @param      $focus
  * @param bool $preview
  * @param bool $ignoreMinify
  *
  * @return string
  */
 public function generateJavascript($focus, $preview = false, $ignoreMinify = false)
 {
     if ($focus instanceof Focus) {
         $focus = $focus->toArray();
     }
     if (!empty($focus['form'])) {
         $form = $this->formModel->getEntity($focus['form']);
     } else {
         $form = null;
     }
     if ($preview) {
         $content = ['style' => '', 'html' => $this->templating->getTemplating()->render('MauticFocusBundle:Builder:content.html.php', ['focus' => $focus, 'form' => $form, 'preview' => $preview])];
     } else {
         // Generate link if applicable
         $url = '';
         if ($focus['type'] == 'link') {
             $trackable = $this->trackableModel->getTrackableByUrl($focus['properties']['content']['link_url'], 'focus', $focus['id']);
             $url = $this->trackableModel->generateTrackableUrl($trackable, ['channel' => ['focus', $focus['id']]]);
         }
         $content = $this->templating->getTemplating()->render('MauticFocusBundle:Builder:generate.js.php', ['focus' => $focus, 'form' => $form, 'preview' => $preview, 'ignoreMinify' => $ignoreMinify, 'clickUrl' => $url]);
         if (!$ignoreMinify) {
             $content = \JSMin::minify($content);
         }
     }
     return $content;
 }
Ejemplo n.º 2
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);
 }
Ejemplo n.º 3
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);
     }
 }
Ejemplo n.º 4
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);
     }
 }