/usr/share/php/Horde/Controller/FilterRunner.php is in php-horde-controller 2.0.1-7.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 | <?php
/**
* Collects filters and executes them around a controller
*
* @category Horde
* @package Controller
* @author Bob McKee <bob@bluestatedigital.com>
* @author James Pepin <james@bluestatedigital.com>
* @license http://www.horde.org/licenses/bsd BSD
*/
class Horde_Controller_FilterRunner implements Horde_Controller_FilterCollection
{
/**
* @var Horde_Controller
*/
protected $_controller;
/**
* @var array
*/
protected $_preFilters = array();
/**
* @var array
*/
protected $_postFilters = array();
/**
*/
public function __construct(Horde_Controller $controller)
{
$this->_controller = $controller;
}
/**
* Append filter to prefilters array
*
* @param Horde_Controller_PreFilter $filter
*/
public function addPreFilter(Horde_Controller_PreFilter $filter)
{
array_push($this->_preFilters, $filter);
}
/**
* Prepend fitler to postfilters array
*
* @param Horde_Controller_PostFilter $filter
*/
public function addPostFilter(Horde_Controller_PostFilter $filter)
{
array_unshift($this->_postFilters, $filter);
}
/**
* Executes filters and controller method. Execution happens in the following order:
*
* - Run processRequest() on prefilters in first-in-first-out order
* - Run processRequest() on controller
* - Run processResponse() on postfilters in first-in-last-out order
*
* @param Horde_Controller_Request $request
* @param Horde_Controller_Response $response
*
* @return Horde_Controller_Response
*/
public function processRequest(Horde_Controller_Request $request, Horde_Controller_Response $response)
{
if ($this->_applyPreFilters($request, $response) !== Horde_Controller_PreFilter::REQUEST_HANDLED) {
$this->_controller->processRequest($request, $response);
$this->_applyPostFilters($request, $response);
}
return $response;
}
/**
*/
protected function _applyPreFilters(Horde_Controller_Request $request, Horde_Controller_Response $response)
{
foreach ($this->_preFilters as $filter) {
if ($filter->processRequest($request, $response, $this->_controller) === Horde_Controller_PreFilter::REQUEST_HANDLED) {
return Horde_Controller_PreFilter::REQUEST_HANDLED;
}
}
return Horde_Controller_PreFilter::REQUEST_CONTINUE;
}
/**
*/
protected function _applyPostFilters(Horde_Controller_Request $request, Horde_Controller_Response $response)
{
foreach ($this->_postFilters as $filter) {
$filter->processResponse($request, $response, $this->_controller);
}
}
}
|