mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-09-09 03:01:18 +02:00
BUG Disabled disruptive test case in DirectorTest API RequestProcessor and VersionedRequestFilter now both correctly implement RequestFilter Better PHPDoc on RequestFilter and implementations
48 lines
1.0 KiB
PHP
48 lines
1.0 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Represents a request processer that delegates pre and post request handling to nested request filters
|
|
*
|
|
* @package framework
|
|
* @subpackage control
|
|
*/
|
|
class RequestProcessor implements RequestFilter {
|
|
|
|
/**
|
|
* List of currently assigned request filters
|
|
*
|
|
* @var array
|
|
*/
|
|
private $filters = array();
|
|
|
|
public function __construct($filters = array()) {
|
|
$this->filters = $filters;
|
|
}
|
|
|
|
/**
|
|
* Assign a list of request filters
|
|
*
|
|
* @param array $filters
|
|
*/
|
|
public function setFilters($filters) {
|
|
$this->filters = $filters;
|
|
}
|
|
|
|
public function preRequest(SS_HTTPRequest $request, Session $session, DataModel $model) {
|
|
foreach ($this->filters as $filter) {
|
|
$res = $filter->preRequest($request, $session, $model);
|
|
if ($res === false) {
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
|
|
public function postRequest(SS_HTTPRequest $request, SS_HTTPResponse $response, DataModel $model) {
|
|
foreach ($this->filters as $filter) {
|
|
$res = $filter->postRequest($request, $response, $model);
|
|
if ($res === false) {
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
} |