<?php

namespace Vn\Web;

class Util {
	/**
	 * Reads a file and writes it to the output buffer. 
	 *
	 * @param string file The file path
	 * @param boolean useXsendfile Wether to use the apache module Xsendfile
	 */
	static function printFile($file, $useXsendfile = FALSE) {
		if (!file_exists($file)) {
			http_response_code(404);
			return;
		}

		$finfo = new \finfo(FILEINFO_MIME_TYPE);
		$mimeType = $finfo->file($file);

		if ($useXsendfile) {
			header("X-Sendfile: $file");
			header("Content-Type: $mimeType");
		} else {
			header('Content-Description: File Transfer');
			header("Content-Type: $mimeType");
			header('Content-Disposition: attachment; filename="'. basename($file) .'"');
			header('Expires: 0');
			header('Cache-Control: must-revalidate');
			header('Pragma: public');
			header('Content-Length: '. filesize($file));

			set_time_limit(0);
			readfile($file);
		}
	}
}