You are here

function _campaignmonitor_get_custom_fields in Campaign Monitor 6.3

Get custom fields for a list.

Parameters

string $api_key:

string $list_id:

Return value

array custom field description

3 calls to _campaignmonitor_get_custom_fields()
campaignmonitor_admin_settings_form in includes/campaignmonitor.admin.inc
Menu callback that creates the administartion settings form.
campaignmonitor_subscribe_form in ./campaignmonitor.module
campaignmonitor_subscribe_form_submit in ./campaignmonitor.module

File

./campaignmonitor.module, line 831
Module that plugs in Campaign Monitor functionality to your Drupal web site. For Campaign Monitor information see: http://www.campaignmonitor.com/

Code

function _campaignmonitor_get_custom_fields($api_key, $list_id, $reset = FALSE) {
  $get_data = FALSE;
  static $data;
  if (!isset($data) || !isset($data[$list_id]) || $reset) {
    if (!$reset && ($cache = cache_get('campaignmonitor_custom_fields')) && !empty($cache->data)) {
      $data = $cache->data;
      if (!isset($data[$list_id])) {

        // Cache found, but no information about current list.
        $get_data = TRUE;
      }
    }
    else {

      // No cache found.
      $data = array();
      $get_data = TRUE;
    }
  }
  if ($get_data) {
    $retval = array();
    $cm = new CampaignMonitor($api_key, $client_id, $campaign_id, $list_id);
    $result = $cm
      ->listGetCustomFields($list_id);
    if (empty($result) && !is_array($result) || $result['anyType']['Code'] != 0) {
      if (empty($result)) {
        watchdog('campaignmonitor', 'There was a problem with the connection to Campaign Monitor.');
      }
      else {
        watchdog('campaignmonitor', 'Get Custom Fields: Code - %code, Message - %message', array(
          '%code' => $result['anyType']['Code'],
          '%message' => $result['anyType']['Message'],
        ));
      }
      drupal_set_message(CM_ERROR, 'error', FALSE);
    }
    else {
      if (!empty($result['anyType']['ListCustomField'])) {

        // If there is only one list.
        if (!empty($result['anyType']['ListCustomField']['FieldName'])) {
          $retval[] = $result['anyType']['ListCustomField'];
        }
        else {
          $retval = $result['anyType']['ListCustomField'];
        }
      }

      // Save list details in the cache.
      $data[$list_id] = $retval;
      cache_set('campaignmonitor_custom_fields', $data);
    }
  }
  return $data[$list_id];
}