/** * Get bar chart data of contacts * * @param char $unit {@link php.net/manual/en/function.date.php#refsect1-function.date-parameters} * @param \DateTime $dateFrom * @param \DateTime $dateTo * @param string $dateFormat * @param array $filter * @param boolean $canViewOthers * * @return array */ public function getLeadsLineChartData($unit, $dateFrom, $dateTo, $dateFormat = null, $filter = array(), $canViewOthers = true) { $flag = null; $topLists = null; $allLeadsT = $this->translator->trans('mautic.lead.all.leads'); $identifiedT = $this->translator->trans('mautic.lead.identified'); $anonymousT = $this->translator->trans('mautic.lead.lead.anonymous'); if (isset($filter['flag'])) { $flag = $filter['flag']; unset($filter['flag']); } if (!$canViewOthers) { $filter['owner_id'] = $this->user->getId(); } $chart = new LineChart($unit, $dateFrom, $dateTo, $dateFormat); $query = new ChartQuery($this->em->getConnection(), $dateFrom, $dateTo); $anonymousFilter = $filter; $anonymousFilter['date_identified'] = array('expression' => 'isNull'); $identifiedFilter = $filter; $identifiedFilter['date_identified'] = array('expression' => 'isNotNull'); if ($flag == 'top') { $topLists = $this->leadListModel->getTopLists(6, $dateFrom, $dateTo); if ($topLists) { foreach ($topLists as $list) { $filter['leadlist_id'] = array('value' => $list['id'], 'list_column_name' => 't.id'); $all = $query->fetchTimeData('leads', 'date_added', $filter); $chart->setDataset($list['name'] . ': ' . $allLeadsT, $all); } } } elseif ($flag == 'topIdentifiedVsAnonymous') { $topLists = $this->leadListModel->getTopLists(3, $dateFrom, $dateTo); if ($topLists) { foreach ($topLists as $list) { $anonymousFilter['leadlist_id'] = array('value' => $list['id'], 'list_column_name' => 't.id'); $identifiedFilter['leadlist_id'] = array('value' => $list['id'], 'list_column_name' => 't.id'); $identified = $query->fetchTimeData('leads', 'date_added', $identifiedFilter); $anonymous = $query->fetchTimeData('leads', 'date_added', $anonymousFilter); $chart->setDataset($list['name'] . ': ' . $identifiedT, $identified); $chart->setDataset($list['name'] . ': ' . $anonymousT, $anonymous); } } } elseif ($flag == 'identified') { $identified = $query->fetchTimeData('leads', 'date_added', $identifiedFilter); $chart->setDataset($identifiedT, $identified); } elseif ($flag == 'anonymous') { $anonymous = $query->fetchTimeData('leads', 'date_added', $anonymousFilter); $chart->setDataset($anonymousT, $anonymous); } elseif ($flag == 'identifiedVsAnonymous') { $identified = $query->fetchTimeData('leads', 'date_added', $identifiedFilter); $anonymous = $query->fetchTimeData('leads', 'date_added', $anonymousFilter); $chart->setDataset($identifiedT, $identified); $chart->setDataset($anonymousT, $anonymous); } else { $all = $query->fetchTimeData('leads', 'date_added', $filter); $chart->setDataset($allLeadsT, $all); } return $chart->render(); }
/** * Get line chart data of hits * * @param char $unit {@link php.net/manual/en/function.date.php#refsect1-function.date-parameters} * @param DateTime $dateFrom * @param DateTime $dateTo * @param string $dateFormat * @param array $filter * * @return array */ public function getCampaignMetricsLineChartData($unit, \DateTime $dateFrom, \DateTime $dateTo, $dateFormat = null, $filter = array()) { $events = array(); $chart = new LineChart($unit, $dateFrom, $dateTo, $dateFormat); $query = new ChartQuery($this->em->getConnection(), $dateFrom, $dateTo); $contacts = $query->fetchTimeData('campaign_leads', 'date_added', $filter); $chart->setDataset($this->translator->trans('mautic.campaign.campaign.leads'), $contacts); if (isset($filter['campaign_id'])) { $rawEvents = $this->getEventRepository()->getCampaignEvents($filter['campaign_id']); // Group events by type if ($rawEvents) { foreach ($rawEvents as $event) { if (isset($events[$event['type']])) { $events[$event['type']][] = $event['id']; } else { $events[$event['type']] = array($event['id']); } } } if ($events) { foreach ($events as $type => $eventIds) { $filter['event_id'] = $eventIds; $q = $query->prepareTimeDataQuery('campaign_lead_event_log', 'date_triggered', $filter); $rawData = $q->execute()->fetchAll(); if (!empty($rawData)) { $triggers = $query->completeTimeData($rawData); $chart->setDataset($this->translator->trans('mautic.campaign.' . $type), $triggers); } } unset($filter['event_id']); } } return $chart->render(); }