Copyright updated, menu class added for 'home'
[shipsimu.git] / application / ship-simu / main / class_Merchant.php
index 1ef6dbd5608a23f18217b8f477567952534e1ea9..bb321d6d48a0eba625bd4ef35e9c29a37ba2cd4f 100644 (file)
@@ -1,6 +1,26 @@
 <?php
-
-// Die Haendler-Klasse
+/**
+ * A class for merchants which can trade items
+ *
+ * @author             Roland Haeder <webmaster@ship-simu.org>
+ * @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 <http://www.gnu.org/licenses/>.
+ */
 class Merchant extends BaseFrameworkSystem {
        // Name des Haendlers
        private $merchantName   = "Namenloser H&auml;ndler";
@@ -12,39 +32,25 @@ class Merchant extends BaseFrameworkSystem {
        private $harborInstance = null;
 
        // Konstruktor
-       private function __construct () {
-               // Eltern-Konstruktor aufrufen
-               parent::constructor(__CLASS__);
-
-               // Debug message
-               if (((defined('DEBUG_MERCHANT')) || (defined('DEBUG_ALL'))) && (defined('DEBUG_CONSTRUCT'))) {
-                       $this->getDebugInstance()->output(sprintf("[%s:%d] Konstruktor erreicht.<br />\n",
-                               __CLASS__,
-                               __LINE__
-                       ));
-               }
-
-               // Beschreibung setzen
-               $this->setPartDescr("H&auml;ndler");
-
-               // Unique-ID erzeugen
-               $this->createUniqueID();
+       protected function __construct () {
+               // Call parent constructor
+               parent::__construct(__CLASS__);
 
                // Clean up a little
                $this->removeSystemArray();
        }
 
        // Haendler mit Namen erzeugen
-       public static function createMerchant ($merchantName, Harbor $harborInstance) {
+       public final static function createMerchant ($merchantName, Harbor $harborInstance) {
                // String absichern
                $merchantName = (string) $merchantName;
 
-               // Instanz holen
+               // Get new instance
                $merchantInstance = new Merchant();
 
                // Debug message
                if ((defined('DEBUG_MERCHANT')) || (defined('DEBUG_ALL'))) {
-                       $merchantInstance->getDebugInstance()->output(sprintf("[%s:%d] Ein H&auml;ndler <strong>%s</strong> wird angelegt und soll sich am <strong>%s</strong> niederlassen.<br />\n",
+                       $merchantInstance->debugOutput(sprintf("[%s:%d] Ein H&auml;ndler <strong>%s</strong> wird angelegt und soll sich am <strong>%s</strong> niederlassen.",
                                __CLASS__,
                                __LINE__,
                                $merchantName,
@@ -67,120 +73,38 @@ class Merchant extends BaseFrameworkSystem {
 
        // Initialize pricing list
        private function createPriceList () {
-               if ((defined('DEBUG_MERCHANT')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Der H&auml;ndler <strong>%s</strong> erh&auml;lt eine leere Preisliste.<br />\n",
-                       __CLASS__,
-                       __LINE__,
-                       $this->getMerchantName()
-               ));
-               $this->priceList = new FrameworkArrayObject();
+               $this->priceList = new FrameworkArrayObject("FakedPriceList");
        }
 
        // Setter for merchant name
-       public function setMerchantName ($merchantName) {
-               // Secure string
-               $merchantName = (string) $merchantName;
-
+       public final function setMerchantName ($merchantName) {
                // Debug message
-               if ((defined('DEBUG_MERCHANT')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Der H&auml;ndlername <strong>%s</strong> ist nun bekannt.<br />\n",
-                       __CLASS__,
-                       __LINE__,
-                       $merchantName
-               ));
-               $this->merchantName = $merchantName;
+               $this->merchantName = (string) $merchantName;
        }
 
        // Getter for merchant name
-       public function getMerchantName () {
-               if ((defined('DEBUG_MERCHANT')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Der H&auml;ndlername <strong>%s</strong> wird verlangt.<br />\n",
-                       __CLASS__,
-                       __LINE__,
-                       $this->merchantName
-               ));
+       public final function getMerchantName () {
                return $this->merchantName;
        }
 
        // Setter for harbor instance
-       public function setHarborInstance (Harbor $harborInstance) {
-               if ((defined('DEBUG_MERCHANT')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Der H&auml;ndler <strong>%s</strong> l&auml;sst sich am <strong>%s</strong> nieder.<br />\n",
-                       __CLASS__,
-                       __LINE__,
-                       $this->getMerchantName(),
-                       $harborInstance->getHarborName()
-               ));
+       public final function setHarborInstance (Harbor $harborInstance) {
                $this->harborInstance = $harborInstance;
        }
 
        // Getter for harbor instance
-       public function getHarborInstance () {
-               if ((defined('DEBUG_MERCHANT')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Der H&auml;ndler <strong>%s</strong> hat sich am <strong>%s</strong> niedergelassen.<br />\n",
-                       __CLASS__,
-                       __LINE__,
-                       $this->getMerchantName(),
-                       $harborInstance->getHarborName()
-               ));
+       public final function getHarborInstance () {
                return $this->harborInstance;
        }
 
        // Add new item to merchant's price list
-       public function addItemToPriceList (ItemIsTradeable $itemInstance, $price) {
-               // Secure pricing
-               $price = (float) $price;
-
-               // Debug message
-               if ((defined('DEBUG_MERCHANT')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Der H&auml;ndler <strong>%s</strong> kann nun das Schiffsteil <strong>%s</strong> &quot;<strong>%s</strong>&quot; zu <strong>%s</strong> verkaufen.<br />\n",
-                       __CLASS__,
-                       __LINE__,
-                       $this->getMerchantName(),
-                       $itemInstance->__toString(),
-                       $itemInstance->getPartDescr(),
-                       $this->formatCurrency($price)
-               ));
-
-               // Construct pricing item and add it to the list
-               $this->priceList->append(array(
-                       'item'  => $itemInstance,
-                       'price' => $price
-               ));
-
-               // Remove price attribute
-               $itemInstance->removePrice();
+       public function addItemToPriceList (TradeableItem $itemInstance, $price) {
+               $this->makeDeprecated();
        }
 
        // Get a price from the merchant's list
-       public function getPriceFromList (ItemIsTradeable $itemInstance) {
-               $price = 0;
-
-               // Iterate throw whole list
-               for ($iter = $this->priceList->getIterator(); $iter->valid(); $iter->next()) {
-                       // Get current item
-                       $item = $iter->current();
-
-                       // Does this item match? The unique ID may not work...
-                       if ($item['item']->itemMatches($itemInstance)) {
-                               // Extract price and stop searching
-                               $price = $item['price'];
-                               break;
-                       }
-               }
-
-               // Was the item found?
-               if ($price === 0) {
-                       // Throw exception
-                       throw new ItemNotInPriceListException($itemInstance, self::EXCEPTION_ITEM_NOT_IN_PRICE_LIST);
-               }
-
-               // Return price
-               return $price;
-       }
-
-       /**
-        * Stub!
-        */
-       public function saveObjectToDatabase () {
-               $this->getDebugInstance()->output(sprintf("[%s:] Stub <strong>%s</strong> erreicht.",
-                       $this->__toString(),
-                       __FUNCTION__
-               ));
+       public final function getPriceFromList (TradeableItem $itemInstance) {
+               $this->makeDeprecated();
        }
 }