mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-08-28 21:46:10 +02:00
filters was a DI property that could only be set via constructor. This meant that modules couldnt add a filter without interfering with other modules. With this change you can now add a config block like: Injector: RequestProcessor: properties: filters: - "%$MyFilter" Which will add a filter to RequestProcessors list of filters
41 lines
915 B
PHP
41 lines
915 B
PHP
<?php
|
|
|
|
/**
|
|
* Description of RequestProcessor
|
|
*
|
|
* @author marcus@silverstripe.com.au
|
|
* @license BSD License http://silverstripe.org/bsd-license/
|
|
*/
|
|
class RequestProcessor {
|
|
|
|
private $filters = array();
|
|
|
|
public function __construct($filters = array()) {
|
|
$this->filters = $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;
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Filter executed AFTER a request
|
|
*/
|
|
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;
|
|
}
|
|
}
|
|
}
|
|
} |