You are here

function views_accelerator_render_file in Views Accelerator 7

Renders a value as an image file or general file.

Parameters

array $value: Must have at least $value['type']=='image' or $value['filename'] set.

$object $handler: The field handler. If an image handler, all image styles are supported.

Return value

array with 'raw' and 'rendered' entries.

1 call to views_accelerator_render_file()
views_accelerator_poor_mans_formatter in ./views_accelerator.module
Functionally poor but high-performant replacement for set_items().

File

./views_accelerator.module, line 273
Views Accelerator module.

Code

function views_accelerator_render_file($value, $handler) {
  $file_type = isset($value['type']) ? $value['type'] : '';
  $format = $handler->options['type'];
  $settings = $handler->options['settings'];
  $path = variable_get('file_public_path', conf_path() . '/files');
  if (($format == 'file_rendered' || $format == 'image') && (empty($file_type) || $file_type == 'image')) {
    $image_style = NULL;
    if (isset($settings['image_style'])) {
      $image_style = $settings['image_style'];
    }
    elseif (isset($settings['file_view_mode'])) {

      // Normally, using a complicated process invovling the likes of
      // image_file_default_displays_alter() the view mode gets converted into a
      // an image_style. Here, we keep things ultra-simple.
      // Typcial image_styles are thumbnail', 'medium', 'large', with the
      // associated images sourced from subdirs by those names, e.g.,
      // /default/files/styles/thumbnail, default/files/styles/medium.
      // A 'default' view mode displays the original images, unprocessed, from
      // /default/files
      switch ($settings['file_view_mode']) {
        case 'preview':
          $image_style = 'thumbnail';
          break;
        case 'teaser':
          $image_style = 'medium';
          break;
      }
    }
    $rendered = array(
      '#theme' => 'image_formatter',
      '#image_style' => $image_style,
      '#item' => $value,
      '#access' => 1,
    );
    if ($format == 'file_rendered') {
      $rendered['#path'] = array(
        'path' => empty($value['nid']) ? 'file/' . $value['fid'] : 'node/' . $value['nid'],
      );
    }
    elseif ($settings['image_link'] == 'file') {
      $rendered['#path'] = array(
        'path' => $path . '/' . $value['filename'],
      );
    }
    elseif ($settings['image_link'] == 'content' && isset($value['nid'])) {
      $rendered['#path'] = array(
        'path' => 'node/' . $value['nid'],
      );
    }
  }
  else {

    // Covers $format == 'file_url_plain', 'file_default' ("Generic file")
    // Also handles 'file_download_link' and 'file_rendered' for PDF etc.
    $rendered = array(
      '#theme' => 'link',
      // Make sure check_plain() is called in theme_link() by using 'html'=>FALSE
      '#options' => array(
        'html' => FALSE,
        'attributes' => array(),
      ),
      '#path' => $path . '/' . $value['filename'],
      '#text' => $value['filename'],
      '#html' => FALSE,
      '#access' => 1,
    );
    if ($format == 'file_download_link') {
      $rendered['#theme'] = 'file_entity_download_link';
      $rendered['#text'] = $settings['text'];
      $rendered['#file'] = (object) $value;
    }
  }
  return array(
    'raw' => $value,
    'rendered' => $rendered,
  );
}