<?php

/**
 * Tidypics Thumbnail
 *
 */

// 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;