Subversion Repositories SmartDukaan

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
16591 anikendra 1
<?php
2
/**
3
 * Methods to display or download any type of file
4
 *
5
 * CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
6
 * Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
7
 *
8
 * Licensed under The MIT License
9
 * For full copyright and license information, please see the LICENSE.txt
10
 * Redistributions of files must retain the above copyright notice.
11
 *
12
 * @copyright     Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
13
 * @link          http://cakephp.org CakePHP(tm) Project
14
 * @package       Cake.View
15
 * @since         CakePHP(tm) v 1.2.0.5714
16
 * @license       http://www.opensource.org/licenses/mit-license.php MIT License
17
 */
18
 
19
App::uses('View', 'View');
20
App::uses('CakeRequest', 'Network');
21
 
22
/**
23
 * Media View provides a custom view implementation for sending files to visitors. Its great
24
 * for making the response of a controller action be a file that is saved somewhere on the filesystem.
25
 *
26
 * An example use comes from the CakePHP internals. MediaView is used to serve plugin and theme assets,
27
 * as they are not normally accessible from an application's webroot. Unlike other views, MediaView
28
 * uses several viewVars that have special meaning:
29
 *
30
 * - `id` The filename on the server's filesystem, including extension.
31
 * - `name` The filename that will be sent to the user, specified without the extension.
32
 * - `download` Set to true to set a `Content-Disposition` header. This is ideal for file downloads.
33
 * - `path` The absolute path, including the trailing / on the server's filesystem to `id`.
34
 * - `mimeType` The mime type of the file if CakeResponse doesn't know about it.
35
 * 	Must be an associative array with extension as key and mime type as value eg. array('ini' => 'text/plain')
36
 *
37
 * ### Usage
38
 *
39
 * ```
40
 * class ExampleController extends AppController {
41
 *		public function download() {
42
 *			$this->viewClass = 'Media';
43
 *			$params = array(
44
 *				'id' => 'example.zip',
45
 *				'name' => 'example',
46
 *				'download' => true,
47
 *				'extension' => 'zip',
48
 *				'path' => APP . 'files' . DS
49
 *			);
50
 *			$this->set($params);
51
 *		}
52
 * }
53
 * ```
54
 *
55
 * @package       Cake.View
56
 * @deprecated 3.0.0 Deprecated since version 2.3, use CakeResponse::file() instead
57
 */
58
class MediaView extends View {
59
 
60
/**
61
 * Display or download the given file
62
 *
63
 * @param string $view Not used
64
 * @param string $layout Not used
65
 * @return void
66
 */
67
	public function render($view = null, $layout = null) {
68
		$name = $extension = $download = $id = $modified = $path = $cache = $mimeType = $compress = null;
69
		extract($this->viewVars, EXTR_OVERWRITE);
70
 
71
		$path = $path . $id;
72
 
73
		if (is_array($mimeType)) {
74
			$this->response->type($mimeType);
75
		}
76
 
77
		if ($cache) {
78
			if (!empty($modified) && !is_numeric($modified)) {
79
				$modified = strtotime($modified, time());
80
			} else {
81
				$modified = time();
82
			}
83
			$this->response->cache($modified, $cache);
84
		} else {
85
			$this->response->disableCache();
86
		}
87
 
88
		if ($name !== null) {
89
			if (empty($extension)) {
90
				$extension = pathinfo($id, PATHINFO_EXTENSION);
91
			}
92
			if (!empty($extension)) {
93
				$name .= '.' . $extension;
94
			}
95
		}
96
		$this->response->file($path, compact('name', 'download'));
97
 
98
		if ($compress) {
99
			$this->response->compress();
100
		}
101
	}
102
 
103
}