Пример #1
0
 /**
  * Set a widget detail when needed.
  *
  * @param WidgetDetailEvent $event
  */
 public function onWidgetDetailGenerate(WidgetDetailEvent $event)
 {
     $this->checkPermissions($event);
     $canViewOthers = $event->hasPermission('email:emails:viewother');
     if ($event->getType() == 'emails.in.time') {
         $widget = $event->getWidget();
         $params = $widget->getParams();
         if (isset($params['flag'])) {
             $params['filter']['flag'] = $params['flag'];
         }
         if (!$event->isCached()) {
             $event->setTemplateData(['chartType' => 'line', 'chartHeight' => $widget->getHeight() - 80, 'chartData' => $this->emailModel->getEmailsLineChartData($params['timeUnit'], $params['dateFrom'], $params['dateTo'], $params['dateFormat'], $params['filter'], $canViewOthers)]);
         }
         $event->setTemplate('MauticCoreBundle:Helper:chart.html.php');
         $event->stopPropagation();
     }
     if ($event->getType() == 'ignored.vs.read.emails') {
         $widget = $event->getWidget();
         $params = $widget->getParams();
         if (!$event->isCached()) {
             $event->setTemplateData(['chartType' => 'pie', 'chartHeight' => $widget->getHeight() - 80, 'chartData' => $this->emailModel->getIgnoredVsReadPieChartData($params['dateFrom'], $params['dateTo'], [], $canViewOthers)]);
         }
         $event->setTemplate('MauticCoreBundle:Helper:chart.html.php');
         $event->stopPropagation();
     }
     if ($event->getType() == 'upcoming.emails') {
         $widget = $event->getWidget();
         $params = $widget->getParams();
         $height = $widget->getHeight();
         $limit = round(($height - 80) / 60);
         $upcomingEmails = $this->emailModel->getUpcomingEmails($limit, $canViewOthers);
         $event->setTemplate('MauticDashboardBundle:Dashboard:upcomingemails.html.php');
         $event->setTemplateData(['upcomingEmails' => $upcomingEmails]);
         $event->stopPropagation();
     }
     if ($event->getType() == 'most.sent.emails') {
         if (!$event->isCached()) {
             $params = $event->getWidget()->getParams();
             if (empty($params['limit'])) {
                 // Count the emails limit from the widget height
                 $limit = round(($event->getWidget()->getHeight() - 80) / 35 - 1);
             } else {
                 $limit = $params['limit'];
             }
             $emails = $this->emailModel->getEmailStatList($limit, $params['dateFrom'], $params['dateTo'], [], ['groupBy' => 'sends', 'canViewOthers' => $canViewOthers]);
             $items = [];
             // Build table rows with links
             if ($emails) {
                 foreach ($emails as &$email) {
                     $emailUrl = $this->router->generate('mautic_email_action', ['objectAction' => 'view', 'objectId' => $email['id']]);
                     $row = [['value' => $email['name'], 'type' => 'link', 'link' => $emailUrl], ['value' => $email['count']]];
                     $items[] = $row;
                 }
             }
             $event->setTemplateData(['headItems' => [$event->getTranslator()->trans('mautic.dashboard.label.title'), $event->getTranslator()->trans('mautic.email.label.sends')], 'bodyItems' => $items, 'raw' => $emails]);
         }
         $event->setTemplate('MauticCoreBundle:Helper:table.html.php');
         $event->stopPropagation();
     }
     if ($event->getType() == 'most.read.emails') {
         if (!$event->isCached()) {
             $params = $event->getWidget()->getParams();
             if (empty($params['limit'])) {
                 // Count the emails limit from the widget height
                 $limit = round(($event->getWidget()->getHeight() - 80) / 35 - 1);
             } else {
                 $limit = $params['limit'];
             }
             $emails = $this->emailModel->getEmailStatList($limit, $params['dateFrom'], $params['dateTo'], [], ['groupBy' => 'reads', 'canViewOthers' => $canViewOthers]);
             $items = [];
             // Build table rows with links
             if ($emails) {
                 foreach ($emails as &$email) {
                     $emailUrl = $this->router->generate('mautic_email_action', ['objectAction' => 'view', 'objectId' => $email['id']]);
                     $row = [['value' => $email['name'], 'type' => 'link', 'link' => $emailUrl], ['value' => $email['count']]];
                     $items[] = $row;
                 }
             }
             $event->setTemplateData(['headItems' => [$event->getTranslator()->trans('mautic.dashboard.label.title'), $event->getTranslator()->trans('mautic.email.label.reads')], 'bodyItems' => $items, 'raw' => $emails]);
         }
         $event->setTemplate('MauticCoreBundle:Helper:table.html.php');
         $event->stopPropagation();
     }
     if ($event->getType() == 'created.emails') {
         if (!$event->isCached()) {
             $params = $event->getWidget()->getParams();
             if (empty($params['limit'])) {
                 // Count the emails limit from the widget height
                 $limit = round(($event->getWidget()->getHeight() - 80) / 35 - 1);
             } else {
                 $limit = $params['limit'];
             }
             $emails = $this->emailModel->getEmailList($limit, $params['dateFrom'], $params['dateTo'], [], ['groupBy' => 'creations', 'canViewOthers' => $canViewOthers]);
             $items = [];
             // Build table rows with links
             if ($emails) {
                 foreach ($emails as &$email) {
                     $emailUrl = $this->router->generate('mautic_email_action', ['objectAction' => 'view', 'objectId' => $email['id']]);
                     $row = [['value' => $email['name'], 'type' => 'link', 'link' => $emailUrl]];
                     $items[] = $row;
                 }
             }
             $event->setTemplateData(['headItems' => [$event->getTranslator()->trans('mautic.dashboard.label.title')], 'bodyItems' => $items, 'raw' => $emails]);
         }
         $event->setTemplate('MauticCoreBundle:Helper:table.html.php');
         $event->stopPropagation();
     }
     if ($event->getType() == 'device.granularity.email') {
         $widget = $event->getWidget();
         $params = $widget->getParams();
         if (!$event->isCached()) {
             $event->setTemplateData(['chartType' => 'pie', 'chartHeight' => $widget->getHeight() - 80, 'chartData' => $this->emailModel->getDeviceGranularityPieChartData($params['dateFrom'], $params['dateTo'], $canViewOthers)]);
         }
         $event->setTemplate('MauticCoreBundle:Helper:chart.html.php');
         $event->stopPropagation();
     }
 }