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,
);
}