class MandrillReportsController in Mandrill 8
MandrillReports controller.
Hierarchy
- class \Drupal\Core\Controller\ControllerBase implements ContainerInjectionInterface uses LoggerChannelTrait, MessengerTrait, LinkGeneratorTrait, RedirectDestinationTrait, UrlGeneratorTrait, StringTranslationTrait
- class \Drupal\mandrill_reports\Controller\MandrillReportsController
Expanded class hierarchy of MandrillReportsController
File
- modules/
mandrill_reports/ src/ Controller/ MandrillReportsController.php, line 17 - Contains \Drupal\mandrill_reports\Controller\MandrillReportsController.
Namespace
Drupal\mandrill_reports\ControllerView source
class MandrillReportsController extends ControllerBase {
/**
* View Mandrill dashboard report.
*
* @return array
* Renderable array of page content.
*/
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;
}
/**
* View Mandrill account summary report.
*
* @return array
* Renderable array of page content.
*/
public function summary() {
$content = array();
/* @var $reports \Drupal\mandrill_reports\MandrillReportsService */
$reports = \Drupal::service('mandrill_reports.service');
$user = $reports
->getUser();
$content['info_table_desc'] = array(
'#markup' => t('Active API user information.'),
);
// User info table.
$content['info_table'] = array(
'#type' => 'table',
'#header' => array(
t('Attribute'),
t('Value'),
),
'#empty' => 'No account information.',
);
$info = array(
array(
'attr' => t('Username'),
'value' => $user['username'],
),
array(
'attr' => t('Reputation'),
'value' => $user['reputation'],
),
array(
'attr' => t('Hourly quota'),
'value' => $user['hourly_quota'],
),
array(
'attr' => t('Backlog'),
'value' => $user['backlog'],
),
);
$row = 0;
foreach ($info as $item) {
$content['info_table'][$row]['attribute'] = array(
'#markup' => $item['attr'],
);
$content['info_table'][$row]['value'] = array(
'#markup' => $item['value'],
);
$row++;
}
$content['stats_table_desc'] = array(
'#markup' => t('This table contains an aggregate summary of the account\'s sending stats.'),
);
// User stats table.
$content['stats_table'] = array(
'#type' => 'table',
'#header' => array(
t('Range'),
t('Sent'),
t('hard_bounces'),
t('soft_bounces'),
t('Rejects'),
t('Complaints'),
t('Unsubs'),
t('Opens'),
t('unique_opens'),
t('Clicks'),
t('unique_clicks'),
),
'#empty' => 'No account activity yet.',
);
if (!empty($user['stats'])) {
$row = 0;
foreach ($user['stats'] as $key => $stat) {
$content['stats_table'][$row]['range'] = array(
'#markup' => str_replace('_', ' ', $key),
);
$content['stats_table'][$row]['sent'] = array(
'#markup' => $stat['sent'],
);
$content['stats_table'][$row]['hard_bounces'] = array(
'#markup' => $stat['hard_bounces'],
);
$content['stats_table'][$row]['soft_bounces'] = array(
'#markup' => $stat['soft_bounces'],
);
$content['stats_table'][$row]['rejects'] = array(
'#markup' => $stat['rejects'],
);
$content['stats_table'][$row]['complaints'] = array(
'#markup' => $stat['complaints'],
);
$content['stats_table'][$row]['unsubs'] = array(
'#markup' => $stat['unsubs'],
);
$content['stats_table'][$row]['opens'] = array(
'#markup' => $stat['opens'],
);
$content['stats_table'][$row]['unique_opens'] = array(
'#markup' => $stat['unique_opens'],
);
$content['stats_table'][$row]['clicks'] = array(
'#markup' => $stat['clicks'],
);
$content['stats_table'][$row]['unique_clicks'] = array(
'#markup' => $stat['unique_clicks'],
);
$row++;
}
}
return $content;
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
ControllerBase:: |
protected | property | The configuration factory. | |
ControllerBase:: |
protected | property | The current user service. | 1 |
ControllerBase:: |
protected | property | The entity form builder. | |
ControllerBase:: |
protected | property | The entity manager. | |
ControllerBase:: |
protected | property | The entity type manager. | |
ControllerBase:: |
protected | property | The form builder. | 2 |
ControllerBase:: |
protected | property | The key-value storage. | 1 |
ControllerBase:: |
protected | property | The language manager. | 1 |
ControllerBase:: |
protected | property | The module handler. | 2 |
ControllerBase:: |
protected | property | The state service. | |
ControllerBase:: |
protected | function | Returns the requested cache bin. | |
ControllerBase:: |
protected | function | Retrieves a configuration object. | |
ControllerBase:: |
private | function | Returns the service container. | |
ControllerBase:: |
public static | function |
Instantiates a new instance of this class. Overrides ContainerInjectionInterface:: |
40 |
ControllerBase:: |
protected | function | Returns the current user. | 1 |
ControllerBase:: |
protected | function | Retrieves the entity form builder. | |
ControllerBase:: |
protected | function | Retrieves the entity manager service. | |
ControllerBase:: |
protected | function | Retrieves the entity type manager. | |
ControllerBase:: |
protected | function | Returns the form builder service. | 2 |
ControllerBase:: |
protected | function | Returns a key/value storage collection. | 1 |
ControllerBase:: |
protected | function | Returns the language manager service. | 1 |
ControllerBase:: |
protected | function | Returns the module handler. | 2 |
ControllerBase:: |
protected | function |
Returns a redirect response object for the specified route. Overrides UrlGeneratorTrait:: |
|
ControllerBase:: |
protected | function | Returns the state storage service. | |
LinkGeneratorTrait:: |
protected | property | The link generator. | 1 |
LinkGeneratorTrait:: |
protected | function | Returns the link generator. | |
LinkGeneratorTrait:: |
protected | function | Renders a link to a route given a route name and its parameters. | |
LinkGeneratorTrait:: |
public | function | Sets the link generator service. | |
LoggerChannelTrait:: |
protected | property | The logger channel factory service. | |
LoggerChannelTrait:: |
protected | function | Gets the logger for a specific channel. | |
LoggerChannelTrait:: |
public | function | Injects the logger channel factory. | |
MandrillReportsController:: |
public | function | View Mandrill dashboard report. | |
MandrillReportsController:: |
public | function | View Mandrill account summary report. | |
MessengerTrait:: |
protected | property | The messenger. | 29 |
MessengerTrait:: |
public | function | Gets the messenger. | 29 |
MessengerTrait:: |
public | function | Sets the messenger. | |
RedirectDestinationTrait:: |
protected | property | The redirect destination service. | 1 |
RedirectDestinationTrait:: |
protected | function | Prepares a 'destination' URL query parameter for use with \Drupal\Core\Url. | |
RedirectDestinationTrait:: |
protected | function | Returns the redirect destination service. | |
RedirectDestinationTrait:: |
public | function | Sets the redirect destination service. | |
StringTranslationTrait:: |
protected | property | The string translation service. | 1 |
StringTranslationTrait:: |
protected | function | Formats a string containing a count of items. | |
StringTranslationTrait:: |
protected | function | Returns the number of plurals supported by a given language. | |
StringTranslationTrait:: |
protected | function | Gets the string translation service. | |
StringTranslationTrait:: |
public | function | Sets the string translation service to use. | 2 |
StringTranslationTrait:: |
protected | function | Translates a string to the current language or to a given language. | |
UrlGeneratorTrait:: |
protected | property | The url generator. | |
UrlGeneratorTrait:: |
protected | function | Returns the URL generator service. | |
UrlGeneratorTrait:: |
public | function | Sets the URL generator service. | |
UrlGeneratorTrait:: |
protected | function | Generates a URL or path for a specific route based on the given parameters. |