aboutsummaryrefslogtreecommitdiff
path: root/thumbnail.php
blob: 79d4872107c0332d5e82ead4ef22d73797dbda83 (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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<?php

	/**
	 * Tidypics Thumbnail
	 * 
	 */

	include_once(dirname(dirname(dirname(__FILE__))) . "/engine/start.php");
	
	// Get file GUID
	$file_guid = (int) get_input('file_guid');
	
	// Get file thumbnail size
	$size = get_input('size');
	// only 3 possibilities
	if ($size != 'small' && $size != 'thumb') {
		$size = 'large';
	}
	
	$error_image = '';
	switch ($size) {
		case 'thumb':
			$error_image = "image_error_thumb.png";
			break;
		case 'small':
			$error_image = "image_error_small.png";
			break;
		case 'large':
			$error_image = "image_error_large.png";
			break;
	}
	
	// Get file entity
	$file = get_entity($file_guid);
	if (!$file)
		forward('mod/tidypics/graphics/' . $error_image);
	
	if ($file->getSubtype() != "image")
		forward('mod/tidypics/graphics/' . $error_image);
	
	// Get filename
	if ($size == "thumb") {
		$thumbfile = $file->thumbnail;
	} else if ($size == "small") {
		$thumbfile = $file->smallthumb;
	} else {
		$thumbfile = $file->largethumb;
	}
	
	if (!$thumbfile)
		forward('mod/tidypics/graphics/' . $error_image);
	
	// create Elgg File object
	$readfile = new ElggFile();
	$readfile->owner_guid = $file->owner_guid;
	$readfile->setFilename($thumbfile);
	$contents = $readfile->grabFile();

	// send error image if file could not be read
	if (!$contents) {
		forward('mod/tidypics/graphics/' . $error_image);
	}
	
	// expires every 14 days
	$expires = 14 * 60*60*24;

	// overwrite header caused by php session code so images can be cached
	$mime = $file->getMimeType();
	header("Content-Type: $mime");
	header("Content-Length: " . strlen($contents));
	header("Cache-Control: public", true);
	header("Pragma: public", true);
	header('Expires: ' . gmdate('D, d M Y H:i:s', time() + $expires) . ' GMT', true);
	
	// Return the thumbnail and exit
	echo $contents;
	exit;
?>