Пример #1
0
 /**
  * Adds events to the calendar.
  *
  * @param CalendarGeneratorEvent $event
  */
 public function onCalendarGenerate(CalendarGeneratorEvent $event)
 {
     $dates = $event->getDates();
     $query = $this->em->getConnection()->createQueryBuilder();
     $query->select('es.email_id, e.subject AS title, COUNT(es.id) AS quantity, es.date_sent AS start, e.plain_text AS description, cat.color, es.lead_id, l.firstname, l.lastname, l.email')->from(MAUTIC_TABLE_PREFIX . 'email_stats', 'es')->leftJoin('es', MAUTIC_TABLE_PREFIX . 'emails', 'e', 'es.email_id = e.id')->leftJoin('e', MAUTIC_TABLE_PREFIX . 'categories', 'cat', 'cat.id = e.category_id AND cat.bundle=:bundle')->leftJoin('es', MAUTIC_TABLE_PREFIX . 'leads', 'l', 'l.id = es.lead_id')->where($query->expr()->andX($query->expr()->gte('es.date_sent', ':start'), $query->expr()->lte('es.date_sent', ':end')))->groupBy('e.id, es.email_id, e.subject, es.date_sent, e.plain_text, cat.color, es.lead_id, l.firstname, l.lastname, l.email')->setParameter('bundle', 'email')->setParameter('start', $dates['start_date'])->setParameter('end', $dates['end_date'])->setFirstResult(0)->setMaxResults(15);
     $results = $query->execute()->fetchAll();
     // We need to convert the date to a ISO8601 compliant string
     foreach ($results as &$object) {
         $date = new DateTimeHelper($object['start']);
         $object['start'] = $date->toLocalString(\DateTime::ISO8601);
         if ($object['email_id']) {
             $object['url'] = $this->router->generate('mautic_email_action', ['objectAction' => 'view', 'objectId' => $object['email_id']], true);
             $object['attr'] = 'data-toggle="ajax"';
             $object['description'] = html_entity_decode($object['description']);
             $object['title'] = $this->translator->trans('mautic.email.event.sent', ['%email%' => $object['title'], '%x%' => $object['quantity']]);
         } else {
             if ($object['firstname'] || $object['lastname']) {
                 $contactName = trim($object['firstname'] . ' ' . $object['lastname']);
             } elseif ($object['email']) {
                 $contactName = $object['email'];
             } else {
                 $contactName = $this->translator->trans('mautic.lead.lead.anonymous');
             }
             $details = $this->translator->trans('mautic.email.event.sent.direct', ['%contact%' => $contactName]);
             $object['url'] = $this->router->generate('mautic_contact_action', ['objectAction' => 'view', 'objectId' => $object['lead_id']], true);
             $object['attr'] = 'data-toggle="ajax"';
             $object['title'] = $details;
             $object['description'] = $details;
         }
     }
     $event->addEvents($results);
 }
