You are here

function auto_image_style_field_formatter_view in Auto image style 7

Implements hook_field_formatter_view().

File

./auto_image_style.module, line 172

Code

function auto_image_style_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
  if (empty($items)) {
    return array();
  }
  $element = array();
  $settings = $display['settings'];
  $link_to_file = FALSE;
  $link_to_link = FALSE;

  // 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_to_file = TRUE;
  }
  elseif (isset($entity->{$display['settings']['image_link']})) {
    $link_to_link = TRUE;
    $link_to_link_values = field_get_items($entity_type, $entity, $display['settings']['image_link'], $langcode);
  }

  //all image styles
  $image_styles = image_styles();
  foreach ($items as $delta => $item) {

    // link to image file
    if ($link_to_file) {
      $uri = array(
        'path' => file_create_url($item['uri']),
        'options' => array(),
      );
    }

    // link module integration
    if ($link_to_link && isset($link_to_link_values[$delta])) {
      $uri = array(
        'path' => $link_to_link_values[$delta]['url'],
        'options' => array(),
      );
    }

    // landscape image
    if ($item['height'] < $item['width']) {
      $image_style = $settings['image_style_landscape'];
      $item['attributes']['class'] = array(
        'auto_image_style',
        $settings['image_style_landscape_class'],
      );
    }
    else {
      $image_style = $settings['image_style_portrait'];
      $item['attributes']['class'] = array(
        'auto_image_style',
        $settings['image_style_portrait_class'],
      );
    }
    $element[$delta] = array(
      '#theme' => 'image_formatter',
      '#item' => $item,
      '#image_style' => $image_style,
      '#path' => isset($uri) ? $uri : '',
    );
    if (strpos($image_style, 'picture_mapping_') !== false) {
      $mapping_name = substr($image_style, 16);
      $fallback_image_style = '';
      $picture_mapping = picture_mapping_load($mapping_name);
      $breakpoint_styles = picture_get_mapping_breakpoints($picture_mapping, $fallback_image_style);

      // Assume regular display.
      $formatter = 'picture_formatter';
      $colorbox_breakpoints = array();
      $colorbox_fallback_image_style = '';
      if (module_exists('picture')) {
        $element[$delta] = array(
          '#theme' => 'picture_formatter',
          '#attached' => array(
            'library' => array(
              array(
                'picture',
                'picturefill_head',
              ),
              array(
                'picture',
                'picturefill',
              ),
              array(
                'picture',
                'picture.ajax',
              ),
            ),
          ),
          '#item' => $item,
          '#image_style' => $fallback_image_style,
          '#breakpoints' => $breakpoint_styles,
          '#path' => isset($uri) ? $uri : '',
          '#colorbox_group' => $colorbox_breakpoints,
          '#colorbox_image_style' => $colorbox_fallback_image_style,
        );
      }
    }
  }
  return $element;
}