You are here

function mailchimp_activity_get_member_activity in Mailchimp 7.3

Same name and namespace in other branches
  1. 7.5 modules/mailchimp_activity/mailchimp_activity.module \mailchimp_activity_get_member_activity()
  2. 7.2 modules/mailchimp_activity/mailchimp_activity.module \mailchimp_activity_get_member_activity()
  3. 7.4 modules/mailchimp_activity/mailchimp_activity.module \mailchimp_activity_get_member_activity()

Get the MailChimp member activity for a given email address and list.

Results are cached in the cache_mailchimp_user bin which is cleared by the MailChimp web hooks system when needed.

Parameters

string $list_id: The MailChimp list to get activity for.

string $email: The MailChimp user email address to get activity for.

bool $reset: Set to TRUE if member activity should not be loaded from cache.

Return value

array Associative array of MailChimp member activity.

1 call to mailchimp_activity_get_member_activity()
mailchimp_activity_get_all_activity in modules/mailchimp_activity/mailchimp_activity.module
Return all activity on all lists for a given email address.

File

modules/mailchimp_activity/mailchimp_activity.module, line 118
Module file for mailchimp_activity.

Code

function mailchimp_activity_get_member_activity($list_id, $email, $reset = FALSE) {
  $cache = $reset ? NULL : cache_get("activity_{$list_id}_{$email}", 'cache_mailchimp');
  $memberactivity = array();

  // Return cached lists:
  if ($cache && isset($cache->data)) {
    $memberactivity = $cache->data;
  }
  else {
    $mcapi = mailchimp_get_api_object();
    $emails = array();
    $emails[] = array(
      'email' => $email,
    );
    try {
      if (!$mcapi) {
        throw new MailchimpException('Cannot get member activity without Mailchimp API. Check API key has been entered.');
      }
      $result = $mcapi->lists
        ->memberActivity($list_id, $emails);
    } catch (Mailchimp_Error $e) {
      drupal_set_message($e
        ->getMessage(), 'error');
      watchdog('mailchimp_campaign', 'An error occurred while getting activity: ' . $e
        ->getMessage(), WATCHDOG_ERROR);
      return NULL;
    }
    if ($result['success_count'] > 0) {
      $memberactivity = reset($result['data']);
      cache_set('activity_' . $list_id . '_' . $email, $memberactivity, 'cache_mailchimp', CACHE_TEMPORARY);
    }
    if ($result['error_count'] > 0) {
      foreach ($result['errors'] as $error) {
        watchdog('mailchimp_activity', 'An error occurred getting activity for email "' . $error['email'] . '": ' . $error['error'], WATCHDOG_ERROR);
      }
    }
  }
  return $memberactivity;
}