You are here

function mailchimp_get_list in Mailchimp 7.4

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

Gets a single Mailchimp list by ID.

Parameters

string $list_id: The unique ID of the list provided by Mailchimp.

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

object A Mailchimp list object.

9 calls to mailchimp_get_list()
MailChimpCampaignController::attachLoad in modules/mailchimp_campaign/includes/mailchimp_campaign.controller.inc
Implement in order to attach Mailchimp data to campaign entities.
MailchimpListsTestCase::testGetList in modules/mailchimp_lists/tests/mailchimp_lists.test
Tests retrieval of a specific list.
mailchimp_lists_field_formatter_view in modules/mailchimp_lists/includes/mailchimp_lists.field.inc
Implements hook_field_formatter_view().
mailchimp_lists_field_get in modules/mailchimp_lists/includes/mailchimp_lists.field.inc
Entity field data callback for Mailchimp subscription fields.
mailchimp_lists_field_widget_form in modules/mailchimp_lists/includes/mailchimp_lists.field.inc
Implements hook_field_widget_form().

... See full list

File

./mailchimp.module, line 239
Mailchimp module.

Code

function mailchimp_get_list($list_id, $use_interest_groups = TRUE, $reset = FALSE) {
  $cache = $reset ? NULL : cache_get('list-' . $list_id, 'cache_mailchimp');
  if (!empty($cache)) {

    // Use cached list only if interest group requirement is met.
    if (!$use_interest_groups || $use_interest_groups && isset($cache->data->intgroups)) {
      return $cache->data;
    }
  }
  $list = NULL;
  try {

    /* @var \Mailchimp\MailchimpLists $mc_lists */
    $mc_lists = mailchimp_get_api_object('MailchimpLists');
    if (!$mc_lists) {
      throw new MailchimpException('Cannot get list without Mailchimp API. Check API key has been entered.');
    }
    $list = $mc_lists
      ->getList($list_id);
    if (!empty($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;
          }
        }
      }

      // Add mergefields to the list.
      $mergefields = $mc_lists
        ->getMergeFields($list->id, array(
        'count' => 500,
      ));
      if ($mergefields->total_items > 0) {
        $list->mergevars = $mergefields->merge_fields;
      }
    }
    cache_set('list-' . $list_id, $list, 'cache_mailchimp', CACHE_PERMANENT);
  } catch (Exception $e) {
    watchdog('mailchimp', 'An error occurred requesting list information from Mailchimp. "%message"', array(
      '%message' => $e
        ->getMessage(),
    ), WATCHDOG_ERROR);
  }
  return $list;
}