<?php

date_default_timezone_set('America/Chicago');

function endsWith($haystack, $needle) {
    $length = strlen($needle);
    if ($length == 0) {
        return true;
    }

    return (substr($haystack, -$length) === $needle);
}

function showLogin($file, $fileType, $message='') {
	$page = str_replace('<!-- INSERT FILE -->', $file, file_get_contents('secure.private.html'));
	$page = str_replace('<!-- INSERT TYPE -->', $fileType, $page);
	if($message!='') {
		$page = str_replace('<!-- INSERT MESSAGE -->', '<p>'.$message.'</p>', $page);
	}
	echo $page;
	die();
}

function downloadFile($file, $fileType) {
	header('Content-Description: File Transfer');
	$file = $fileType . '/' . $file;
	if(endsWith($file, "docx")) {
		header('Content-type: application/vnd.openxmlformats-officedocument.wordprocessingml.document');
	} elseif(endsWith($file, "pdf")) {
		header('Content-type: application/pdf');
	} elseif(endsWith($file, "doc")) {
		header('Content-type: application/msword');
	} elseif(endsWith($file, "docx")) {
		header('Content-type: application/vnd.openxmlformats-officedocument.wordprocessingml.document');
	} elseif(endsWith($file, "ppt")) {
		header('Content-type: application/vnd.ms-powerpoint');
	} elseif(endsWith($file, "pptx")) {
		header('Content-type: application/vnd.openxmlformats-officedocument.presentationml.presentation');
	} elseif(endsWith($file, "xlsx")) {
		header('Content-type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
	} else {
		die("File type not supported.");
	}

	$filePieces = explode('/', $file);
	header('Content-Disposition: attachment; filename="'.$filePieces[count($filePieces) - 1].'"');
	header('Cache-Control: must-revalidate');
    header('Pragma: public');
	header('Content-Length: ' . filesize($file));
    ob_clean();
    ob_end_flush();
    $handle = fopen($file, "rb");
    while (!feof($handle)) {
        echo fread($handle, 1000);
    }
    exit();
}

if(!isset($_SERVER['HTTPS'])) {
	die("SSL is required to view this page.");
}

if(!isset($_GET['file'])) {
	die("No file specified.");
}

if(!isset($_GET['type'])) {
	die("No file type specified.");
}

$file = $_GET['file'];
$fileType = $_GET['type'];

$user = isset($_POST['user']) ? $_POST['user'] : '';
$password = isset($_POST['password']) ? $_POST['password'] : '';

if($user == '' || $password == '') {
	showLogin($file, $fileType);
} else {
	require('../time/config.php');
	require('../../common/models/userPosition.php');
	require('../../common/models/user.php');
	require('../time/utils/loginUtils.php');

	if(isValidLogin($user, $password)) {
		downloadFile($file, $fileType);
	}

	// Invalid Login
	showLogin($file, $fileType, 'Invalid username and/or password.');
}
?>