Пример #1
0
 /**
  * Get a list of the most submisions per lead
  *
  * @param integer $limit
  * @param string  $dateFrom
  * @param string  $dateTo
  * @param array   $filters
  * @param boolean $canViewOthers
  *
  * @return array
  */
 public function getTopSubmitters($limit = 10, $dateFrom = null, $dateTo = null, $filters = array(), $canViewOthers = true)
 {
     $q = $this->em->getConnection()->createQueryBuilder();
     $q->select('COUNT(DISTINCT t.id) AS submissions, t.lead_id, l.firstname, l.lastname, l.email')->from(MAUTIC_TABLE_PREFIX . 'form_submissions', 't')->join('t', MAUTIC_TABLE_PREFIX . 'leads', 'l', 'l.id = t.lead_id')->orderBy('submissions', 'DESC')->groupBy('t.lead_id, l.firstname, l.lastname, l.email')->setMaxResults($limit);
     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());
     }
     $chartQuery = new ChartQuery($this->em->getConnection(), $dateFrom, $dateTo);
     $chartQuery->applyFilters($q, $filters);
     $chartQuery->applyDateFilters($q, 'date_submitted');
     $results = $q->execute()->fetchAll();
     return $results;
 }
Пример #2
0
 /**
  * Get a list of emails in a date range
  *
  * @param integer   $limit
  * @param \DateTime $dateFrom
  * @param \DateTime $dateTo
  * @param array     $filters
  * @param array     $options
  *
  * @return array
  */
 public function getEmailList($limit = 10, \DateTime $dateFrom = null, \DateTime $dateTo = null, $filters = [], $options = [])
 {
     $q = $this->em->getConnection()->createQueryBuilder();
     $q->select('t.id, t.name, t.date_added, t.date_modified')->from(MAUTIC_TABLE_PREFIX . 'emails', 't')->setMaxResults($limit);
     if (!empty($options['canViewOthers'])) {
         $q->andWhere('t.created_by = :userId')->setParameter('userId', $this->user->getId());
     }
     $chartQuery = new ChartQuery($this->em->getConnection(), $dateFrom, $dateTo);
     $chartQuery->applyFilters($q, $filters);
     $chartQuery->applyDateFilters($q, 'date_added');
     $results = $q->execute()->fetchAll();
     return $results;
 }
Пример #3
0
 /**
  * Get a list of top (by leads added) lists
  *
  * @param integer $limit
  * @param string  $dateFrom
  * @param string  $dateTo
  * @param array   $filters
  *
  * @return array
  */
 public function getTopLists($limit = 10, $dateFrom = null, $dateTo = null, $filters = array())
 {
     $q = $this->em->getConnection()->createQueryBuilder();
     $q->select('COUNT(t.date_added) AS leads, ll.id, ll.name')->from(MAUTIC_TABLE_PREFIX . 'lead_lists_leads', 't')->join('t', MAUTIC_TABLE_PREFIX . 'lead_lists', 'll', 'll.id = t.leadlist_id')->orderBy('leads', 'DESC')->where($q->expr()->eq('ll.is_published', ':published'))->setParameter('published', true)->groupBy('ll.id')->setMaxResults($limit);
     if (!empty($options['canViewOthers'])) {
         $q->andWhere('ll.created_by = :userId')->setParameter('userId', $this->user->getId());
     }
     $chartQuery = new ChartQuery($this->em->getConnection(), $dateFrom, $dateTo);
     $chartQuery->applyFilters($q, $filters);
     $chartQuery->applyDateFilters($q, 'date_added');
     $results = $q->execute()->fetchAll();
     return $results;
 }
Пример #4
0
 /**
  * Get a list of leads in a date range
  *
  * @param integer  $limit
  * @param DateTime $dateFrom
  * @param DateTime $dateTo
  * @param array    $filters
  * @param array    $options
  *
  * @return array
  */
 public function getLeadList($limit = 10, \DateTime $dateFrom = null, \DateTime $dateTo = null, $filters = array(), $options = array())
 {
     if (!empty($options['canViewOthers'])) {
         $filter['owner_id'] = $this->factory->getUser()->getId();
     }
     $q = $this->em->getConnection()->createQueryBuilder();
     $q->select('t.id, t.firstname, t.lastname, t.email, t.date_added, t.date_modified')->from(MAUTIC_TABLE_PREFIX . 'leads', 't')->setMaxResults($limit);
     $chartQuery = new ChartQuery($this->em->getConnection(), $dateFrom, $dateTo);
     $chartQuery->applyFilters($q, $filters);
     $chartQuery->applyDateFilters($q, 'date_added');
     $results = $q->execute()->fetchAll();
     if ($results) {
         foreach ($results as &$result) {
             if ($result['firstname'] || $result['lastname']) {
                 $result['name'] = trim($result['firstname'] . ' ' . $result['lastname']);
             } elseif ($result['email']) {
                 $result['name'] = $result['email'];
             } else {
                 $result['name'] = 'anonymous';
             }
             unset($result['firstname']);
             unset($result['lastname']);
             unset($result['email']);
         }
     }
     return $results;
 }
Пример #5
0
 /**
  * Get a list of pages created in a date range
  *
  * @param integer  $limit
  * @param DateTime $dateFrom
  * @param DateTime $dateTo
  * @param array    $filters
  * @param boolean  $canViewOthers
  *
  * @return array
  */
 public function getPageList($limit = 10, \DateTime $dateFrom = null, \DateTime $dateTo = null, $filters = array(), $canViewOthers = true)
 {
     $q = $this->em->getConnection()->createQueryBuilder();
     $q->select('t.id, t.title AS name, t.date_added, t.date_modified')->from(MAUTIC_TABLE_PREFIX . 'pages', 't')->setMaxResults($limit);
     if (!$canViewOthers) {
         $q->andWhere('t.created_by = :userId')->setParameter('userId', $this->factory->getUser()->getId());
     }
     $chartQuery = new ChartQuery($this->em->getConnection(), $dateFrom, $dateTo);
     $chartQuery->applyFilters($q, $filters);
     $chartQuery->applyDateFilters($q, 'date_added');
     $results = $q->execute()->fetchAll();
     return $results;
 }