You are here

function imagecache_proportions_field_formatter_view in Imagecache Proportions 7

Implements hook_field_formatter_view().

File

./imagecache_proportions.module, line 146
Field formatter for image fields that allows the user to select between 3 different image styles depending on the proportions of the original image uploaded. One style would be squared for more or less squared images, another for wider images and the…

Code

function imagecache_proportions_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {

  // if there are no images, don't do anything else.
  if (empty($items)) {
    return;
  }
  $settings = $display['settings'];
  if (module_exists('shadowbox') && $settings['enable_link'] == 'shadowbox') {
    $shadowbox_enabled_path = _shadowbox_activation() && variable_get('shadowbox_enabled', TRUE);
    switch ($settings['shadowbox']['gallery']) {
      case 'page':
        $gallery_id = 'gallery';
        break;
      case 'field':
        $gallery_id = $field['field_name'];
        break;
      case 'nid':
        $info = entity_get_info($entity_type);
        $id = $info['entity keys']['id'];
        $gallery_id = "{$entity_type}-{$entity->{$id}}";
        break;
      default:
        $gallery_id = "";
        break;
    }
  }
  foreach ($items as $delta => $item) {
    $extra = array();
    $theme = 'image_formatter';
    $size = getimagesize($item['uri']);
    $proportions = imagecache_proportions_calculate_proportions($size[0], $size[1], $settings['looseness']);
    switch ($settings['enable_link']) {

      // Node is still here for legacy purposes.
      case 'node':
      case 'entity':
        $uri = entity_uri($entity_type, $entity);
        $extra['#image_style'] = $settings[$proportions];
        break;
      case 'image':
        $uri = array(
          'path' => file_create_url($item['uri']),
          'options' => array(),
        );
        $extra['#image_style'] = $settings[$proportions];
        break;
      case 'colorbox':
        $theme = 'colorbox_image_formatter';
        $settings['colorbox']['colorbox_node_style'] = $settings[$proportions];
        $extra['#display_settings'] = $settings['colorbox'];
        $extra['#entity'] = $entity;
        $extra['#entity_type'] = $entity_type;
        break;
      case 'shadowbox':
        switch ($settings['shadowbox']['title']) {
          case 'alt':
            $title = $item['alt'];
            break;
          case 'title':
            $title = $item['title'];
            break;
          case 'node':
            $title = $entity->title;
            break;
          default:
            $title = '';
            break;
        }
        $theme = 'shadowbox_formatter';
        $extra['#itemid'] = $delta;
        $extra['#image_style'] = $settings[$proportions];
        $extra['#image_link'] = $settings['shadowbox']['image_link'];
        $extra['#title'] = $title;
        $extra['#gallery'] = $gallery_id;
        $extra['#compact'] = $settings['shadowbox']['compact'];
        if ($shadowbox_enabled_path) {
          $extra['#attached']['library'][] = array(
            'shadowbox',
            'shadowbox',
          );
        }
        break;
      default:
        $extra['#image_style'] = $settings[$proportions];
        break;
    }
    $element[$delta] = array(
      '#theme' => $theme,
      '#item' => $item,
      '#node' => $entity,
      '#field' => $field,
      '#path' => isset($uri) ? $uri : '',
    );
    $element[$delta] += $extra;
  }
  return $element;
}