Пример #2
0
 /**
  * Adds events to the calendar
  *
  * @param CalendarGeneratorEvent $event
  *
  * @return void
  */
 public function onCalendarGenerate(CalendarGeneratorEvent $event)
 {
     $dates = $event->getDates();
     $router = $this->factory->getRouter();
     $now = new DateTimeHelper();
     $commonSelect = 'cl.campaign_id, c.name AS campaign_name, l.firstname, l.lastname, ce.type AS event_type, ce.name as event_name, cat.color';
     $eventTypes = array();
     $eventTypes['triggered'] = array('dateName' => 'cl.date_triggered');
     $eventTypes['upcoming'] = array('dateName' => 'cl.trigger_date');
     $query = $this->factory->getEntityManager()->getConnection()->createQueryBuilder();
     $query->from(MAUTIC_TABLE_PREFIX . 'campaign_lead_event_log', 'cl')->leftJoin('cl', MAUTIC_TABLE_PREFIX . 'campaigns', 'c', 'cl.campaign_id = c.id')->leftJoin('cl', MAUTIC_TABLE_PREFIX . 'leads', 'l', 'cl.lead_id = l.id')->leftJoin('cl', MAUTIC_TABLE_PREFIX . 'campaign_events', 'ce', 'cl.event_id = ce.id')->leftJoin('cl', MAUTIC_TABLE_PREFIX . 'categories', 'cat', 'cat.id = c.category_id AND cat.bundle="campaign"')->setParameter('start', $dates['start_date'])->setParameter('end', $dates['end_date'])->setFirstResult(0)->setMaxResults(50);
     foreach ($eventTypes as $eventKey => $eventType) {
         $query->select($commonSelect . ', ' . $eventType['dateName'] . ' AS start')->where($query->expr()->andX($query->expr()->gte($eventType['dateName'], ':start'), $query->expr()->lte($eventType['dateName'], ':end')));
         if ($eventKey == 'upcoming') {
             $query->andWhere($query->expr()->gte($eventType['dateName'], ':now'))->setParameter('now', $now->toUtcString());
         }
         $results = $query->execute()->fetchAll();
         // echo "<pre>";var_dump($results);die("</pre>");
         // We need to convert the date to a ISO8601 compliant string
         foreach ($results as &$object) {
             if ($object['firstname'] || $object['lastname']) {
                 $leadName = $object['firstname'] . ' ' . $object['lastname'];
             } else {
                 $leadName = $this->translator->trans('mautic.lead.lead.anonymous');
             }
             $date = new DateTimeHelper($object['start']);
             $object['start'] = $date->toLocalString(\DateTime::ISO8601);
             $object['url'] = $router->generate('mautic_campaign_action', array('objectAction' => 'view', 'objectId' => $object['campaign_id']), true);
             $object['attr'] = 'data-toggle="ajax"';
             $object['description'] = $this->translator->trans('mautic.campaign.event.' . $eventKey . '.description', array('%campaign%' => $object['campaign_name'], '%lead%' => $leadName));
             $object['title'] = $this->translator->trans('mautic.campaign.event.' . $eventKey, array('%event%' => $object['event_name']));
         }
         $event->addEvents($results);
     }
 }
Пример #3
0
 /**
  * Adds events to the calendar.
  *
  * @param CalendarGeneratorEvent $event
  *
  * @todo   This method is only a model and should be removed when actual data is being populated
  */
 public function onCalendarGenerate(CalendarGeneratorEvent $event)
 {
     $dates = $event->getDates();
     $commonSelect = 'p.title, p.id as page_id, c.color';
     $eventTypes = ['publish.up' => ['dateName' => 'publish_up', 'setter' => 'PublishUp'], 'publish.down' => ['dateName' => 'publish_down', 'setter' => 'PublishDown']];
     $query = $this->em->getConnection()->createQueryBuilder();
     $query->from(MAUTIC_TABLE_PREFIX . 'pages', 'p')->leftJoin('p', MAUTIC_TABLE_PREFIX . 'categories', 'c', 'c.id = p.category_id AND c.bundle=:bundle')->setParameter('bundle', 'page')->setParameter('start', $dates['start_date'])->setParameter('end', $dates['end_date'])->setFirstResult(0)->setMaxResults(50);
     foreach ($eventTypes as $eventKey => $eventType) {
         $query->select($commonSelect . ', ' . $eventType['dateName'] . ' AS start')->where($query->expr()->andX($query->expr()->gte('p.' . $eventType['dateName'], ':start'), $query->expr()->lte('p.' . $eventType['dateName'], ':end')));
         $results = $query->execute()->fetchAll();
         // We need to convert the date to a ISO8601 compliant string
         foreach ($results as &$object) {
             $date = new DateTimeHelper($object['start']);
             $eventTitle = $this->translator->trans('mautic.page.event.' . $eventKey, ['%page%' => $object['title']]);
             $object['start'] = $date->toLocalString(\DateTime::ISO8601);
             $object['setter'] = $eventType['setter'];
             $object['entityId'] = $object['page_id'];
             $object['entityType'] = 'page';
             $object['editable'] = true;
             $object['url'] = $this->router->generate('mautic_calendar_action', ['objectAction' => 'edit', 'source' => 'page', 'objectId' => $object['page_id'], 'startDate' => $date->toLocalString()], true);
             $object['viewUrl'] = $this->router->generate('mautic_page_action', ['objectAction' => 'view', 'objectId' => $object['page_id']], true);
             $object['attr'] = ['data-toggle' => 'ajaxmodal', 'data-target' => '#CalendarEditModal', 'data-header' => $eventTitle];
             $object['description'] = $this->translator->trans('mautic.page.event.' . $eventKey . '.description', ['%page%' => $object['title']]);
             $object['title'] = $eventTitle;
         }
         $event->addEvents($results);
     }
 }
