]> git.mxchange.org Git - shipsimu.git/blobdiff - application/ship-simu/main/user/class_ShipSimuBaseUser.php
More game classes added:
[shipsimu.git] / application / ship-simu / main / user / class_ShipSimuBaseUser.php
diff --git a/application/ship-simu/main/user/class_ShipSimuBaseUser.php b/application/ship-simu/main/user/class_ShipSimuBaseUser.php
new file mode 100644 (file)
index 0000000..563c968
--- /dev/null
@@ -0,0 +1,189 @@
+<?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]
+?>