* @version 0.0.0 * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 Ship-Simu 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 ShipSimuBaseUser extends BaseUser implements Registerable, Updateable { /** * Protected constructor * * @param $className Name of the class * @return void */ protected function __construct ($className) { // Call parent constructor parent::__construct($className); } /** * Initializes the bank instance * * @return $bankInstance A bank instance wether just created or from registry */ protected function initBankInstance () { // Init instance $bankInstance = null; try { // Get a money bank instance from registry $bankInstance = Registry::getRegistry()->getInstance('money_bank'); } catch (NullPointerException $e) { // Instance not found in registry // @TODO We should log this exception later } // Is it there? if (is_null($bankInstance)) { // Then create a new one $bankInstance = ObjectFactory::createObjectByConfiguredName('bank_class', array($this)); // Store it in registry Registry::getRegistry()->addInstance('money_bank', $bankInstance); } // END - if // Return the instance return $bankInstance; } /** * Initializes the government instance * * @return $governmentInstance A government instance */ protected function initGovernmentInstance () { // Init instance $governmentInstance = null; try { // First get a government instance from registry $governmentInstance = Registry::getRegistry()->getInstance('government'); } catch (NullPointerException $e) { // Instance not found in registry // @TODO We should log this exception later } // Is it there? if (is_null($governmentInstance)) { // Then create a new one $governmentInstance = ObjectFactory::createObjectByConfiguredName('government_class', array($this)); // Store it in registry Registry::getRegistry()->addInstance('government', $governmentInstance); } // END - if // Return the prepared instance return $governmentInstance; } /** * Checks wether the user has reached maximum allowed companies to found * * @return $reached Wether the user has reached maximum allowed companies to found */ public function ifUserCreatedMaximumAllowedCompanies () { // Get max allowed companies to found $maxFound = $this->getConfigInstance()->getConfigEntry('max_allowed_companies_found'); // Now get a search criteria and set the user's name as criteria $searchInstance = ObjectFactory::createObjectByConfiguredName('search_criteria_class'); $searchInstance->addCriteria(UserDatabaseWrapper::DB_COLUMN_USERNAME, $this->getUserName()); $searchInstance->setLimit($maxFound); // Get a company wrapper $wrapperInstance = ObjectFactory::createObjectByConfiguredName('company_db_wrapper_class'); // Do the count-select by criteria $totalRows = $wrapperInstance->doSelectCountByCriteria($searchInstance); // Does the user have reached maximum? $reached = ($totalRows >= $maxFound); // Return the result return $reached; } /** * Checks wether the user has the required amount of points left for the specified action * * @param $action The action or configuration entry plus prefix the user wants to perform * @return $hasRequired Wether the user has the required points */ public function ifUserHasRequiredPoints ($action) { // Default is that everyone is poor... ;-) $hasRequired = false; // Init instance $pointsInstance = null; try { // Get a points instance from registry $pointsInstance = Registry::getRegistry()->getInstance('points'); } catch (NullPointerException $e) { // Instance not found in registry // @TODO We should log this exception later } // Is there an instance? if (is_null($pointsInstance)) { // Then create one $pointsInstance = ObjectFactory::createObjectByConfiguredName('user_points_class', array($this)); // And store it in registry Registry::getRegistry()->addInstance('points', $pointsInstance); } // END - if // Just forward this request to the user points class $hasRequired = $pointsInstance->ifUserHasRequiredPoints($action); // Return the result return $hasRequired; } /** * Determines if government can still pay a "virtual training course" in general * * @return $ifGovHelps Wether if government helps the user with a virtual training course */ public function ifGovernmentPaysTraining () { // By default they want to help. $ifGovHelps = true; // Initialize government instance $governmentInstance = $this->initGovernmentInstance(); // Then ask the government if they want to pay a "startup help" to the user $ifGovHelps = ($governmentInstance->ifGovernmentAlreadyPayedTraining()); // Return result here return $ifGovHelps; } /** * Determines if government can still pay a "startup help" to the user * * @return $ifGovHelps Wether if government helps the user with some startup money */ public function ifGovernmentPaysStartupHelp () { // By default they want to help. $ifGovHelps = true; // Initialize government instance $governmentInstance = $this->initGovernmentInstance(); // Then ask the government if they want to pay a "startup help" to the user $ifGovHelps = ($governmentInstance->ifGovernmentPayedMaxmimumStartupHelp()); // Return result here return $ifGovHelps; } /** * Checks wether the user can take points from the money bank * * @return $bankLends Wether the money bank is able to lend money * @todo Need to implement MoneyBank::ifBankLendsMoreMoney() */ public function ifUserAllowedTakeCreditsFromMoneyBank () { // Per default the money bank cannot pay $bankLends = false; // Initialize bank instance $bankInstance->initBankInstance(); // Does the money bank lend more money? $bankLends = ($bankInstance->ifBankLendsMoreMoney()); // Return result return $bankLends; } /** * Checks wether the user has maximum credits with the money bank. This * should be done seperately from checking if the user is allowed to take * credits from the bank. * * @return $hasMaxCredits Wether the user has maximum credits with the bank * @todo Need to check the bank if they can lend more money */ public function ifUserHasMaximumCreditsWithMoneyBank () { // For default he can still get money $hasMaxCredits = false; // Initialize the bank instance $bankInstance = $this->initBankInstance(); // Now check if the user has maximum credits $hasMaxCredits = ($bankInstance->ifUserHasMaxCredits()); // Return the result return $hasMaxCredits; } /** * Checks wether the money bank has opened * * @return $hasOpened Wether the money bank has opened */ public function ifMoneyBankHasOpened () { // Default is not opened $hasOpened = false; // Initialize the bank instance $bankInstance = $this->initBankInstance(); // Has this bank opened? $hasOpened = ($bankInstance->ifMoneyBankHasOpened()); // Return result return $hasOpened; } } // [EOF] ?>