* @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.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 FilterChain extends BaseFrameworkSystem {
/**
* All filters together
*/
private $filters = array();
/**
* Protected constructor
*
* @return void
*/
protected function __construct () {
// Call parent constructor
parent::__construct(__CLASS__);
// Set part description
$this->setObjectDescription("A filter chain class");
// Create unique ID number
$this->generateUniqueId();
// Clean up a little
$this->removeNumberFormaters();
$this->removeSystemArray();
}
/**
* Creates an instance of this class
*
* @return $chainInstance An instance of this class
*/
public final static function createFilterChain () {
// Get a new instance
$chainInstance = new FilterChain();
// Return the prepared instance
return $chainInstance;
}
/**
* Add a new filter
*
* @param $filerInstance An instance of a filter class
* @return void
*/
public final function addFilter (Filterable $filterInstance) {
$this->filters[] = $filterInstance;
}
/**
* Process all added filters
*
* @param $requestInstance An instance of a request class
* @param $responseInstance An instance of a response class
* @return void
*/
public function processFilters (Requestable $requestInstance, Responseable $responseInstance) {
// Run all filters
//* DEBUG */ echo "COUNT=".count($this->filters)."
\n";
foreach ($this->filters as $filterInstance) {
// Execute this filter
//* DEBUG */ echo "FILTER: ".$filterInstance->__toString().": Processing started.
\n";
$filterInstance->execute($requestInstance, $responseInstance);
//* DEBUG */ echo "FILTER: ".$filterInstance->__toString().": Processing ended.
\n";
}
}
}
// [EOF]
?>