Пример #4
0
 /**
  * Adds events to the calendar
  *
  * @param CalendarGeneratorEvent $event
  *
  * @return void
  */
 public function onCalendarGenerate(CalendarGeneratorEvent $event)
 {
     $dates = $event->getDates();
     $query = $this->factory->getEntityManager()->getConnection()->createQueryBuilder();
     $query->select('fs.referer AS url, f.name AS title, fs.date_submitted AS start')->from(MAUTIC_TABLE_PREFIX . 'form_submissions', 'fs')->leftJoin('fs', MAUTIC_TABLE_PREFIX . 'forms', 'f', 'fs.form_id = f.id')->where($query->expr()->andX($query->expr()->gte('fs.date_submitted', ':start'), $query->expr()->lte('fs.date_submitted', ':end')))->setParameter('start', $dates['start_date'])->setParameter('end', $dates['end_date'])->setFirstResult(0)->setMaxResults(5);
     $results = $query->execute()->fetchAll();
     // We need to convert the date to a ISO8601 compliant string
     foreach ($results as &$object) {
         $date = new DateTimeHelper($object['start']);
         $object['start'] = $date->toLocalString(\DateTime::ISO8601);
         $object['title'] = $this->translator->trans('mautic.form.event.submission', array('%form%' => $object['title']));
     }
     $event->addEvents($results);
 }
Пример #5
0
 /**
  * Adds events to the calendar
  *
  * @param CalendarGeneratorEvent $event
  *
  * @return void
  */
 public function onCalendarGenerate(CalendarGeneratorEvent $event)
 {
     $dates = $event->getDates();
     $router = $this->factory->getRouter();
     $query = $this->factory->getEntityManager()->getConnection()->createQueryBuilder();
     $query->select('es.email_id, e.subject AS title, COUNT(es.id) AS quantity, es.date_sent AS start, e.plain_text AS description, cat.color')->from(MAUTIC_TABLE_PREFIX . 'email_stats', 'es')->leftJoin('es', MAUTIC_TABLE_PREFIX . 'emails', 'e', 'es.email_id = e.id')->leftJoin('e', MAUTIC_TABLE_PREFIX . 'categories', 'cat', 'cat.id = e.category_id AND cat.bundle="email"')->where($query->expr()->andX($query->expr()->gte('es.date_sent', ':start'), $query->expr()->lte('es.date_sent', ':end')))->groupBy('e.id, es.email_id, e.subject, es.date_sent, e.plain_text, cat.color')->setParameter('start', $dates['start_date'])->setParameter('end', $dates['end_date'])->setFirstResult(0)->setMaxResults(15);
     $results = $query->execute()->fetchAll();
     // We need to convert the date to a ISO8601 compliant string
     foreach ($results as &$object) {
         $date = new DateTimeHelper($object['start']);
         $object['start'] = $date->toLocalString(\DateTime::ISO8601);
         $object['url'] = $router->generate('mautic_email_action', array('objectAction' => 'view', 'objectId' => $object['email_id']), true);
         $object['attr'] = 'data-toggle="ajax"';
         $object['description'] = html_entity_decode($object['description']);
         $object['title'] = $this->translator->trans('mautic.email.event.sent', array('%email%' => $object['title'], '%x%' => $object['quantity']));
     }
     $event->addEvents($results);
 }
