function mailchimp_campaign_stats_page in Mailchimp 7.4
Same name and namespace in other branches
- 7.5 modules/mailchimp_campaign/mailchimp_campaign.module \mailchimp_campaign_stats_page()
- 7.2 modules/mailchimp_campaign/mailchimp_campaign.module \mailchimp_campaign_stats_page()
- 7.3 modules/mailchimp_campaign/mailchimp_campaign.module \mailchimp_campaign_stats_page()
Page callback for a campaign's statistics.
Parameters
MailChimpCampaign $campaign: The Mailchimp campaign instance.
Return value
array A renderable array for the campaign stats page.
1 string reference to 'mailchimp_campaign_stats_page'
- mailchimp_campaign_menu in modules/
mailchimp_campaign/ mailchimp_campaign.module - Implements hook_menu().
File
- modules/
mailchimp_campaign/ mailchimp_campaign.module, line 760 - Module file for mailchimp_campaign.
Code
function mailchimp_campaign_stats_page(MailChimpCampaign $campaign) {
/* @var \Mailchimp\MailchimpReports $mc_reports */
$mc_reports = mailchimp_get_api_object('MailchimpReports');
$result = NULL;
try {
if (!$mc_reports) {
throw new MailchimpException('Cannot get campaign stats without Mailchimp API. Check API key has been entered.');
}
$result = $mc_reports
->getCampaignSummary($campaign->mc_campaign_id);
} catch (Exception $e) {
drupal_set_message($e
->getMessage(), 'error');
watchdog('mailchimp_campaign', 'An error occurred getting report data from Mailchimp: %message', array(
'%message' => $e
->getMessage(),
), WATCHDOG_ERROR);
return NULL;
}
// Tabular summary:
$rows = array(
array(
t('Emails sent'),
$result->emails_sent,
),
array(
t('Abuse reports'),
$result->abuse_reports,
),
array(
t('Unsubscribed'),
$result->unsubscribed,
),
);
$stat_groups = array(
'bounces',
'forwards',
'opens',
'clicks',
'facebook_likes',
'list_stats',
);
foreach ($stat_groups as $group) {
$rows[] = array(
'data' => array(
array(
'data' => '<strong>' . drupal_ucfirst(str_replace('_', ' ', $group)) . '</strong>',
'colspan' => 2,
),
),
);
foreach ($result->{$group} as $key => $stat) {
$rows[] = array(
$key,
drupal_ucfirst(str_replace('_', ' ', $stat)),
);
}
}
// Time series chart data:
$settings = array();
foreach ($result->timeseries as $series) {
$settings['mailchimp_campaign']['stats'][] = array(
'timestamp' => $series->timestamp,
'emails_sent' => $series->emails_sent,
'unique_opens' => $series->unique_opens,
'recipients_click' => $series->recipients_clicks,
);
}
$render = array(
'#attached' => array(
'js' => array(
array(
'data' => 'https://www.google.com/jsapi',
'type' => 'external',
),
drupal_get_path('module', 'mailchimp_campaign') . '/js/mailchimp_campaign.js',
array(
'data' => $settings,
'type' => 'setting',
),
),
),
'charts' => array(
'#prefix' => '<h2>' . t('Hourly stats for the first 24 hours of the campaign') . '</h2>',
'#markup' => '<div id="mailchimp-campaign-chart"></div>',
),
'overview' => array(
'#prefix' => '<h2>' . t('Other campaign metrics') . '</h2>',
'#theme' => 'table',
'#rows' => $rows,
'#header' => array(
t('Key'),
t('Value'),
),
),
);
return $render;
}