function imageinfo_cache_get_image_styles_in_views in Imageinfo Cache 7.3
Given a field name, will return image styles used in views for that field.
Parameters
string $field_name: Name of a field containing images.
bool $view_links: (optional) If TRUE return links to the views that use image styles. Default is FALSE.
bool $use_cache: (optional) Use the database cache. Default is TRUE.
Return value
array An array image style names.
2 calls to imageinfo_cache_get_image_styles_in_views()
- imageinfo_cache_admin_settings_form in ./
imageinfo_cache.admin.inc - Form builder; Configure advagg settings.
- imageinfo_cache_get_styles_in_use in ./
imageinfo_cache.inc - Generates all in use presets given a field instance and a file uri.
1 string reference to 'imageinfo_cache_get_image_styles_in_views'
File
- ./
imageinfo_cache.inc, line 230 - Imageinfo Cache module. Helper functions.
Code
function imageinfo_cache_get_image_styles_in_views($field_name, $view_links = FALSE, $use_cache = TRUE) {
$image_styles_in_views =& drupal_static(__FUNCTION__);
// Do nothing is the views module is missing.
if (!module_exists('views')) {
return array();
}
// Lookup info.
if (!isset($image_styles_in_views)) {
$cache = cache_get('imageinfo_cache_get_image_styles_in_views');
if (!empty($cache->data) && $use_cache) {
$image_styles_in_views = $cache->data;
}
else {
foreach (views_get_enabled_views() as $view) {
foreach ($view->display as $display) {
// Skip if no fields.
if (empty($display->display_options['fields'])) {
continue;
}
foreach ($display->display_options['fields'] as $view_field_name => $field_info) {
// Skip if field is missing needed info.
if (empty($field_info['settings']['image_style']) && empty($field_info['settings']['file_view_mode']) && empty($field_info['view_mode'])) {
continue;
}
// Handle rendered fields by looking at relationships.
if (strpos($view_field_name, 'rendered') === 0) {
if (!empty($display->display_options['relationships'])) {
$fields_with_images = imageinfo_cache_get_fields_with_images();
$changed = FALSE;
foreach ($display->display_options['relationships'] as $values) {
if (!empty($values['label']) && !empty($fields_with_images[$values['label']])) {
$view_field_name = $values['label'];
$changed = TRUE;
break;
}
}
if (empty($changed)) {
break;
}
}
}
$added = FALSE;
// Core image style.
if (!empty($field_info['settings']['image_style'])) {
$image_styles_in_views[$view_field_name][] = $field_info['settings']['image_style'];
$added = TRUE;
}
// Newer Lightbox.
if (!empty($field_info['settings']['lightbox_style'])) {
$image_styles_in_views[$view_field_name][] = $field_info['settings']['lightbox_style'];
$added = TRUE;
}
// Older Lightbox.
if (!empty($field_info['type']) && substr_count($field_info['type'], '__') == 3 && strpos($field_info['type'], 'lightbox2__') === 0) {
$pieces = explode('__', $field_info['type']);
$image_styles_in_views[$view_field_name][] = $pieces[2];
$image_styles_in_views[$view_field_name][] = $pieces[3];
$added = TRUE;
}
// File entities.
if (!empty($field_info['settings']['file_view_mode'])) {
$file_view_mode = imageinfo_cache_get_presets_in_file_view_mode($field_info['settings']['file_view_mode']);
foreach ($file_view_mode as $style_in_view) {
$image_styles_in_views[$view_field_name][] = $style_in_view;
$added = TRUE;
}
}
// File entities.
if (!empty($field_info['view_mode'])) {
$view_mode = imageinfo_cache_get_presets_in_file_view_mode($field_info['view_mode']);
foreach ($view_mode as $style_in_view) {
$image_styles_in_views[$view_field_name][] = $style_in_view;
$added = TRUE;
}
}
if ($added) {
if (empty($image_styles_in_views[$view_field_name]['#views'])) {
$image_styles_in_views[$view_field_name]['#views'] = l($view->human_name . ' - ' . $display->display_title, 'admin/structure/views/view/' . $view->name . '/edit/' . $display->id);
}
else {
$image_styles_in_views[$view_field_name]['#views'] .= ', ' . l($view->human_name . ' - ' . $display->display_title, 'admin/structure/views/view/' . $view->name . '/edit/' . $display->id);
}
}
}
}
}
// Diff arrays to see if this value is different from the cached value.
if (!empty($cache->data)) {
$a = imageinfo_cache_array_diff_assoc_recursive($cache->data, $image_styles_in_views);
$b = imageinfo_cache_array_diff_assoc_recursive($image_styles_in_views, $cache->data);
}
if (empty($cache->data) || !empty($a) || !empty($b)) {
cache_set('imageinfo_cache_get_image_styles_in_views', $image_styles_in_views, 'cache', CACHE_TEMPORARY);
}
}
}
// Return list.
if ($view_links) {
$return = '';
}
else {
$return = array();
}
if (isset($image_styles_in_views[$field_name])) {
if (!empty($image_styles_in_views[$field_name]['#views']) && $view_links) {
$return = $image_styles_in_views[$field_name]['#views'];
}
elseif (!$view_links) {
$copy = $image_styles_in_views[$field_name];
unset($copy['#views']);
$return = array_unique($copy);
}
}
return $return;
}