/** * @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); }
/** * 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); }
/** * @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); } }