You are here

function imageinfo_cache_get_styles_in_use in Imageinfo Cache 7.3

Generates all in use presets given a field instance and a file uri.

Parameters

array $instance_field: Field array from field_info_instances().

bool $run_alter: (optional) Run hook alter. Default is TRUE.

bool $use_cache: (optional) Use the database cache. Default is TRUE.

Return value

array An array of what styles are used in this field.

2 calls to imageinfo_cache_get_styles_in_use()
imageinfo_cache_create_image_styles in ./imageinfo_cache.inc
Generates all given presets given a file uri.
imageinfo_cache_get_image_fields in ./imageinfo_cache.inc
Get all fields that contain an image and what styles are used in it.

File

./imageinfo_cache.inc, line 69
Imageinfo Cache module. Helper functions.

Code

function imageinfo_cache_get_styles_in_use(array $instance_field, $run_alter = TRUE, $use_cache = TRUE) {
  $return = array();

  // Do nothing if the image module does not exist.
  if (!module_exists('image')) {
    return $return;
  }

  // Do nothing if no image styles are defined.
  $image_styles = image_styles();
  if (empty($image_styles) || !is_array($image_styles)) {
    return $return;
  }

  // Get the presets used in display previews.
  $styles = array();
  foreach ($instance_field as $values) {
    if (!is_array($values) || empty($values['settings'])) {
      continue;
    }
    if (!empty($values['settings']['preview_image_style']) && !empty($image_styles[$values['settings']['preview_image_style']])) {
      $styles[$values['settings']['preview_image_style']] = $image_styles[$values['settings']['preview_image_style']];
    }
  }

  // Get the presets used in displays.
  foreach ($instance_field['display'] as $values) {
    if (!is_array($values) || empty($values['settings'])) {
      continue;
    }

    // Core.
    if (!empty($values['settings']['image_style']) && !empty($image_styles[$values['settings']['image_style']])) {
      $styles[$values['settings']['image_style']] = $image_styles[$values['settings']['image_style']];
    }

    // Newer lightbox.
    if (!empty($values['settings']['lightbox_style']) && !empty($image_styles[$values['settings']['lightbox_style']])) {
      $styles[$values['settings']['lightbox_style']] = $image_styles[$values['settings']['lightbox_style']];
    }
  }

  // Get the presets used in displays by older lightbox.
  foreach ($instance_field['display'] as $values) {
    if (!is_array($values) || empty($values['type']) || empty($values['module']) || $values['module'] !== 'lightbox2' || substr_count($values['type'], '__') != 3) {
      continue;
    }
    $pieces = explode('__', $values['type']);
    if (!empty($image_styles[$pieces[2]])) {
      $styles[$pieces[2]] = $image_styles[$pieces[2]];
    }
    if (!empty($image_styles[$pieces[3]])) {
      $styles[$pieces[3]] = $image_styles[$pieces[3]];
    }
  }

  // Get the presets used in views.
  $image_styles_in_views = imageinfo_cache_get_image_styles_in_views($instance_field['field_name'], FALSE, $use_cache);
  foreach ($image_styles_in_views as $image_style_name) {
    if (is_string($image_style_name) && !empty($image_styles[$image_style_name])) {
      $styles[$image_style_name] = $image_styles[$image_style_name];
    }
  }

  // Get the presets used in file entities.
  foreach (imageinfo_cache_get_image_styles_in_file_entity($instance_field) as $image_style_name) {
    if (!empty($image_styles[$image_style_name])) {
      $styles[$image_style_name] = $image_styles[$image_style_name];
    }
  }

  // Allow for the $styles to be altered.
  if ($run_alter) {

    // Run hook_imageinfo_cache_styles_alter().
    drupal_alter('imageinfo_cache_styles', $styles, $instance_field['field_name']);
  }
  return $styles;
}