/** * 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 = new ChartQuery($this->em->getConnection(), $dateFrom, $dateTo); if (!$flag || $flag === 'total_and_unique') { $q = $query->prepareTimeDataQuery('dynamic_content_stats', 'date_sent', $filter); if (!$canViewOthers) { $this->limitQueryToCreator($q); } $data = $query->loadAndBuildTimeData($q); $chart->setDataset($this->translator->trans('mautic.dynamicContent.show.total.views'), $data); } if ($flag === 'unique' || $flag === 'total_and_unique') { $q = $query->prepareTimeDataQuery('dynamic_content_stats', 'date_sent', $filter); $q->groupBy('t.lead_id, t.date_sent'); if (!$canViewOthers) { $this->limitQueryToCreator($q); } $data = $query->loadAndBuildTimeData($q); $chart->setDataset($this->translator->trans('mautic.dynamicContent.show.unique.views'), $data); } return $chart->render(); }
/** * 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 bool $canViewOthers * * @return array */ public function getSubmissionsLineChartData($unit, \DateTime $dateFrom, \DateTime $dateTo, $dateFormat = null, $filter = [], $canViewOthers = true) { $chart = new LineChart($unit, $dateFrom, $dateTo, $dateFormat); $query = new ChartQuery($this->em->getConnection(), $dateFrom, $dateTo); $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->userHelper->getUser()->getId()); } $data = $query->loadAndBuildTimeData($q); $chart->setDataset($this->translator->trans('mautic.form.submission.count'), $data); return $chart->render(); }
/** * Modifies the line chart query for the DNC * * @param ChartQuery $q * @param array $filter * @param boolean $reason * @param boolean $canViewOthers */ public function getDncLineChartDataset(ChartQuery &$query, array $filter, $reason, $canViewOthers) { $dncFilter = isset($filter['email_id']) ? ['channel_id' => $filter['email_id']] : []; $q = $query->prepareTimeDataQuery('lead_donotcontact', 'date_added', $dncFilter); $q->andWhere('t.channel = :channel')->setParameter('channel', 'email')->andWhere($q->expr()->eq('t.reason', ':reason'))->setParameter('reason', $reason); if (!$canViewOthers) { $this->limitQueryToCreator($q); } return $data = $query->loadAndBuildTimeData($q); }
/** * Get line chart data of stages. * * @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 bool $canViewOthers * * @return array */ public function getStageLineChartData($unit, \DateTime $dateFrom, \DateTime $dateTo, $dateFormat = null, $filter = [], $canViewOthers = true) { $chart = new LineChart($unit, $dateFrom, $dateTo, $dateFormat); $query = new ChartQuery($this->em->getConnection(), $dateFrom, $dateTo); $q = $query->prepareTimeDataQuery('lead_stages_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.stage.changes'), $data); return $chart->render(); }
/** * Get line chart data of downloads * * @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 getDownloadsLineChartData($unit, \DateTime $dateFrom, \DateTime $dateTo, $dateFormat = null, $filter = array(), $canViewOthers = true) { $chart = new LineChart($unit, $dateFrom, $dateTo, $dateFormat); $query = new ChartQuery($this->em->getConnection(), $dateFrom, $dateTo); $q = $query->prepareTimeDataQuery('asset_downloads', 'date_download', $filter); if (!$canViewOthers) { $q->join('t', MAUTIC_TABLE_PREFIX . 'assets', 'a', 'a.id = t.asset_id')->andWhere('a.created_by = :userId')->setParameter('userId', $this->user->getId()); } $data = $query->loadAndBuildTimeData($q); $chart->setDataset($this->translator->trans('mautic.asset.downloadcount'), $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 bool $canViewOthers * * @return array */ public function getEventLineChartData($unit, \DateTime $dateFrom, \DateTime $dateTo, $dateFormat = null, $filter = [], $canViewOthers = true) { $chart = new LineChart($unit, $dateFrom, $dateTo, $dateFormat); $query = new ChartQuery($this->em->getConnection(), $dateFrom, $dateTo); $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->userHelper->getUser()->getId()); } $data = $query->loadAndBuildTimeData($q); $chart->setDataset($this->translator->trans('mautic.campaign.triggered.events'), $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 bool $canViewOthers * * @return array */ public function getHitsLineChartData($unit, \DateTime $dateFrom, \DateTime $dateTo, $dateFormat = null, $filter = [], $canViewOthers = true) { $flag = null; if (isset($filter['flag'])) { $flag = $filter['flag']; unset($filter['flag']); } $chart = new LineChart($unit, $dateFrom, $dateTo, $dateFormat); $query = new ChartQuery($this->em->getConnection(), $dateFrom, $dateTo); if (!$flag || $flag === 'total_and_unique') { $q = $query->prepareTimeDataQuery('push_notification_stats', 'date_sent', $filter); if (!$canViewOthers) { $this->limitQueryToCreator($q); } $data = $query->loadAndBuildTimeData($q); $chart->setDataset($this->translator->trans('mautic.notification.show.total.sent'), $data); } return $chart->render(); }
/** * @param Focus $focus * @param $unit * @param \DateTime|null $dateFrom * @param \DateTime|null $dateTo * @param null $dateFormat * @param bool $canViewOthers * * @return array */ public function getStats(Focus $focus, $unit, \DateTime $dateFrom = null, \DateTime $dateTo = null, $dateFormat = null, $canViewOthers = true) { $chart = new LineChart($unit, $dateFrom, $dateTo, $dateFormat); $query = new ChartQuery($this->em->getConnection(), $dateFrom, $dateTo, $unit); $q = $query->prepareTimeDataQuery('focus_stats', 'date_added'); if (!$canViewOthers) { $this->limitQueryToCreator($q); } $data = $query->loadAndBuildTimeData($q); $chart->setDataset($this->translator->trans('mautic.focus.graph.views'), $data); if ($focus->getType() != 'notification') { if ($focus->getType() == 'link') { $q = $query->prepareTimeDataQuery('focus_stats', 'date_added', ['type' => Stat::TYPE_CLICK]); if (!$canViewOthers) { $this->limitQueryToCreator($q); } $data = $query->loadAndBuildTimeData($q); $chart->setDataset($this->translator->trans('mautic.focus.graph.clicks'), $data); } else { $q = $query->prepareTimeDataQuery('focus_stats', 'date_added', ['type' => Stat::TYPE_FORM]); if (!$canViewOthers) { $this->limitQueryToCreator($q); } $data = $query->loadAndBuildTimeData($q); $chart->setDataset($this->translator->trans('mautic.focus.graph.submissions'), $data); } } return $chart->render(); }