Blame | Last modification | View Log | RSS feed
<?php/*** CakePHP(tm) : Rapid Development Framework (http://cakephp.org)* Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)** Licensed under The MIT License* For full copyright and license information, please see the LICENSE.txt* Redistributions of files must retain the above copyright notice.** @copyright Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)* @link http://cakephp.org CakePHP(tm) Project* @package Cake.Routing* @since CakePHP(tm) v 2.2* @license http://www.opensource.org/licenses/mit-license.php MIT License*/App::uses('CakeEventListener', 'Event');/*** This abstract class represents a filter to be applied to a dispatcher cycle. It acts as as* event listener with the ability to alter the request or response as needed before it is handled* by a controller or after the response body has already been built.** @package Cake.Routing*/abstract class DispatcherFilter implements CakeEventListener {/*** Default priority for all methods in this filter** @var int*/public $priority = 10;/*** Settings for this filter** @var array*/public $settings = array();/*** Constructor.** @param array $settings Configuration settings for the filter.*/public function __construct($settings = array()) {$this->settings = Hash::merge($this->settings, $settings);}/*** Returns the list of events this filter listens to.* Dispatcher notifies 2 different events `Dispatcher.before` and `Dispatcher.after`.* By default this class will attach `preDispatch` and `postDispatch` method respectively.** Override this method at will to only listen to the events you are interested in.** @return array*/public function implementedEvents() {return array('Dispatcher.beforeDispatch' => array('callable' => 'beforeDispatch', 'priority' => $this->priority),'Dispatcher.afterDispatch' => array('callable' => 'afterDispatch', 'priority' => $this->priority),);}/*** Method called before the controller is instantiated and called to serve a request.* If used with default priority, it will be called after the Router has parsed the* URL and set the routing params into the request object.** If a CakeResponse object instance is returned, it will be served at the end of the* event cycle, not calling any controller as a result. This will also have the effect of* not calling the after event in the dispatcher.** If false is returned, the event will be stopped and no more listeners will be notified.* Alternatively you can call `$event->stopPropagation()` to achieve the same result.** @param CakeEvent $event container object having the `request`, `response` and `additionalParams`* keys in the data property.* @return CakeResponse|bool*/public function beforeDispatch(CakeEvent $event) {}/*** Method called after the controller served a request and generated a response.* It is possible to alter the response object at this point as it is not sent to the* client yet.** If false is returned, the event will be stopped and no more listeners will be notified.* Alternatively you can call `$event->stopPropagation()` to achieve the same result.** @param CakeEvent $event container object having the `request` and `response`* keys in the data property.* @return mixed boolean to stop the event dispatching or null to continue*/public function afterDispatch(CakeEvent $event) {}}