X-Git-Url: https://git.mxchange.org/?p=shipsimu.git;a=blobdiff_plain;f=inc%2Fclasses%2Fmain%2Fcontroller%2Fclass_BaseController.php;h=1686f42f7c23238c475019c33017ad2df808915b;hp=82dba69d6f22d4bec610326317c56ac54909f389;hb=86553167136d11d44e1d938e964134c038785e3e;hpb=1d128d8532290e84885d09d2d3f0060abd08e49e diff --git a/inc/classes/main/controller/class_BaseController.php b/inc/classes/main/controller/class_BaseController.php index 82dba69..1686f42 100644 --- a/inc/classes/main/controller/class_BaseController.php +++ b/inc/classes/main/controller/class_BaseController.php @@ -1,12 +1,14 @@ - * @version 0.3.0 + * @version 0.0.0 * @copyright Copyright(c) 2007, 2008 Roland Haeder, this is free software * @license GNU GPL 3.0 or any newer version - * @link http://www.mxchange.org + * @link http://www.ship-simu.org * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -21,18 +23,83 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -class BaseController extends BaseFrameworkSystem { +class BaseController extends BaseFrameworkSystem implements Registerable { + /** + * Pre filter chain instance + */ + private $preFilterChain = null; + + /** + * Post filter chain instance + */ + private $postFilterChain = null; + /** * Protected constructor * + * @param $className Name of the class * @return void */ - protected function __construct () { + protected function __construct ($className) { // Call parent constructor - parent::__construct(__CLASS__); + parent::__construct($className); // Clean up a little $this->removeNumberFormaters(); + $this->removeSystemArray(); + + // Initialize both filter chains + $this->preFilterChain = ObjectFactory::createObjectByConfiguredName('filter_chain_class'); + $this->postFilterChain = ObjectFactory::createObjectByConfiguredName('filter_chain_class'); + + // Add this controller to the registry + Registry::getRegistry()->addInstance('controller', $this); + } + + /** + * Adds a filter to the pre filter chain + * + * @param $filterInstance An instance of a filter + * @return void + */ + public function addPreFilter (Filterable $filterInstance) { + // Add the pre filter + $this->preFilterChain->addFilter($filterInstance); + } + + /** + * Adds a filter to the post filter chain + * + * @param $filterInstance An instance of a filter + * @return void + */ + public function addPostFilter (Filterable $filterInstance) { + // Add the post filter + $this->postFilterChain->addFilter($filterInstance); + } + + /** + * Executes all pre filters + * + * @param $requestInstance An instance of a request class + * @param $responseInstance An instance of a response class + * @return void + */ + protected function executePreFilters (Requestable $requestInstance, Responseable $responseInstance) { + // Execute all pre filters + $this->preFilterChain->processFilters($requestInstance, $responseInstance); + } + + /** + * Executes all post filters + * + * @param $requestInstance An instance of a request class + * @param $responseInstance An instance of a response class + * @return void + */ + protected function executePostFilters (Requestable $requestInstance, Responseable $responseInstance) { + // Execute all post filters + $this->postFilterChain->processFilters($requestInstance, $responseInstance); } }