You are here

function mailchimp_get_lists in Mailchimp 7.5

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

Gets MailChimp lists/audiences. Can be filtered by an array of list IDs.

Parameters

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

bool $use_interest_groups: TRUE to load interest groups for the list.

bool $reset: TRUE to reset list cache and load from MailChimp.

bool $exclude_hidden_interest_groups: TRUE to exclude hidden interest groups for the list.

Return value

array An array of MailChimp list objects.

11 calls to mailchimp_get_lists()
MailchimpI18nStringObjectWrapper::build_properties in modules/mailchimp_i18n/mailchimp_i18n.i18n.inc
Get translatable properties.
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_automations_entity_form in modules/mailchimp_automations/includes/mailchimp_automations.admin.inc
Returns a form for a mailchimp_automations_entity.
mailchimp_campaign_campaign_form in modules/mailchimp_campaign/includes/mailchimp_campaign.admin.inc
Returns a form for creating a campaign.

... See full list

File

./mailchimp.module, line 303
Mailchimp module.

Code

function mailchimp_get_lists($list_ids = array(), $use_interest_groups = TRUE, $reset = FALSE, $exclude_hidden_interest_groups = TRUE) {
  $cid = 'lists';
  if (module_exists('domain')) {
    $current_domain = domain_get_domain();
    $cid .= ':' . $current_domain['machine_name'];
  }
  $cache = $reset ? NULL : cache_get($cid, 'cache_mailchimp');

  // Return cached lists:
  if ($cache) {
    $lists = $cache->data;
  }
  else {
    $lists = array();
    try {

      /* @var \Mailchimp\MailchimpLists $mc_lists */
      $mc_lists = mailchimp_get_api_object('MailchimpLists');
      if (!$mc_lists) {
        throw new MailchimpException('Cannot get lists without MailChimp API. Check API key has been entered.');
      }
      $result = $mc_lists
        ->getLists(array(
        'count' => 500,
      ));
      if ($result->total_items > 0) {
        foreach ($result->lists as $list) {

          // Add interest categories to the list.
          $list->intgroups = mailchimp_get_interest_categories($list->id, $exclude_hidden_interest_groups, $reset);
          $lists[$list->id] = $list;

          // Add mergefields to the list.
          $mergefields = $mc_lists
            ->getMergeFields($list->id, array(
            'count' => 500,
          ));
          if ($mergefields->total_items > 0) {
            $lists[$list->id]->mergevars = $mergefields->merge_fields;
          }
        }
      }
      uasort($lists, '_mailchimp_list_cmp');
      cache_set($cid, $lists, 'cache_mailchimp', CACHE_PERMANENT);
    } 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;
  }
}