Subversion Repositories SmartDukaan

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
16591 anikendra 1
<?php
2
/**
3
 * CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
4
 * Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
5
 *
6
 * Licensed under The MIT License
7
 * For full copyright and license information, please see the LICENSE.txt
8
 * Redistributions of files must retain the above copyright notice.
9
 *
10
 * @copyright     Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
11
 * @link          http://cakephp.org CakePHP(tm) Project
12
 * @since         CakePHP(tm) v 2.2
13
 * @license       http://www.opensource.org/licenses/mit-license.php MIT License
14
 */
15
 
16
App::uses('DispatcherFilter', 'Routing');
17
 
18
/**
19
 * This filter will check whether the response was previously cached in the file system
20
 * and served it back to the client if appropriate.
21
 *
22
 * @package Cake.Routing.Filter
23
 */
24
class CacheDispatcher extends DispatcherFilter {
25
 
26
/**
27
 * Default priority for all methods in this filter
28
 * This filter should run before the request gets parsed by router
29
 *
30
 * @var int
31
 */
32
	public $priority = 9;
33
 
34
/**
35
 * Checks whether the response was cached and set the body accordingly.
36
 *
37
 * @param CakeEvent $event containing the request and response object
38
 * @return CakeResponse with cached content if found, null otherwise
39
 */
40
	public function beforeDispatch(CakeEvent $event) {
41
		if (Configure::read('Cache.check') !== true) {
42
			return;
43
		}
44
 
45
		$path = $event->data['request']->here();
46
		if ($path === '/') {
47
			$path = 'home';
48
		}
49
		$prefix = Configure::read('Cache.viewPrefix');
50
		if ($prefix) {
51
			$path = $prefix . '_' . $path;
52
		}
53
		$path = strtolower(Inflector::slug($path));
54
 
55
		$filename = CACHE . 'views' . DS . $path . '.php';
56
 
57
		if (!file_exists($filename)) {
58
			$filename = CACHE . 'views' . DS . $path . '_index.php';
59
		}
60
		if (file_exists($filename)) {
61
			$controller = null;
62
			$view = new View($controller);
63
			$view->response = $event->data['response'];
64
			$result = $view->renderCache($filename, microtime(true));
65
			if ($result !== false) {
66
				$event->stopPropagation();
67
				$event->data['response']->body($result);
68
				return $event->data['response'];
69
			}
70
		}
71
	}
72
 
73
}