You are here

function mailchimp_get_lists in Mailchimp 7.3

Same name and namespace in other branches
  1. 8 mailchimp.module \mailchimp_get_lists()
  2. 7.5 mailchimp.module \mailchimp_get_lists()
  3. 7.2 mailchimp.module \mailchimp_get_lists()
  4. 7.4 mailchimp.module \mailchimp_get_lists()
  5. 2.x mailchimp.module \mailchimp_get_lists()

Return all MailChimp lists for a given key. Lists are stored in the cache.

Parameters

array $list_ids: An array of list IDs to filter the results by.

bool $reset: Force a cache reset.

Return value

array An array of list arrays.

10 calls to mailchimp_get_lists()
MailchimpListsTestCase::testMultiListRetrieval in modules/mailchimp_lists/tests/mailchimp_lists.test
Tests retrieval of a specific set of lists.
MailChimpSignupUIController::overviewTable in modules/mailchimp_signup/includes/mailchimp_signup.ui_controller.inc
Overrides parent::overviewTable().
mailchimp_campaign_campaign_form in modules/mailchimp_campaign/includes/mailchimp_campaign.admin.inc
Returns a form for creating a campaign.
mailchimp_clear_list_cache_form_submit in includes/mailchimp.admin.inc
Handler for lists cache clear form.
mailchimp_get_list in ./mailchimp.module
Wrapper around mailchimp_get_lists() to return a single list.

... See full list

File

./mailchimp.module, line 165
Mailchimp module.

Code

function mailchimp_get_lists($list_ids = array(), $reset = FALSE) {
  $cache = $reset ? NULL : cache_get('lists', 'cache_mailchimp');
  $lists = array();

  // Return cached lists:
  if ($cache) {
    $lists = $cache->data;
  }
  else {
    try {
      $mcapi = mailchimp_get_api_object();
      if (!$mcapi) {
        throw new MailchimpException('Cannot get lists without MailChimp API. Check API key has been entered.');
      }
      $result = $mcapi->lists
        ->getList(array(), 0, 100);
      if ($result['total'] > 0) {
        foreach ($result['data'] as $list) {
          if ($list['stats']['group_count']) {

            // Append interest groups:
            $list['intgroups'] = $mcapi->lists
              ->interestGroupings($list['id']);
          }
          $lists[$list['id']] = $list;
        }

        // Append mergefields:
        $mergevar_settings = $mcapi->lists
          ->mergeVars($list_ids);
        foreach ($mergevar_settings['data'] as $mergevars) {
          $lists[$mergevars['id']]['mergevars'] = $mergevars['merge_vars'];
        }
      }
      uasort($lists, '_mailchimp_list_cmp');
      cache_set('lists', $lists, 'cache_mailchimp', CACHE_TEMPORARY);
    } catch (Exception $e) {
      watchdog('mailchimp', 'An error occurred requesting list information from MailChimp. "%message"', array(
        '%message' => $e
          ->getMessage(),
      ), WATCHDOG_ERROR);
    }
  }

  // Filter by given ids:
  if (!empty($list_ids)) {
    $filtered_lists = array();
    foreach ($list_ids as $id) {
      if (array_key_exists($id, $lists)) {
        $filtered_lists[$id] = $lists[$id];
      }
    }
    return $filtered_lists;
  }
  else {
    return $lists;
  }
}