downloadPlot.php 2.39 KB
<?php

require_once 'config.php';

if (!isset($_POST['sessionId']))
{
	header("HTTP/1.0 400 Bad Request");
	echo json_encode(array("success" => false, "error" => "Unknown session Id"));
	exit;
}
$sessionId = $_POST['sessionId'];

if (!isset($_POST['interactiveId']))
{
	header("HTTP/1.0 400 Bad Request");
	echo json_encode(array("success" => false, "error" => "Unknown interactive Id"));
	exit;
}
$interactiveId     = $_POST['interactiveId'];

$preview = empty($_POST['preview']) ? FALSE : ($_POST['preview'] == "true");

$preview_function = empty($_POST['function']) ? FALSE : ($_POST['function'] == "true");

download_plot($sessionId, $interactiveId, $preview, $preview_function);

function download_plot($sessionId, $interactiveId, $preview, $preview_function)
{
	// Must be fresh start
	if( headers_sent() )
	{
		header("HTTP/1.0 400 Bad Request");
		echo json_encode(array("success" => false, "error" => "Headers Sent"));
		return;
	}

	// Required for some browsers
	if(ini_get('zlib.output_compression'))
		ini_set('zlib.output_compression', 'Off');

	//Build file path
	if (!$preview) {
		$fullPath = USERPATH."/".$sessionId."/RES/Plot_/".$interactiveId.".png";
	}
	else if (!$preview_function) {
		$fullPath = USERPATH."/".$sessionId."/RES/Plot_/".str_replace('plot_','instant',$interactiveId).".png";
	}
	else {
		$fullPath = USERPATH."/".$sessionId."/RES/Plot_/".str_replace('plot_','plotFunction',$interactiveId).".png";
	}

	// File Exists?
	if( file_exists($fullPath) ){

		// Parse Info / Get Extension
		$fsize = filesize($fullPath);
		$path_parts = pathinfo($fullPath);
		$ctype="image/png";
		
		header("Pragma: public"); // required
		header("Expires: 0");
		header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
		header("Cache-Control: private",false); // required for certain browsers
		header("Content-Type: $ctype");
		$newName ;
		preg_match('/(\d+)/', basename($fullPath), $matches);
		if (isset($matches[0])) {
			$newName = str_replace('.png', '_'.date('YmdHis').'.png', str_replace($matches[0], (string)$matches[0]+1, basename($fullPath)));
		}
		header("Content-Disposition: attachment; filename=\"".$newName."\";" );
		header("Content-Transfer-Encoding: binary");
		header("Content-Length: ".$fsize);
		ob_clean();
		flush();
		readfile( $fullPath );

	} else
	{
		header("HTTP/1.0 400 Bad Request");
		echo json_encode(array("success" => false, "error" => "No existing plot"));
		return;
	}
}

?>