/**
  * @param            $slot
  * @param Lead|array $lead
  *
  * @return string
  */
 public function getDynamicContentForLead($slot, $lead)
 {
     $response = $this->campaignEventModel->triggerEvent('dwc.decision', $slot, 'dwc.decision.' . $slot);
     $content = '';
     if (is_array($response) && !empty($response['action']['dwc.push_content'])) {
         $content = array_shift($response['action']['dwc.push_content']);
     } else {
         $data = $this->dynamicContentModel->getSlotContentForLead($slot, $lead);
         if (!empty($data)) {
             $content = $data['content'];
             $dwc = $this->dynamicContentModel->getEntity($data['id']);
             if ($dwc instanceof DynamicContent) {
                 // Determine a translation based on contact's preferred locale
                 /** @var DynamicContent $translation */
                 list($ignore, $translation) = $this->dynamicContentModel->getTranslatedEntity($dwc, $lead);
                 if ($translation !== $dwc) {
                     // Use translated version of content
                     $dwc = $translation;
                     $content = $dwc->getContent();
                 }
                 $this->dynamicContentModel->createStatEntry($dwc, $lead, $slot);
                 $tokenEvent = new TokenReplacementEvent($content, $lead, ['slot' => $slot, 'dynamic_content_id' => $dwc->getId()]);
                 $this->dispatcher->dispatch(DynamicContentEvents::TOKEN_REPLACEMENT, $tokenEvent);
                 $content = $tokenEvent->getContent();
             }
         }
     }
     return $content;
 }
Example #2
0
 /**
  * Trigger point actions for asset download.
  *
  * @param AssetLoadEvent $event
  */
 public function onAssetDownload(AssetLoadEvent $event)
 {
     $asset = $event->getRecord()->getAsset();
     if ($asset !== null) {
         $this->campaignEventModel->triggerEvent('asset.download', $asset, 'asset', $asset->getId());
     }
 }
Example #3
0
 /**
  * Trigger campaign event for opening of an email.
  *
  * @param EmailOpenEvent $event
  */
 public function onEmailOpen(EmailOpenEvent $event)
 {
     $email = $event->getEmail();
     if ($email !== null) {
         $this->campaignEventModel->triggerEvent('email.open', $email, 'email', $email->getId());
     }
 }
Example #4
0
 /**
  * Trigger actions for page hits
  *
  * @param PageHitEvent $event
  */
 public function onPageHit(PageHitEvent $event)
 {
     $hit = $event->getHit();
     $channel = 'page';
     $channelId = null;
     if ($redirect = $hit->getRedirect()) {
         $channel = 'page.redirect';
         $channelId = $redirect->getId();
     } elseif ($page = $hit->getPage()) {
         $channelId = $page->getId();
     }
     $this->campaignEventModel->triggerEvent('page.pagehit', $hit, $channel, $channelId);
 }
 /**
  * Set a widget detail when needed.
  *
  * @param WidgetDetailEvent $event
  */
 public function onWidgetDetailGenerate(WidgetDetailEvent $event)
 {
     $this->checkPermissions($event);
     $canViewOthers = $event->hasPermission('campaign:campaigns:viewother');
     if ($event->getType() == 'events.in.time') {
         $widget = $event->getWidget();
         $params = $widget->getParams();
         if (!$event->isCached()) {
             $event->setTemplateData(['chartType' => 'line', 'chartHeight' => $widget->getHeight() - 80, 'chartData' => $this->campaignEventModel->getEventLineChartData($params['timeUnit'], $params['dateFrom'], $params['dateTo'], $params['dateFormat'], $canViewOthers)]);
         }
         $event->setTemplate('MauticCoreBundle:Helper:chart.html.php');
         $event->stopPropagation();
     }
     if ($event->getType() == 'leads.added.in.time') {
         $widget = $event->getWidget();
         $params = $widget->getParams();
         if (!$event->isCached()) {
             $event->setTemplateData(['chartType' => 'line', 'chartHeight' => $widget->getHeight() - 80, 'chartData' => $this->campaignModel->getLeadsAddedLineChartData($params['timeUnit'], $params['dateFrom'], $params['dateTo'], $params['dateFormat'], $canViewOthers)]);
         }
         $event->setTemplate('MauticCoreBundle:Helper:chart.html.php');
         $event->stopPropagation();
     }
 }
Example #6
0
 /**
  * Trigger campaign event for when a form is submitted.
  *
  * @param SubmissionEvent $event
  */
 public function onFormSubmit(SubmissionEvent $event)
 {
     $form = $event->getSubmission()->getForm();
     $this->campaignEventModel->triggerEvent('form.submit', $form, 'form', $form->getId());
 }