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