You are here

function list_field_diff_view in Diff 7.3

Diff field callback for parsing list field comparative values.

File

includes/list.inc, line 11
Provide diff field functions for the List module.

Code

function list_field_diff_view($items, $context) {
  $field = $context['field'];
  $instance = $context['instance'];
  $settings = $context['settings'];
  $diff_items = array();
  $allowed_values = list_allowed_values($field, $instance, $context['entity_type'], $context['entity']);
  foreach ($items as $delta => $item) {

    // Fairly complex condition to prevent duplicate "key (key)" type rendering.
    if (isset($allowed_values[$item['value']]) && $allowed_values[$item['value']] != $item['value'] && strlen($allowed_values[$item['value']])) {
      switch ($settings['compare']) {
        case 'both':
          $diff_items[$delta] = $allowed_values[$item['value']] . ' (' . $item['value'] . ')';
          break;
        case 'label':
          $diff_items[$delta] = $allowed_values[$item['value']];
          break;
        default:
          $diff_items[$delta] = $item['value'];
          break;
      }
    }
    else {

      // If no match was found for the label, fall back to the key.
      $diff_items[$delta] = $item['value'];
    }
  }
  return $diff_items;
}