function mailchimp_get_mergevars in Mailchimp 7.5
Same name and namespace in other branches
- 8 mailchimp.module \mailchimp_get_mergevars()
- 7.3 mailchimp.module \mailchimp_get_mergevars()
- 7.4 mailchimp.module \mailchimp_get_mergevars()
- 2.x mailchimp.module \mailchimp_get_mergevars()
Wrapper around MailchimpLists->getMergeFields().
Parameters
array $list_ids: Array of MailChimp list IDs.
bool $reset: Set to TRUE if mergevars should not be loaded from cache.
Return value
array Struct describing mergevars for the specified lists.
4 calls to mailchimp_get_mergevars()
- MailchimpListsTestCase::testGetMergevars in modules/
mailchimp_lists/ tests/ mailchimp_lists.test - Tests retrieval of mergevars for a set of lists.
- mailchimp_campaign_campaign_form in modules/
mailchimp_campaign/ includes/ mailchimp_campaign.admin.inc - Returns a form for creating a campaign.
- mailchimp_signup_form in modules/
mailchimp_signup/ includes/ mailchimp_signup.admin.inc - Return a form for adding/editing a MailChimp signup form.
- _mailchimp_lists_field_instance_settings_form_process in modules/
mailchimp_lists/ includes/ mailchimp_lists.field.inc - Element processor. Expand the mergefields mapping form.
File
- ./
mailchimp.module, line 522 - Mailchimp module.
Code
function mailchimp_get_mergevars($list_ids, $reset = FALSE) {
$mergevars = array();
if (!$reset) {
foreach ($list_ids as $key => $list_id) {
$cache = cache_get($list_id . '-mergevars', 'cache_mailchimp');
// Get cached data and unset from our remaining lists to query.
if ($cache) {
$mergevars[$list_id] = $cache->data;
unset($list_ids[$key]);
}
}
}
/* @var \Mailchimp\MailchimpLists $mc_lists */
$mc_lists = mailchimp_get_api_object('MailchimpLists');
try {
if (!$mc_lists) {
throw new MailchimpException('Cannot get merge vars without MailChimp API. Check API key has been entered.');
}
// Get the uncached merge vars from MailChimp.
foreach ($list_ids as $list_id) {
// Add default EMAIL merge var for all lists.
$mergevars[$list_id] = array(
(object) array(
'tag' => 'EMAIL',
'name' => t('Email Address'),
'type' => 'email',
'required' => TRUE,
'default_value' => '',
'public' => TRUE,
'display_order' => 1,
'options' => (object) array(
'size' => 25,
),
),
);
$result = $mc_lists
->getMergeFields($list_id, array(
'count' => 500,
));
if ($result->total_items > 0) {
$mergevars[$list_id] = array_merge($mergevars[$list_id], $result->merge_fields);
}
cache_set($list_id . '-mergevars', $mergevars[$list_id], 'cache_mailchimp', CACHE_TEMPORARY);
}
} catch (Exception $e) {
watchdog('mailchimp', 'An error occurred requesting mergevars for list @list. "%message"', array(
'@list' => $list_id,
'%message' => $e
->getMessage(),
), WATCHDOG_ERROR);
}
return $mergevars;
}