You are here

function mailchimp_campaign_stats_page in Mailchimp 7.2

Same name and namespace in other branches
  1. 7.5 modules/mailchimp_campaign/mailchimp_campaign.module \mailchimp_campaign_stats_page()
  2. 7.3 modules/mailchimp_campaign/mailchimp_campaign.module \mailchimp_campaign_stats_page()
  3. 7.4 modules/mailchimp_campaign/mailchimp_campaign.module \mailchimp_campaign_stats_page()

Page callback for a campaign's statistics.

Parameters

MailChimpCampaign $campaign:

Return value

array

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 474

Code

function mailchimp_campaign_stats_page(MailChimpCampaign $campaign) {
  $mcapi = mailchimp_get_api_object();
  $response = $mcapi
    ->campaignStats($campaign->mc_campaign_id);
  if (empty($response)) {
    return t('The campaign stats are unavailable at this time.');
  }

  // tabular summary
  foreach ($response as $key => $stat) {
    if (is_array($stat)) {
      break;
    }
    $rows[] = array(
      drupal_ucfirst(str_replace('_', ' ', $key)),
      $stat,
    );
  }

  // time series chart data
  $settings = array();
  foreach ($response['timeseries'] as $series) {
    $settings['mailchimp_campaign']['stats'][] = array(
      'timestamp' => $series['timestamp'],
      'emails_sent' => isset($series['emails_sent']) ? $series['emails_sent'] : 0,
      'unique_opens' => $series['unique_opens'],
      'recipients_click' => $series['recipients_click'],
    );
  }
  $render = array(
    '#attached' => array(
      'js' => array(
        array(
          'data' => 'https://www.google.com/jsapi',
          'type' => 'external',
        ),
        drupal_get_path('module', 'mailchimp_campaign') . '/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;
}