예제 #1
0
파일: EmailModel.php 프로젝트: Yame-/mautic
 /**
  * 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);
 }
예제 #2
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 = 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();
 }
예제 #3
0
 /**
  * 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();
 }
예제 #4
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 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();
 }
예제 #5
0
파일: AssetModel.php 프로젝트: Yame-/mautic
 /**
  * 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();
 }
예제 #6
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 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();
 }
예제 #7
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 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();
 }
예제 #8
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
  *
  * @return array
  */
 public function getCampaignMetricsLineChartData($unit, \DateTime $dateFrom, \DateTime $dateTo, $dateFormat = null, $filter = array())
 {
     $events = array();
     $chart = new LineChart($unit, $dateFrom, $dateTo, $dateFormat);
     $query = new ChartQuery($this->em->getConnection(), $dateFrom, $dateTo);
     $contacts = $query->fetchTimeData('campaign_leads', 'date_added', $filter);
     $chart->setDataset($this->translator->trans('mautic.campaign.campaign.leads'), $contacts);
     if (isset($filter['campaign_id'])) {
         $rawEvents = $this->getEventRepository()->getCampaignEvents($filter['campaign_id']);
         // Group events by type
         if ($rawEvents) {
             foreach ($rawEvents as $event) {
                 if (isset($events[$event['type']])) {
                     $events[$event['type']][] = $event['id'];
                 } else {
                     $events[$event['type']] = array($event['id']);
                 }
             }
         }
         if ($events) {
             foreach ($events as $type => $eventIds) {
                 $filter['event_id'] = $eventIds;
                 $q = $query->prepareTimeDataQuery('campaign_lead_event_log', 'date_triggered', $filter);
                 $rawData = $q->execute()->fetchAll();
                 if (!empty($rawData)) {
                     $triggers = $query->completeTimeData($rawData);
                     $chart->setDataset($this->translator->trans('mautic.campaign.' . $type), $triggers);
                 }
             }
             unset($filter['event_id']);
         }
     }
     return $chart->render();
 }
예제 #9
0
 /**
  * @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();
 }