]> git.wh0rd.org - tt-rss.git/blobdiff - image.php
assign stored content-insert height/width in switchPanelMode(); reset stored sizes...
[tt-rss.git] / image.php
index 91490ea226da1eb272db5a99afb494f390df0c6e..a134e658e88c4a6b28e1c4b5f05d39e55c899f13 100644 (file)
--- a/image.php
+++ b/image.php
@@ -4,14 +4,51 @@
 
        require_once "config.php";
 
-       $url = base64_decode($_GET['url']);
+       // backwards compatible wrapper for old-style image caching
+       /* if (isset($_GET['url'])) {
+               $url = base64_decode($_GET['url']);
 
-       $filename = CACHE_DIR . '/images/' . sha1($url) . '.png';
+               $filename = CACHE_DIR . '/images/' . sha1($url) . '.png';
 
-       if (file_exists($filename)) {
-               header("Content-type: image/png");
-               echo file_get_contents($filename);
-       } else {
-               header("Location: $url");
+               if (file_exists($filename)) {
+                       header("Content-type: image/png");
+                       echo file_get_contents($filename);
+               } else {
+                       header("Location: $url");
+               }
+
+               return;
+       } */
+
+       @$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);
+                               ob_clean();   // discard any data in the output buffer (if possible)
+                               flush();      // flush headers (if possible)
+                               readfile($filename);
+                       }
+               } else {
+                       header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
+                       echo "File not found.";
+               }
        }
+
 ?>