+<?php
+/**
+ * A special member class for Ship-Simu
+ *
+ * @author Roland Haeder <webmaster@ship-simu.org>
+ * @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 <http://www.gnu.org/licenses/>.
+ */
+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);
+ }
+
+ /**
+ * 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()->readConfig('max_allowed_companies_found');
+
+ // Get a company wrapper
+ $wrapperInstance = ObjectFactory::createObjectByConfiguredName('company_db_wrapper_class');
+
+ // Now get a search criteria and set the user's name as criteria
+ $criteriaInstance = ObjectFactory::createObjectByConfiguredName('search_criteria_class');
+ $criteriaInstance->addCriteria(UserDatabaseWrapper::DB_COLUMN_USERNAME, $this->getUserName());
+ $criteriaInstance->setLimit($maxFound);
+
+ // Do the count-select by criteria
+ $totalRows = $wrapperInstance->doSelectCountByCriteria($criteriaInstance);
+
+ // 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;
+
+ // Get a points instance from registry
+ $pointsInstance = Registry::getRegistry()->getInstance('points');
+
+ // Is there an instance?
+ if (is_null($pointsInstance)) {
+ // Then create one
+ $pointsInstance = ObjectFactory::createObjectByConfiguredName('user_ppints_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 the goverment can still pay a "startup help" to the user
+ *
+ * @return $ifGovHelped Wether if the goverment has helped the user with startup
+ */
+ public function ifGovermentPaysStartupHelp () {
+ // By default they have not payed, which is indeed good. ;-)
+ $ifGovHelped = false;
+
+ // First get a goverment instance from registry
+ $govermentInstance = Registry::getRegistry()->getInstance('goverment');
+
+ // Is it there?
+ if (is_null($govermentInstance)) {
+ // Then create a new one
+ $govermentInstance = ObjectFactory::createObjectByConfiguredName('goverment_class', array($this));
+
+ // Store it in registry
+ Registry::getRegistry()->addInstance('goverment', $govermentInstance);
+ } // END - if
+
+ // Then ask the goverment if they want to pay a "startup help" to the user
+ if ($govermentInstance->ifGovermentAlreadyPayedsStartupHelp()) {
+ // They can't pay anymore to the user (excited amount)
+ $ifGovHelped = true;
+ } // END - if
+
+ // Return result here
+ return $ifGovHelped;
+ }
+
+ /**
+ * Checks wether the user can take points from the money bank
+ *
+ * @return $bankLends Wether the money bank is able to lend money
+ */
+ public function ifUserAllowTakeCreditsFromMoneyBank () {
+ // Per default the money bank cannot pay
+ $bankLends = false;
+
+ // Get a money bank instance from registry
+ $bankInstance = Registry::getRegistry()->getInstance('money_bank');
+
+ // 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
+
+ // Does the money bank lend more money?
+ if ($bankInstance->ifBankLendsMoreMoney()) {
+ // Okay, that they will do
+ $bankLends = true;
+ } // END - if
+
+ // 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
+ */
+ public function ifUserHasMaximumCreditsWithMoneyBank () {
+ // For default he can still get money
+ $hasMaxCredits = false;
+
+ // Get a money bank instance from registry
+ $bankInstance = Registry::getRegistry()->getInstance('money_bank');
+
+ // 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
+
+ // Now check if the user has maximum credits
+ if ($bankInstance->ifUserHasMaxCredits()) {
+ // Yes, he does!
+ $hasMaxCredits = true;
+ } // END - if
+
+ // Return the result
+ return $hasMaxCredits;
+ }
+}
+
+// [EOF]
+?>