function mailchimp_lists_field_formatter_view in Mailchimp 7.4
Same name and namespace in other branches
- 7.5 modules/mailchimp_lists/includes/mailchimp_lists.field.inc \mailchimp_lists_field_formatter_view()
- 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,
);
}