/** * 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(); } }