Пример #6
0
 /**
  * Adds events to the calendar
  *
  * @param CalendarGeneratorEvent $event
  *
  * @return void
  */
 public function onCalendarGenerate(CalendarGeneratorEvent $event)
 {
     $dates = $event->getDates();
     $router = $this->factory->getRouter();
     // Lead Notes
     $query = $this->factory->getEntityManager()->getConnection()->createQueryBuilder();
     $query->select('ln.lead_id, l.firstname, l.lastname, ln.date_time AS start, ln.text AS description, ln.type')->from(MAUTIC_TABLE_PREFIX . 'lead_notes', 'ln')->leftJoin('ln', MAUTIC_TABLE_PREFIX . 'leads', 'l', 'ln.lead_id = l.id')->where($query->expr()->andX($query->expr()->gte('ln.date_time', ':start'), $query->expr()->lte('ln.date_time', ':end')))->setParameter('start', $dates['start_date'])->setParameter('end', $dates['end_date'])->setFirstResult(0)->setMaxResults(100);
     $results = $query->execute()->fetchAll();
     // We need to convert the date to a ISO8601 compliant string
     foreach ($results as &$object) {
         if ($object['firstname'] || $object['lastname']) {
             $leadName = $object['firstname'] . ' ' . $object['lastname'];
         } else {
             $leadName = $this->translator->trans('mautic.lead.lead.anonymous');
         }
         $date = new DateTimeHelper($object['start']);
         $object['start'] = $date->toLocalString(\DateTime::ISO8601);
         $object['url'] = $router->generate('mautic_contact_action', array('objectAction' => 'view', 'objectId' => $object['lead_id']), true);
         $object['attr'] = 'data-toggle="ajax"';
         $object['description'] = strip_tags(html_entity_decode($object['description']));
         switch ($object['type']) {
             default:
             case 'general':
                 $icon = 'fa-file-text';
                 break;
             case 'email':
                 $icon = 'fa-send';
                 break;
             case 'call':
                 $icon = 'fa-phone';
                 break;
             case 'meeting':
                 $icon = 'fa-group';
                 break;
         }
         $object['iconClass'] = 'fa fa-fw ' . $icon;
         $object['title'] = $leadName;
         //$object['title'] .= ' (' . $this->translator->trans('mautic.lead.note.type.' . $object['type']) . ')';
     }
     $event->addEvents($results);
 }
Пример #7
0
 /**
  * Adds created/completed tasks to the calendar
  *
  * @param CalendarGeneratorEvent $event
  */
 public function onCalendarGenerate(CalendarGeneratorEvent $event)
 {
     $em = $this->factory->getEntityManager();
     $tasks = $em->getRepository('CustomCrmBundle:Task')->findAll();
     $router = $this->factory->getRouter();
     $events = array();
     // All tasks
     foreach ($tasks as $task) {
         $events[] = array('start' => (new DateTimeHelper($task->getDateAdded()))->toLocalString(\DateTime::ISO8601), 'url' => $router->generate('mautic_lead_action', array('objectAction' => 'view', 'objectId' => $task->getLead()->getId()), true), 'title' => $this->factory->getTranslator()->trans('ddi.lead_actions.tasks.calendar.created', array('%name%' => $task->getName())), 'iconClass' => 'fa fa-fw fa-tasks');
     }
     // Completed tasks
     foreach ($tasks as $task) {
         if ($task->getIsCompleted()) {
             $events[] = array('start' => (new DateTimeHelper($task->getDateCompleted()))->toLocalString(\DateTime::ISO8601), 'url' => $router->generate('mautic_lead_action', array('objectAction' => 'view', 'objectId' => $task->getLead()->getId()), true), 'title' => $this->factory->getTranslator()->trans('ddi.lead_actions.tasks.calendar.completed', array('%name%' => $task->getName())), 'iconClass' => 'fa fa-fw fa-check');
         }
     }
     foreach ($this->factory->getModel('plugin.customCrm.opportunity')->getEntities() as $opportunity) {
         $events[] = array('start' => (new DateTimeHelper($opportunity->getDateAdded()))->toLocalString(\DateTime::ISO8601), 'url' => $router->generate('mautic_customcrm_opportunity_action', array('objectAction' => 'edit', 'objectId' => $opportunity->getId()), true), 'title' => $opportunity->getValue() . ' (' . $opportunity->getValueType() . ')', 'iconClass' => 'fa fa-fw fa-dollar');
     }
     $event->addEvents($events);
 }