/** * Get line chart data of submissions * * @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 getSubmissionsLineChartData($unit, \DateTime $dateFrom, \DateTime $dateTo, $dateFormat = null, $filter = array(), $canViewOthers = true) { $chart = new LineChart($unit, $dateFrom, $dateTo, $dateFormat); $query = $chart->getChartQuery($this->factory->getEntityManager()->getConnection()); $q = $query->prepareTimeDataQuery('form_submissions', 'date_submitted', $filter); if (!$canViewOthers) { $q->join('t', MAUTIC_TABLE_PREFIX . 'forms', 'f', 'f.id = t.form_id')->andWhere('f.created_by = :userId')->setParameter('userId', $this->factory->getUser()->getId()); } $data = $query->loadAndBuildTimeData($q); $chart->setDataset($this->factory->getTranslator()->trans('mautic.form.submission.count'), $data); return $chart->render(); }
/** * Get line chart data of campaign events * * @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 getEventLineChartData($unit, \DateTime $dateFrom, \DateTime $dateTo, $dateFormat = null, $filter = array(), $canViewOthers = true) { $chart = new LineChart($unit, $dateFrom, $dateTo, $dateFormat); $query = $chart->getChartQuery($this->em->getConnection()); $q = $query->prepareTimeDataQuery('campaign_lead_event_log', 'date_triggered', $filter); if (!$canViewOthers) { $q->join('t', MAUTIC_TABLE_PREFIX . 'campaigns', 'c', 'c.id = c.campaign_id')->andWhere('c.created_by = :userId')->setParameter('userId', $this->factory->getUser()->getId()); } $data = $query->loadAndBuildTimeData($q); $chart->setDataset($this->factory->getTranslator()->trans('mautic.campaign.triggered.events'), $data); return $chart->render(); }
/** * Get bar 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 * @param boolean $canViewOthers * * @return array */ public function getLeadsLineChartData($unit, $dateFrom, $dateTo, $dateFormat = null, $filter = array(), $canViewOthers = true) { $flag = null; $topLists = null; $allLeadsT = $this->factory->getTranslator()->trans('mautic.lead.all.leads'); $identifiedT = $this->factory->getTranslator()->trans('mautic.lead.identified'); $anonymousT = $this->factory->getTranslator()->trans('mautic.lead.lead.anonymous'); if (isset($filter['flag'])) { $flag = $filter['flag']; unset($filter['flag']); } if (!$canViewOthers) { $filter['owner_id'] = $this->factory->getUser()->getId(); } $chart = new LineChart($unit, $dateFrom, $dateTo, $dateFormat); $query = $chart->getChartQuery($this->em->getConnection()); $anonymousFilter = $filter; $anonymousFilter['date_identified'] = array('expression' => 'isNull'); $identifiedFilter = $filter; $identifiedFilter['date_identified'] = array('expression' => 'isNotNull'); if ($flag == 'top') { $topLists = $this->factory->getModel('lead.list')->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->factory->getModel('lead.list')->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 emails sent and read * * @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 getEmailsLineChartData($unit, \DateTime $dateFrom, \DateTime $dateTo, $dateFormat = null, $filter = array(), $canViewOthers = true) { $flag = null; if (isset($filter['flag'])) { $flag = $filter['flag']; unset($filter['flag']); } $chart = new LineChart($unit, $dateFrom, $dateTo, $dateFormat); $query = $chart->getChartQuery($this->em->getConnection()); if ($flag == 'sent_and_opened_and_failed' || $flag == 'sent_and_opened' || !$flag) { $q = $query->prepareTimeDataQuery('email_stats', 'date_sent', $filter); if (!$canViewOthers) { $this->limitQueryToCreator($q); } $data = $query->loadAndBuildTimeData($q); $chart->setDataset($this->factory->getTranslator()->trans('mautic.email.sent.emails'), $data); } if ($flag == 'sent_and_opened_and_failed' || $flag == 'sent_and_opened' || $flag == 'opened') { $q = $query->prepareTimeDataQuery('email_stats', 'date_read', $filter); if (!$canViewOthers) { $this->limitQueryToCreator($q); } $data = $query->loadAndBuildTimeData($q); $chart->setDataset($this->factory->getTranslator()->trans('mautic.email.read.emails'), $data); } if ($flag == 'sent_and_opened_and_failed' || $flag == 'failed') { $q = $query->prepareTimeDataQuery('email_stats', 'date_sent', $filter); if (!$canViewOthers) { $this->limitQueryToCreator($q); } $q->andWhere($q->expr()->eq('t.is_failed', ':true'))->setParameter('true', true, 'boolean'); $data = $query->loadAndBuildTimeData($q); $chart->setDataset($this->factory->getTranslator()->trans('mautic.email.failed.emails'), $data); } return $chart->render(); }
/** * Get line chart data of points * * @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 getPointLineChartData($unit, \DateTime $dateFrom, \DateTime $dateTo, $dateFormat = null, $filter = array(), $canViewOthers = true) { $chart = new LineChart($unit, $dateFrom, $dateTo, $dateFormat); $query = $chart->getChartQuery($this->factory->getEntityManager()->getConnection()); $q = $query->prepareTimeDataQuery('lead_points_change_log', 'date_added', $filter); if (!$canViewOthers) { $q->join('t', MAUTIC_TABLE_PREFIX . 'leads', 'l', 'l.id = t.lead_id')->andWhere('l.owner_id = :userId')->setParameter('userId', $this->factory->getUser()->getId()); } $data = $query->loadAndBuildTimeData($q); $chart->setDataset($this->factory->getTranslator()->trans('mautic.point.changes'), $data); 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 * @param boolean $canViewOthers * * @return array */ public function getHitsLineChartData($unit, \DateTime $dateFrom, \DateTime $dateTo, $dateFormat = null, $filter = array(), $canViewOthers = true) { $flag = null; if (isset($filter['flag'])) { $flag = $filter['flag']; unset($filter['flag']); } $chart = new LineChart($unit, $dateFrom, $dateTo, $dateFormat); $query = $chart->getChartQuery($this->factory->getEntityManager()->getConnection()); if (!$flag || $flag == 'total_and_unique') { $q = $query->prepareTimeDataQuery('page_hits', 'date_hit', $filter); if (!$canViewOthers) { $this->limitQueryToCreator($q); } $data = $query->loadAndBuildTimeData($q); $chart->setDataset($this->factory->getTranslator()->trans('mautic.page.show.total.visits'), $data); } if ($flag == 'unique' || $flag == 'total_and_unique') { $filter['groupBy'] = 'lead_id'; $q = $query->prepareTimeDataQuery('page_hits', 'date_hit', $filter); if (!$canViewOthers) { $this->limitQueryToCreator($q); } $data = $query->loadAndBuildTimeData($q); $chart->setDataset($this->factory->getTranslator()->trans('mautic.page.show.unique.visits'), $data); unset($filter['groupBy']); } return $chart->render(); }