You are here

function image_desaturate_formatter_field_formatter_view in Image desaturate formatter 7

Same name and namespace in other branches
  1. 7.2 image_desaturate_formatter.module \image_desaturate_formatter_field_formatter_view()

Implements hook_field_formatter_view().

File

./image_desaturate_formatter.module, line 123
Code for the Image Desaturate Formatter module.

Code

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

  // Check if exists the desaturae image style related to the selected one.
  if (!image_style_load($display['settings']['image_style'] . '-desaturate')) {
    $normal_style = image_style_load($display['settings']['image_style']);
    $new_style = image_style_save(array(
      'name' => $display['settings']['image_style'] . '-desaturate',
    ));
    foreach ($normal_style['effects'] as $effect) {
      $new_effect = array(
        'name' => $effect['name'],
        'data' => $effect['data'],
        'isid' => $new_style['isid'],
        'weight' => $effect['weight'],
      );
      image_effect_save($new_effect);
    }
    $new_effect = array(
      'name' => 'image_desaturate',
      'data' => array(),
      'isid' => $new_style['isid'],
      'weight' => 1000,
    );
    image_effect_save($new_effect);
  }

  // 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;
  }
  foreach ($items as $delta => $item) {
    if (isset($link_file)) {
      $uri = array(
        'path' => file_create_url($item['uri']),
        'options' => array(),
      );
    }
    $element[$delta] = array(
      '#theme' => 'image_desaturate_formatter',
      '#item' => $item,
      '#image_style' => $display['settings']['image_style'],
      '#image_style_desaturate' => $display['settings']['image_style'] . '-desaturate',
      '#path' => isset($uri) ? $uri : '',
      '#default_style' => $display['settings']['default_style'],
    );
  }
  return $element;
}