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