You are here

function picture_field_formatter_picture_sizes_formatter_view in Picture 7.2

Helper function.

See also

picture_field_formatter_view()

File

./picture.module, line 1097
Picture formatter.

Code

function picture_field_formatter_picture_sizes_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
  $elements = array();
  $settings = $display['settings'];

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

      // Support for field translations.
      $language = field_language($entity_type, $entity, $image_link, $langcode);
      $link_field = $entity->{$image_link};
      if (isset($link_field[$language])) {
        $link_values = $link_field[$language];
      }
    }
    elseif (image_style_load($image_link)) {
      $link_file = $image_link;
    }
  }
  foreach ($items as $delta => $item) {
    if (isset($link_file)) {
      $uri = array(
        'path' => $link_file === TRUE ? file_create_url($item['uri']) : image_style_url($link_file, $item['uri']),
        'options' => array(),
      );
    }

    // Handle multiple link with image values.
    if (isset($link_values)) {
      if (isset($link_values[$delta]['url'])) {
        $uri = array(
          'path' => $link_values[$delta]['url'],
          'options' => array(
            'attributes' => $link_values[$delta]['attributes'],
          ),
        );

        // Handle query fragment if there is any.
        if (!empty($link_values[$delta]['query'])) {
          $uri['options']['query'] = $link_values[$delta]['query'];
        }
      }
      else {
        unset($uri);
      }
    }
    $elements[$delta] = array(
      '#theme' => 'picture_sizes_formatter',
      '#item' => $item,
      '#image_styles' => array_filter($settings['image_styles']),
      '#fallback_image_style' => $settings['fallback_image_style'] ? $settings['fallback_image_style'] : PICTURE_EMPTY_IMAGE,
      '#sizes' => $settings['sizes'],
      '#path' => isset($uri) ? $uri : '',
      '#lazyload_data_attributes' => $settings['lazyload_data_attributes'],
      '#lazyload_class' => $settings['lazyload_class'],
    );
  }
  return $elements;
}