Esempio n. 1
0
 /**
  * Add an event to the container.
  *
  * The data should be an associative array with the following data:
  * 'event'     => string    The event name
  * 'timestamp' => \DateTime The timestamp of the event
  * 'extra'     => array     An optional array of extra data for the event
  *
  * @param array $data Data array for the table
  */
 public function addEvent(array $data)
 {
     if ($this->countOnly) {
         // BC support for old format
         if ($this->groupUnit && $this->chartQuery) {
             $countData = [['date' => $data['timestamp'], 'count' => 1]];
             $count = $this->chartQuery->completeTimeData($countData);
             $this->addToCounter($data['event'], $count);
         } else {
             if (!isset($this->totalEvents[$data['event']])) {
                 $this->totalEvents[$data['event']] = 0;
             }
             ++$this->totalEvents[$data['event']];
         }
     } else {
         if (!isset($this->events[$data['event']])) {
             $this->events[$data['event']] = [];
         }
         $this->events[$data['event']][] = $data;
     }
 }
Esempio n. 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
  *
  * @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();
 }