You are here

function pdfpreview_field_formatter_view in PDFPreview 7.2

Same name and namespace in other branches
  1. 7 pdfpreview.module \pdfpreview_field_formatter_view()

Implements hook_field_formatter_view()

See also

_pdfpreview_create_preview()

File

./pdfpreview.module, line 130
This file contains hooks for the pdfpreview module

Code

function pdfpreview_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $items, $display) {
  $element = array();
  $settings = $display['settings'];
  $image_items = array();
  $non_pdfs = array();
  list($preview_width, $preview_height) = explode('x', variable_get('pdfpreview_previewsize', PDFPREVIEW_DEFAULT_SIZE));
  foreach ($items as $delta => $item) {
    if (isset($item['display']) && !$item['display']) {
      continue;
    }

    //don't show hidden files
    if ($item['filemime'] == 'application/pdf' && ($preview_uri = _pdfpreview_create_preview($item))) {
      $image_items[$delta] = array(
        'fid' => $item['fid'],
        'uri' => $preview_uri,
        'alt' => isset($item['description']) ? $item['description'] : '',
        'width' => $preview_width,
        'height' => $preview_height,
        'title' => isset($item['description']) ? $item['description'] : '',
        'attributes' => array(
          'class' => array(
            'pdfpreview-file',
          ),
        ),
      );
    }
    else {

      //For non pdf files, we defer processing.
      $non_pdfs[$delta] = $item;
    }
  }

  // Render PDF preview files using the image or picture formatter.
  switch ($display['type']) {
    case 'pdfpreview':
      $element += image_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $image_items, $display);
      break;
    case 'pdfpreview_picture':
      $picture_display = array_merge(array(), $display);
      $picture_display['type'] = 'picture';
      $element += picture_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $image_items, $picture_display);
      break;
  }
  foreach (element_children($element) as $delta) {
    $element[$delta]['#theme_wrappers'][] = 'pdfpreview_formatter';
    $element[$delta]['#settings'] = $settings;
    $element[$delta]['#fid'] = $items[$delta]['fid'];
  }
  if ((!isset($settings['fallback_formatter']) || $settings['fallback_formatter']) && !empty($non_pdfs)) {

    // Process non PDF files using default file formatter.
    module_load_include('inc', 'file', 'file.field');
    $display['type'] = 'file_default';
    $element = array_merge($element, file_field_formatter_view($entity_type, $entity, $field, $instance, $langcode, $non_pdfs, $display));
  }
  return $element;
}