/** * Get pie chart data of ignored vs opened emails * * @param string $dateFrom * @param string $dateTo * @param array $filters * @param boolean $canViewOthers * * @return array */ public function getIgnoredVsReadPieChartData($dateFrom, $dateTo, $filters = [], $canViewOthers = true) { $chart = new PieChart(); $query = new ChartQuery($this->em->getConnection(), $dateFrom, $dateTo); $readFilters = $filters; $readFilters['is_read'] = true; $failedFilters = $filters; $failedFilters['is_failed'] = true; $sentQ = $query->getCountQuery('email_stats', 'id', 'date_sent', $filters); $readQ = $query->getCountQuery('email_stats', 'id', 'date_sent', $readFilters); $failedQ = $query->getCountQuery('email_stats', 'id', 'date_sent', $failedFilters); if (!$canViewOthers) { $this->limitQueryToCreator($sentQ); $this->limitQueryToCreator($readQ); $this->limitQueryToCreator($failedQ); } $sent = $query->fetchCount($sentQ); $read = $query->fetchCount($readQ); $failed = $query->fetchCount($failedQ); $chart->setDataset($this->translator->trans('mautic.email.graph.pie.ignored.read.failed.ignored'), $sent - $read); $chart->setDataset($this->translator->trans('mautic.email.graph.pie.ignored.read.failed.read'), $read); $chart->setDataset($this->translator->trans('mautic.email.graph.pie.ignored.read.failed.failed'), $failed); return $chart->render(); }
/** * Get pie chart data of unique vs repetitive downloads. * Repetitive in this case mean if a lead downloaded any of the assets more than once. * * @param string $dateFrom * @param string $dateTo * @param array $filters * @param bool $canViewOthers * * @return array */ public function getUniqueVsRepetitivePieChartData($dateFrom, $dateTo, $filters = [], $canViewOthers = true) { $chart = new PieChart(); $query = new ChartQuery($this->em->getConnection(), $dateFrom, $dateTo); $allQ = $query->getCountQuery('asset_downloads', 'id', 'date_download', $filters); $uniqueQ = $query->getCountQuery('asset_downloads', 'lead_id', 'date_download', $filters, ['getUnique' => true]); if (!$canViewOthers) { $allQ->join('t', MAUTIC_TABLE_PREFIX . 'assets', 'a', 'a.id = t.asset_id')->andWhere('a.created_by = :userId')->setParameter('userId', $this->userHelper->getUser()->getId()); $uniqueQ->join('t', MAUTIC_TABLE_PREFIX . 'assets', 'a', 'a.id = t.asset_id')->andWhere('a.created_by = :userId')->setParameter('userId', $this->userHelper->getUser()->getId()); } $all = $query->fetchCount($allQ); $unique = $query->fetchCount($uniqueQ); $repetitive = $all - $unique; $chart->setDataset($this->translator->trans('mautic.asset.unique'), $unique); $chart->setDataset($this->translator->trans('mautic.asset.repetitive'), $repetitive); return $chart->render(); }
/** * Get data for pie chart showing new vs returning leads. * Returning leads are even leads who visits 2 different page once. * * @param \DateTime $dateFrom * @param \DateTime $dateTo * @param array $filters * @param bool $canViewOthers * * @return array */ public function getNewVsReturningPieChartData($dateFrom, $dateTo, $filters = [], $canViewOthers = true) { $chart = new PieChart(); $query = new ChartQuery($this->em->getConnection(), $dateFrom, $dateTo); $allQ = $query->getCountQuery('page_hits', 'id', 'date_hit', $filters); $uniqueQ = $query->getCountQuery('page_hits', 'lead_id', 'date_hit', $filters, ['getUnique' => true, 'selectAlso' => ['t.page_id']]); if (!$canViewOthers) { $this->limitQueryToCreator($allQ); $this->limitQueryToCreator($uniqueQ); } $all = $query->fetchCount($allQ); $unique = $query->fetchCount($uniqueQ); $returning = $all - $unique; $chart->setDataset($this->translator->trans('mautic.page.unique'), $unique); $chart->setDataset($this->translator->trans('mautic.page.graph.pie.new.vs.returning.returning'), $returning); return $chart->render(); }
public function getLifeCycleSegmentChartData($unit, \DateTime $dateFrom, \DateTime $dateTo, $dateFormat = null, $filter = array(), $canViewOthers = true, $listName) { $chart = new PieChart(); $query = new ChartQuery($this->em->getConnection(), $dateFrom, $dateTo); if (!$canViewOthers) { $filter['owner_id'] = $this->user->getId(); } if (isset($filter['flag'])) { unset($filter['flag']); } $allLists = $query->getCountQuery('leads', 'id', 'date_added', null); $lists = $query->count('leads', 'id', 'date_added', $filter, null); $all = $query->fetchCount($allLists); $identified = $lists; $chart->setDataset($listName, $identified); if (isset($filter['leadlist_id']['value'])) { $chart->setDataset($this->translator->trans('mautic.lead.lifecycle.graph.pie.all.lists'), $all); } return $chart->render(false); }