You are here

function mailchimp_get_lists in Mailchimp 7.4

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.3 mailchimp.module \mailchimp_get_lists()
  5. 2.x mailchimp.module \mailchimp_get_lists()

Gets Mailchimp lists. 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.

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 311
Mailchimp module.

Code

function mailchimp_get_lists($list_ids = array(), $use_interest_groups = TRUE, $reset = FALSE) {
  $cache = $reset ? NULL : cache_get('lists', '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) {
          if ($use_interest_groups) {

            // Add interest categories to the list.
            $int_category_data = $mc_lists
              ->getInterestCategories($list->id, array(
              'count' => 500,
            ));
            if ($int_category_data->total_items > 0) {
              $list->intgroups = array();
              foreach ($int_category_data->categories as $interest_category) {
                if (isset($interest_category->type) && $interest_category->type == 'hidden') {
                  continue;
                }
                $interest_data = $mc_lists
                  ->getInterests($list->id, $interest_category->id, array(
                  'count' => 500,
                ));
                if ($interest_data->total_items > 0) {
                  $interest_category->interests = $interest_data->interests;
                }
                $list->intgroups[] = $interest_category;
              }
            }
          }
          $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('lists', $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;
  }
}