From 90e103cb445f53c4ebd18c3f43dff51cbf0aae73 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Roland=20H=C3=A4der?= Date: Sun, 2 Aug 2009 10:25:38 +0000 Subject: [PATCH] Before a filter chain is executed we check if it is there --- .gitattributes | 1 + .../class_InvalidFilterChainException.php | 46 +++++++++++++++++++ .../main/controller/class_BaseController.php | 11 +++++ 3 files changed, 58 insertions(+) create mode 100644 inc/classes/exceptions/filter/class_InvalidFilterChainException.php diff --git a/.gitattributes b/.gitattributes index dfdc488d..baec4b09 100644 --- a/.gitattributes +++ b/.gitattributes @@ -44,6 +44,7 @@ inc/classes/exceptions/database/local_file/class_SavePathWriteProtectedException inc/classes/exceptions/database/wrapper/.htaccess -text inc/classes/exceptions/filter/.htaccess -text inc/classes/exceptions/filter/class_FilterChainException.php -text +inc/classes/exceptions/filter/class_InvalidFilterChainException.php -text inc/classes/exceptions/helper/.htaccess -text inc/classes/exceptions/helper/class_FormClosedException.php -text inc/classes/exceptions/helper/class_FormGroupClosedException.php -text diff --git a/inc/classes/exceptions/filter/class_InvalidFilterChainException.php b/inc/classes/exceptions/filter/class_InvalidFilterChainException.php new file mode 100644 index 00000000..35ca3209 --- /dev/null +++ b/inc/classes/exceptions/filter/class_InvalidFilterChainException.php @@ -0,0 +1,46 @@ + + * @version 0.0.0 + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 Core Developer Team + * @license GNU GPL 3.0 or any newer version + * @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 + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +class InvalidFilterChainException extends FrameworkException { + /** + * The super constructor for all exceptions + * + * @param $filterInstance Instance of a filter class + * @param $code Exception code for better debugging + * @return void + */ + public function __construct(array $filterArray, $code) { + // Construct the message + $message = sprintf("[%s:%d] Filter chain %s is not initialized.", + $filterArray[0]->__toString(), + $this->getLine(), + $filterArray[1] + ); + + // Call the parent exception + parent::__construct($message, $code); + } +} + +// [EOF] +?> diff --git a/inc/classes/main/controller/class_BaseController.php b/inc/classes/main/controller/class_BaseController.php index 5e56de17..2a1c50f9 100644 --- a/inc/classes/main/controller/class_BaseController.php +++ b/inc/classes/main/controller/class_BaseController.php @@ -29,6 +29,9 @@ class BaseController extends BaseFrameworkSystem implements Registerable { */ private $filterChains = array(); + // Exception constants + const EXCEPTION_FILTER_CHAIN_INVALID = 0xf10; + /** * Protected constructor * @@ -101,8 +104,16 @@ class BaseController extends BaseFrameworkSystem implements Registerable { * @param $requestInstance An instance of a request class * @param $responseInstance An instance of a response class * @return void + * @throws InvalidFilterChainException If the filter chain is invalid */ protected function executeFilters ($filterGroup, Requestable $requestInstance, Responseable $responseInstance) { + // Test if the filter is there + if (!isset($this->filterChains[$filterGroup])) { + // Throw an exception here + throw new InvalidFilterChainException(array($this, $filterGroup), self::EXCEPTION_FILTER_CHAIN_INVALID); + } // END - if + + // Run all filters $this->filterChains[$filterGroup]->processFilters($requestInstance, $responseInstance); } -- 2.39.5