diff options
Diffstat (limited to 'classes/handler')
-rw-r--r-- | classes/handler/public.php | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/classes/handler/public.php b/classes/handler/public.php index 34d577441..dafe2a8c5 100644 --- a/classes/handler/public.php +++ b/classes/handler/public.php @@ -1002,5 +1002,36 @@ class Handler_Public extends Handler { <?php } + function cached_image() { + @$hash = basename($_GET['hash']); + + if ($hash) { + + $filename = CACHE_DIR . '/images/' . $hash . '.png'; + + if (file_exists($filename)) { + /* See if we can use X-Sendfile */ + $xsendfile = false; + if (function_exists('apache_get_modules') && + array_search('mod_xsendfile', apache_get_modules())) + $xsendfile = true; + + if ($xsendfile) { + header("X-Sendfile: $filename"); + header("Content-type: application/octet-stream"); + header('Content-Disposition: attachment; filename="' . basename($filename) . '"'); + } else { + header("Content-type: image/png"); + $stamp = gmdate("D, d M Y H:i:s", filemtime($filename)). " GMT"; + header("Last-Modified: $stamp", true); + readfile($filename); + } + } else { + header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found"); + echo "File not found."; + } + } + } + } ?> |