You are here

function mailchimp_campaign_stats_page in Mailchimp 7.3

Same name and namespace in other branches
  1. 7.5 modules/mailchimp_campaign/mailchimp_campaign.module \mailchimp_campaign_stats_page()
  2. 7.2 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: 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 742
Module file for mailchimp_campaign.

Code

function mailchimp_campaign_stats_page(MailChimpCampaign $campaign) {
  $mcapi = mailchimp_get_api_object();
  try {
    if (!$mcapi) {
      throw new MailchimpException('Cannot get campaign stats without MailChimp API. Check API key has been entered.');
    }
    $response = $mcapi->reports
      ->summary($campaign->mc_campaign_id);
  } catch (Mailchimp_Error $e) {
    drupal_set_message($e
      ->getMessage(), 'error');
    watchdog('mailchimp_campaign', 'An error occurred getting report data from MailChimp: @msg', array(
      '@msg' => $e
        ->getMessage(),
    ), WATCHDOG_ERROR);
  }
  if (empty($response)) {
    return t('The campaign stats are unavailable at this time.');
  }

  // Tabular summary:
  $rows = array();
  foreach ($response as $key => $stat) {
    if (is_array($stat)) {
      break;
    }
    $rows[] = array(
      $key,
      drupal_ucfirst(str_replace('_', ' ', $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') . '/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;
}