public function MandrillReportsController::dashboard in Mandrill 8
View Mandrill dashboard report.
Return value
array Renderable array of page content.
1 string reference to 'MandrillReportsController::dashboard'
- mandrill_reports.routing.yml in modules/
mandrill_reports/ mandrill_reports.routing.yml - modules/mandrill_reports/mandrill_reports.routing.yml
File
- modules/
mandrill_reports/ src/ Controller/ MandrillReportsController.php, line 25 - Contains \Drupal\mandrill_reports\Controller\MandrillReportsController.
Class
- MandrillReportsController
- MandrillReports controller.
Namespace
Drupal\mandrill_reports\ControllerCode
public function dashboard() {
$content = array();
/* @var $reports \Drupal\mandrill_reports\MandrillReportsService */
$reports = \Drupal::service('mandrill_reports.service');
$data = array();
$data['user'] = $reports
->getUser();
$data['all_time_series'] = $reports
->getTagsAllTimeSeries();
$data['urls'] = $reports
->getUrls();
$settings = array();
// All time series chart data.
foreach ($data['all_time_series'] as $series) {
$settings['mandrill_reports']['volume'][] = array(
'date' => $series['time'],
'sent' => $series['sent'],
'bounced' => $series['hard_bounces'] + $series['soft_bounces'],
'rejected' => $series['rejects'],
);
$settings['mandrill_reports']['engagement'][] = array(
'date' => $series['time'],
'open_rate' => $series['sent'] == 0 ? 0 : $series['unique_opens'] / $series['sent'],
'click_rate' => $series['sent'] == 0 ? 0 : $series['unique_clicks'] / $series['sent'],
);
}
$content['info'] = array(
'#markup' => t('The following reports are based on Mandrill data from the last 30 days. For more comprehensive data, please visit your %dashboard. %cache to ensure the data is current.', array(
'%dashboard' => Link::fromTextAndUrl(t('Mandrill Dashboard'), Url::fromUri('https://mandrillapp.com/'))
->toString(),
'%cache' => Link::fromTextAndUrl(t('Clear your cache'), Url::fromRoute('system.performance_settings'))
->toString(),
)),
);
$content['volume'] = array(
'#prefix' => '<h2>' . t('Sending Volume') . '</h2>',
'#markup' => '<div id="mandrill-volume-chart"></div>',
);
$content['engagement'] = array(
'#prefix' => '<h2>' . t('Average Open and Click Rate') . '</h2>',
'#markup' => '<div id="mandrill-engage-chart"></div>',
);
// URL tracking table.
$content['urls_table'] = array(
'#type' => 'table',
'#header' => array(
t('URL'),
t('Delivered'),
t('Unique Clicks'),
t('Total Clicks'),
),
'#empty' => 'No activity yet.',
'#prefix' => '<h2>' . t('Tracked URLs') . '</h2>',
);
$row = 0;
foreach ($data['urls'] as $url) {
$percent = number_format($url['unique_clicks'] / $url['sent'], 2) * 100;
$content['urls_table'][$row]['url'] = array(
'#markup' => $url['url'],
);
$content['urls_table'][$row]['sent'] = array(
'#markup' => $url['sent'],
);
$content['urls_table'][$row]['unique_clicks'] = array(
'#markup' => $url['unique_clicks'] . ' (' . $percent . '%)',
);
$content['urls_table'][$row]['clicks'] = array(
'#markup' => $url['clicks'],
);
$row++;
}
$content['#attached']['library'][] = 'mandrill_reports/google-jsapi';
$content['#attached']['library'][] = 'mandrill_reports/reports-stats';
$content['#attached']['drupalSettings'] = $settings;
return $content;
}