image_file_download
function image_file_download
image_file_download($uri)
Implements hook_file_download().
Control the access to files underneath the styles directory.
File
- modules/image/image.module, line 280
- Exposes global functionality for creating image styles.
Code
function image_file_download($uri) { $path = file_uri_target($uri); // Private file access for image style derivatives. if (strpos($path, 'styles/') === 0) { $args = explode('/', $path); // Discard the first part of the path (styles). array_shift($args); // Get the style name from the second part. $style_name = array_shift($args); // Remove the scheme from the path. array_shift($args); // Then the remaining parts are the path to the image. $original_uri = file_uri_scheme($uri) . '://' . implode('/', $args); // Check that the file exists and is an image. if ($info = image_get_info($uri)) { // Check the permissions of the original to grant access to this image. $headers = module_invoke_all('file_download', $original_uri); // Confirm there's at least one module granting access and none denying access. if (!empty($headers) && !in_array(-1, $headers)) { return array( // Send headers describing the image's size, and MIME-type... 'Content-Type' => $info['mime_type'], 'Content-Length' => $info['file_size'], // By not explicitly setting them here, this uses normal Drupal // Expires, Cache-Control and ETag headers to prevent proxy or // browser caching of private images. ); } } return -1; } // Private file access for the original files. Note that we only check access // for non-temporary images, since file.module will grant access for all // temporary files. $files = file_load_multiple(array(), array('uri' => $uri)); if (count($files)) { $file = reset($files); if ($file->status) { return file_file_download($uri, 'image'); } } }
© 2001–2016 by the original authors
Licensed under the GNU General Public License, version 2 and later.
Drupal is a registered trademark of Dries Buytaert.
https://api.drupal.org/api/drupal/modules!image!image.module/function/image_file_download/7.x