You are here

function mailchimp_lists_field_formatter_view in Mailchimp 7.4

Same name and namespace in other branches
  1. 7.5 modules/mailchimp_lists/includes/mailchimp_lists.field.inc \mailchimp_lists_field_formatter_view()
  2. 7.3 modules/mailchimp_lists/includes/mailchimp_lists.field.inc \mailchimp_lists_field_formatter_view()

Implements hook_field_formatter_view().

File

modules/mailchimp_lists/includes/mailchimp_lists.field.inc, line 492
Field hooks.

Code

function mailchimp_lists_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
  $element = array();
  $use_interest_groups = $instance['settings']['show_interest_groups'] && $display['settings']['show_interest_groups'];
  $mc_list = mailchimp_get_list($field['settings']['mc_list_id'], $use_interest_groups);
  $email = mailchimp_lists_load_email($instance, $entity, FALSE);

  // Display subscription form if accessible.
  if ($display['type'] == 'mailchimp_lists_field_subscribe' && $email && entity_access('edit', $entity_type, $entity)) {
    $field_form_id = 'mailchimp_lists_' . $field['field_name'] . '_form';
    $element = drupal_get_form($field_form_id, $instance, $display['settings'], $entity, $field);
  }
  else {
    if ($email) {
      $member_info = mailchimp_get_memberinfo($field['settings']['mc_list_id'], $email);
      $member_status = isset($member_info->status) ? $member_info->status : NULL;
      switch ($member_status) {
        case 'subscribed':
          $status = t('Subscribed to %list', array(
            '%list' => $mc_list->name,
          ));
          break;
        case 'pending':
          $status = t('Pending confirmation for %list', array(
            '%list' => $mc_list->name,
          ));
          break;
        default:
          $status = t('Not subscribed to %list', array(
            '%list' => $mc_list->name,
          ));
      }
    }
    else {
      $status = t('Invalid email configuration.');
    }
    $element['status'] = array(
      '#markup' => $status,
      '#description' => t('@mc_list_description', array(
        '@mc_list_description' => $instance['description'],
      )),
    );
    if ($use_interest_groups && !empty($mc_list->intgroups)) {
      $element['interest_groups'] = array(
        '#type' => 'fieldset',
        '#title' => t('Interest Groups'),
        '#weight' => 100,
      );
      foreach ($mc_list->intgroups as $interest_group) {
        $items = array();
        foreach ($interest_group->interests as $interest) {
          if (isset($member_info->interests->{$interest->id}) && $member_info->interests->{$interest->id} === TRUE) {
            $items[] = $interest->name;
          }
        }
        if (count($items) > 0) {
          $element['interest_groups'][$interest_group->id] = array(
            '#title' => $interest_group->title,
            '#theme' => 'item_list',
            '#items' => $items,
            '#type' => 'ul',
          );
        }
      }
    }
  }
  return array(
    $element,
  );
}