diff options
author | Andrew Dolgov <[email protected]> | 2019-08-13 16:40:21 +0300 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2019-08-13 16:40:21 +0300 |
commit | fdb6066bf67751ebb388a3de082d80f5444e3681 (patch) | |
tree | 71eaefc6589ef3206c210205144a52a79d7c6953 /classes/handler | |
parent | bed695b127f1bc49103d6112868296f3a9990c2b (diff) |
* HOOK_ENCLOSURE_ENTRY: pass article_id to handler
* DiskCache: multiple fixes; support isWritable() for cache entries, set content-disposition for send()
* public/cached_url: allow selecting files from sub-caches other than images
* plugins/Cache_Starred_Images: rework to use DiskCache, can be enabled per-user, properly handles article enclosures, etc
Diffstat (limited to 'classes/handler')
-rwxr-xr-x | classes/handler/public.php | 27 |
1 files changed, 12 insertions, 15 deletions
diff --git a/classes/handler/public.php b/classes/handler/public.php index 27e984be9..901844e36 100755 --- a/classes/handler/public.php +++ b/classes/handler/public.php @@ -1202,24 +1202,21 @@ class Handler_Public extends Handler { } function cached_url() { - @$req_filename = basename($_GET['file']); + $filename = $_GET['file']; - // we don't need an extension to find the file, hash is a complete URL - $hash = preg_replace("/\.[^\.]*$/", "", $req_filename); - - if ($hash) { - - $filename = CACHE_DIR . '/images/' . $hash; - - if (file_exists($filename)) { - header("Content-Disposition: inline; filename=\"$req_filename\""); + if (strpos($filename, "/") !== FALSE) { + list ($cache_dir, $filename) = explode("/", $filename, 2); + } else { + $cache_dir = "images"; + } - send_local_file($filename); + $cache = new DiskCache($cache_dir); - } else { - header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found"); - echo "File not found."; - } + if ($cache->exists($filename)) { + $cache->send($filename); + } else { + header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found"); + echo "File not found."; } } |