summaryrefslogtreecommitdiff
path: root/image.php
blob: dcc7d806d406ec3f3c2beb07839c65e39b88ca2c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php
	set_include_path(dirname(__FILE__) ."/include" . PATH_SEPARATOR .
		get_include_path());

	require_once "config.php";

	// backwards compatible wrapper for old-style image caching
	/* if (isset($_GET['url'])) {
		$url = base64_decode($_GET['url']);

		$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");
		}

		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);
				readfile($filename);
			}
		} else {
			header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found");
			echo "File not found.";
		}
	}

?>