function _manualcrop_add_cache_control in Manual Crop 7
Adds a cache control parameter to the image URI so the image will be reloaded if the crop selection was changed since it was last feched by the browser.
Parameters
$style_name: Image style name.
$path: The absolute URL where the styled image can be downloaded.
Return value
The altered image URL or NULL if the URL wasn't changed.
2 calls to _manualcrop_add_cache_control()
- manualcrop_preprocess_image in ./
manualcrop.module - Preprocessing for theme_image(); Force reloading of an image after re-cropping.
- manualcrop_preprocess_image_url_formatter in ./
manualcrop.module - Preprocessing for theme_image_url_formatter(); Force reloading of an image after re-cropping.
File
- ./
manualcrop.helpers.inc, line 859 - Helper functions for the Manual Crop module.
Code
function _manualcrop_add_cache_control($style_name, $url) {
// Is cache control enabled?
if (variable_get('manualcrop_cache_control', TRUE)) {
$styles = manualcrop_styles_with_crop(TRUE);
// Does this image style have a Manual Crop effect?
if (isset($styles[$style_name])) {
$cache_key = 'manualcrop:' . md5($url);
// Attempt to load the HTTP cache-controller from cache.
if ($cached_url = cache_get($cache_key)) {
return $cached_url->data;
}
// Get the image path from the URL.
$match = '/styles/' . $style_name . '/';
$path = parse_url($url, PHP_URL_PATH);
$path = drupal_substr($path, strrpos($path, $match) + drupal_strlen($match));
$path = explode('/', $path);
// Build the local image URI.
$scheme = array_shift($path);
$target = implode('/', $path);
$image_uri = $scheme . '://' . urldecode($target);
// Get the image effect.
$effect = $styles[$style_name]['effect'];
if (_manualcrop_is_own_effect($effect, FALSE)) {
unset($style_name);
switch ($effect['name']) {
case 'manualcrop_reuse':
// Use the reuse style to load the crop selection.
if (!empty($effect['data']['reuse_crop_style'])) {
$style_name = $effect['data']['reuse_crop_style'];
}
break;
case 'manualcrop_auto_reuse':
// Get the first applied crop selection.
if ($crop = manualcrop_load_crop_selection($image_uri)) {
$crop = reset($crop);
}
break;
}
}
// Load the crop selection.
if (isset($style_name)) {
$crop = manualcrop_load_crop_selection($image_uri, $style_name);
}
// Add the cache controller and cache the new URL.
if (!empty($crop)) {
$url .= (strpos($url, '?') ? '&' : '?') . 'c=' . md5($crop->x . '|' . $crop->y . '|' . $crop->width . '|' . $crop->height);
cache_set($cache_key, $url);
return $url;
}
}
}
return NULL;
}