* @version 0.0.0 * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2012 Core Developer Team * @license GNU GPL 3.0 or any newer version * @link http://www.shipsimu.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__); } /** * 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 static final 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->setConfiguredLimit('news_' . $page . '_limit'); // Get a resultInstance back from the database $resultInstance = $wrapperInstance->doSelectByCriteria($criteriaInstance); // Save that resultInstance in this class $this->setResultInstance($resultInstance); } } // [EOF] ?>