You are here

function image_delta_formatter_field_formatter_view in Image Delta Formatter 7

Implements hook_field_formatter_view().

File

./image_delta_formatter.module, line 118
Provides an imagefield formatter that allows the user to specify which delta (or several deltas) should be displayed.

Code

function image_delta_formatter_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
  $element = array();

  // Check if the formatter involves a link.
  if ($display['settings']['image_link'] == 'content') {
    $uri = entity_uri($entity_type, $entity);
  }
  elseif ($display['settings']['image_link'] == 'file') {
    $link_file = TRUE;
  }

  // Prepare an array of selected deltas from the entered string.
  if (strpos($display['settings']['deltas'], ',')) {
    $deltas = explode(',', $display['settings']['deltas']);
    $deltas = array_map('trim', $deltas);
  }
  else {
    $delta = trim($display['settings']['deltas']);
    $deltas = array(
      $delta,
    );
  }

  // Reverse the items if needed.
  if ($display['settings']['deltas_reversed']) {
    $items = array_reverse($items);
  }
  foreach ($items as $delta => $item) {

    // Skip deltas that weren't selected for display.
    if (!in_array($delta, $deltas)) {
      continue;
    }
    if (isset($link_file)) {
      $uri = array(
        'path' => file_create_url($item['uri']),
        'options' => array(),
      );
    }
    $element[$delta] = array(
      '#theme' => 'image_formatter',
      '#item' => $item,
      '#image_style' => $display['settings']['image_style'],
      '#path' => isset($uri) ? $uri : '',
    );
  }
  return $element;
}