/** * Compile events for the lead timeline * * @param LeadTimelineEvent $event */ public function onTimelineGenerate(LeadTimelineEvent $event) { // Set available event types $eventTypeKey = 'campaign.event'; $eventTypeName = $this->translator->trans('mautic.campaign.triggered'); $event->addEventType($eventTypeKey, $eventTypeName); // Decide if those events are filtered if (!$event->isApplicable($eventTypeKey)) { return; } $lead = $event->getLead(); /** @var \Mautic\CampaignBundle\Entity\LeadEventLogRepository $logRepository */ $logRepository = $this->em->getRepository('MauticCampaignBundle:LeadEventLog'); $logs = $logRepository->getLeadLogs($lead->getId(), $event->getQueryOptions()); $eventSettings = $this->campaignModel->getEvents(); // Add total number to counter $event->addToCounter($eventTypeKey, $logs); if (!$event->isEngagementCount()) { foreach ($logs['results'] as $log) { // Hide this from the time line all together if (!empty($log['metadata']['failed'])) { $event->subtractFromCounter($eventTypeKey); continue; } $template = !empty($eventSettings['action'][$log['type']]['timelineTemplate']) ? $eventSettings['action'][$log['type']]['timelineTemplate'] : 'MauticCampaignBundle:SubscribedEvents\\Timeline:index.html.php'; $event->addEvent(['event' => $eventTypeKey, 'eventLabel' => ['label' => $log['event_name'] . ' / ' . $log['campaign_name'], 'href' => $this->router->generate('mautic_campaign_action', ['objectAction' => 'view', 'objectId' => $log['campaign_id']])], 'eventType' => $eventTypeName, 'timestamp' => $log['dateTriggered'], 'extra' => ['log' => $log], 'contentTemplate' => $template, 'icon' => 'fa-clock-o']); } } }