* @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 DefaultNewsReader extends BaseFrameworkSystem implements ReadableNews, Registerable { /** * Protected constructor * * @return void */ protected function __construct () { // Call parent constructor parent::__construct(__CLASS__); // Clean up a little $this->removeNumberFormaters(); $this->removeSystemArray(); } /** * Creates an instance of this reader by a provided request instance * * @param $requestInstance An instance of a Requestable class * @return $readerInstance An instance of this reader class */ public final static function createDefaultNewsReader (Requestable $requestInstance) { // Get a new instance $readerInstance = new DefaultNewsReader(); // Set request instance $readerInstance->setRequestInstance($requestInstance); // Return prepared instance return $readerInstance; } /** * Initializes this reader class by pre-fetching news depending on "page" * (outside or login area), which amount of news and how much to skip * * @return void */ public function initializeReader () { // Get "page" for saving some calls $page = $this->getRequestInstance()->getRequestElement('page'); // First get a wrapper instance $wrapperInstance = ObjectFactory::createObjectByConfiguredName('news_db_wrapper_class'); // Next create a searchable criteria instance $criteriaInstance = ObjectFactory::createObjectByConfiguredName('search_criteria_class'); // Add the page as criteria to it at lease $criteriaInstance->addCriteria("page", $page); // Add limitation from config $criteriaInstance->setLimit($this->getConfigInstance()->readConfig("news_{$page}_limit")); // Get a resultInstance back from the database $resultInstance = $wrapperInstance->doSelectByCriteria($criteriaInstance); // Save that resultInstance in this class $this->setResultInstance($resultInstance); } } // [EOF] ?>