Exemple #1
0
 /**
  * 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();
 }
Exemple #2
0
 /**
  * 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();
 }
Exemple #3
0
 /**
  * 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();
 }
Exemple #4
0
 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);
 }