Copyright updated, menu class added for 'home'
[shipsimu.git] / application / ship-simu / main / personell / class_SimulatorPersonell.php
index d81e4b2d8ba6c256b11970b9d2e8d8cd010ab5d4..e6236f9571129ee9dd0a121fc4fcd7e3da962d3d 100644 (file)
@@ -4,9 +4,9 @@
  *
  * @author             Roland Haeder <webmaster@ship-simu.org>
  * @version            0.0.0
- * @copyright  Copyright(c) 2007, 2008 Roland Haeder, this is free software
+ * @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
+ * @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
@@ -39,15 +39,6 @@ class SimulatorPersonell extends BasePersonell {
        protected function __construct () {
                // Call parent constructor
                parent::__construct(__CLASS__);
-
-               // Set description
-               $this->setObjectDescription("Simulationspersonal");
-
-               // Create unique ID
-               $this->createUniqueID();
-
-               // Clean-up a little
-               $this->removeSystemArray();
        }
 
        /**
@@ -82,7 +73,7 @@ class SimulatorPersonell extends BasePersonell {
                $personellInstance = new SimulatorPersonell();
 
                // Debug message
-               if ((defined('DEBUG_PERSONELL')) || (defined('DEBUG_ALL'))) $personellInstance->getDebugInstance()->output(sprintf("[%s:%d] Es werden <strong>%d</strong> Personal bereitgestellt.<br />\n",
+               if ((defined('DEBUG_PERSONELL')) || (defined('DEBUG_ALL'))) $personellInstance->debugOutput(sprintf("[%s:%d] Es werden <strong>%d</strong> Personal bereitgestellt.",
                        __CLASS__,
                        __LINE__,
                        $amountPersonell
@@ -97,7 +88,7 @@ class SimulatorPersonell extends BasePersonell {
                }
 
                // Debug message
-               if ((defined('DEBUG_PERSONELL')) || (defined('DEBUG_ALL'))) $personellInstance->getDebugInstance()->output(sprintf("[%s:%d] <strong>%d</strong> Personal bereitgestellt.<br />\n",
+               if ((defined('DEBUG_PERSONELL')) || (defined('DEBUG_ALL'))) $personellInstance->debugOutput(sprintf("[%s:%d] <strong>%d</strong> Personal bereitgestellt.",
                        __CLASS__,
                        __LINE__,
                        $amountPersonell
@@ -122,101 +113,40 @@ class SimulatorPersonell extends BasePersonell {
         * Create a SimulatorPersonell object by loading the specified personell
         * list from an existing database backend
         *
-        * @param               $idNumber               The ID number (only right part) of the list
-        * @return      $personellInstance      An instance of
-        * @throws      InvalidIDFormatException                If the given id number
-        *                                                                      $idNumber is invalid
-        * @throws      NullPointerException            If a null pointer (instance)
-        *                                                                      has been returned.
-        * @throws      NoObjectException                       If a non-object has been
-        *                                                                      returned
-        * @throws      MissingMethodException          If a required method is missing
-        * @throws      MissingSimulatorIDException     If an ID number was not found
+        * @param       $idNumber                       The ID number (only right part) of the list
+        * @return      $personellInstance      An instance of this class
+        * @throws      InvalidIDFormatException        If the given id number
+        *                                                                              $idNumber is invalid
+        * @throws      MissingSimulatorIdException             If an ID number was not found
+        * @deprecated
         */
        public final static function createSimulatorPersonellByID ($idNumber) {
-               // Add the class name if it was not found
-               if (count(explode("@", $idNumber)) < 2) {
-                       // Add class name in front of the incomplete ID number
-                       $tempID = sprintf("%s@%s", __CLASS__, $idNumber);
-               } else {
-                       // Use the direct ID number
-                       $tempID = $idNumber;
-               }
-
-               // Validate the ID number
-               if (!preg_match(sprintf("/%s\@([a-f0-9]){32}/i", __CLASS__), $tempID)) {
-                       // Invalid format
-                       throw new InvalidIDFormatException(new SimulatorPersonell(), self::EXCEPTION_ID_IS_INVALID_FORMAT);
-               }
-
                // Get instance
                $personellInstance = new SimulatorPersonell(false);
-
-               // Get database instance
-               $dbInstance = $personellInstance->getDatabaseInstance();
-
-               // Is this a valid database instance?
-               if (is_null($dbInstance)) {
-                       // No class returned
-                       throw new NullPointerException($personellInstance, self::EXCEPTION_IS_NULL_POINTER);
-               } elseif (!is_object($dbInstance)) {
-                       // Not an object! ;-(
-                       throw new NoObjectException($dbInstance, self::EXCEPTION_IS_NO_OBJECT);
-               } elseif (!method_exists($dbInstance, 'isUniqueIdUsed')) {
-                       // Required method not found
-                       throw new MissingMethodException(array($dbInstance, 'isUniqueIdUsed'), self::EXCEPTION_MISSING_METHOD);
-               }
-
-               // Is the unique ID already used? Then it must be there!
-               if (!$dbInstance->isUniqueIdUsed($tempID))  {
-                       // Entry not found!
-                       throw new MissingSimulatorIDException(array($personellInstance, $idNumber), self::EXCEPTION_SIMULATOR_ID_INVALID);
-               }
-
-               // Load the personell list and add it to this object
-               $personellInstance->loadPersonellList($tempID);
-
-               // Clean-up a little
-               $personellInstance->removeGender();
-               $personellInstance->removeNames();
-               $personellInstance->removeBirthday();
-               $personellInstance->removeSalary();
-               $personellInstance->removeEmployed();
-               $personellInstance->removeMarried();
-               $personellInstance->removeNumberFormaters();
-               //$personellInstance->removeCache();
-               $personellInstance->removeSystemArray();
-
-               // Return instance
-               return $personellInstance;
+               $personellInstance->makeDeprecated();
        }
 
        // Create personell list
        public function createPersonellList () {
-               if (is_null($this->personellList)) {
-                       if ((defined('DEBUG_PERSONELL')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Personell-Liste erstellt.<br />\n",
-                               __CLASS__,
-                               __LINE__
-                       ));
-                       $this->personellList = new FrameworkArrayObject();
-               } else {
+               // Is the list already created?
+               if ($this->personelllList instanceof FrameworkArrayObject) {
+                       // Throw an exception
                        throw new PersonellListAlreadyCreatedException($this, self::EXCEPTION_DIMENSION_ARRAY_INVALID);
-               }
+               } // END - if
+
+               // Initialize the array
+               $this->personellList = new FrameworkArrayObject("FakedPersonellList");
        }
 
        // Remove the personell list
-       private function removePersonellList () {
-               if (defined('DEBUG_PERSONELL')) $this->getDebugInstance()->output(sprintf("[%s:%d] Personell-Liste entfernt.<br />\n",
-                       __CLASS__,
-                       __LINE__
-               ));
+       private final function removePersonellList () {
                unset($this->personellList);
        }
 
        // Add new personell object to our list
        public function addRandomPersonell () {
                // Gender list...
-               $genders = array('M', 'F');
+               $genders = array("M", "F");
 
                // Create new personell members
                $personellInstance = new SimulatorPersonell();
@@ -251,7 +181,7 @@ class SimulatorPersonell extends BasePersonell {
 
                // The same (last) conditions?
                if (($serialized == $this->cacheCond) && (!is_null($this->cacheCond))) {
-                       if ((defined('DEBUG_PERSONELL')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Gecachte Liste wird verwendet.<br />\n",
+                       if ((defined('DEBUG_PERSONELL')) || (defined('DEBUG_ALL'))) $this->debugOutput(sprintf("[%s:%d] Gecachte Liste wird verwendet.",
                                __CLASS__,
                                __LINE__
                        ));
@@ -261,7 +191,7 @@ class SimulatorPersonell extends BasePersonell {
                }
 
                // Output debug message
-               if ((defined('DEBUG_PERSONELL')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Personalliste wird nach Kriterien durchsucht...<br />\n",
+               if ((defined('DEBUG_PERSONELL')) || (defined('DEBUG_ALL'))) $this->debugOutput(sprintf("[%s:%d] Personalliste wird nach Kriterien durchsucht...",
                        __CLASS__,
                        __LINE__
                ));
@@ -270,7 +200,7 @@ class SimulatorPersonell extends BasePersonell {
                $this->setCacheCond($serialized);
 
                // Create cached list
-               $this->setAllCacheList(new FrameworkArrayObject());
+               $this->setAllCacheList(new FrameworkArrayObject('FakedCacheList'));
 
                // Search all unemployed personells
                for ($idx = $this->personellList->getIterator(); $idx->valid(); $idx->next()) {
@@ -300,11 +230,6 @@ class SimulatorPersonell extends BasePersonell {
         * @return      $count  Amount of unemployed personell
         */
        public final function getAllUnemployed () {
-               if ((defined('DEBUG_PERSONELL')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Es werden alle erwerbslosen Personen gesucht.<br />\n",
-                       __CLASS__,
-                       __LINE__
-               ));
-
                // Get a temporary list
                $list = $this->getSpecialPersonellList(false);
 
@@ -318,11 +243,6 @@ class SimulatorPersonell extends BasePersonell {
         * @return      void
         */
        private function removeCache () {
-               if ((defined('DEBUG_PERSONELL')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Cache-Attribute entfernt.<br />\n",
-                       __CLASS__,
-                       __LINE__
-               ));
-
                // Remove cache data
                unset($this->cacheList);
                unset($this->cacheCond);
@@ -354,10 +274,6 @@ class SimulatorPersonell extends BasePersonell {
         * @return      void
         */
        public function resetCache () {
-               if ((defined('DEBUG_PERSONELL')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Cache-Liste zur&uuml;ckgesetzt.<br />\n",
-                       __CLASS__,
-                       __LINE__
-               ));
                $this->setAllCacheList(null);
                $this->setCacheCond("");
        }
@@ -366,10 +282,11 @@ class SimulatorPersonell extends BasePersonell {
         * Getter for surname. If no surname is set then default surnames are set
         * for male and female personells.
         *
-        * @return      $surname                The personell' surname
+        * @return      $surname        The personell' surname
         */
        public final function getSurname () {
                $surname = parent::getSurname();
+
                // Make sure every one has a surname...
                if (empty($surname)) {
                        if ($this->isMale()) {
@@ -382,27 +299,10 @@ class SimulatorPersonell extends BasePersonell {
 
                        // Set typical family name
                        parent::setFamily("Smith");
-               }
-               return $surname;
-       }
+               } // END - if
 
-       /**
-        * Saves only the personell list to the database
-        *
-        * @return      void
-        */
-       public function saveObjectToDatabase () {
-               // Get the database
-               $dbInstance = $this->getDatabaseInstance();
-
-               // Prepare the limitation object. We just need the personellList array object.
-               $limitInstance = ObjectLimits::createObjectLimits(array("personellList"));
-
-               // Limitate the saving amount
-               $dbInstance->limitObject($limitInstance);
-
-               // Save this object
-               $dbInstance->saveObject($this);
+               // Return surname
+               return $surname;
        }
 
        /**
@@ -417,62 +317,13 @@ class SimulatorPersonell extends BasePersonell {
        /**
         * Loads the mostly pre-cached personell list
         *
-        * @param               $idNumber               The ID number we shall use for looking up
+        * @param       $idNumber       The ID number we shall use for looking up
         *                                              the right data.
         * @return      void
-        * @throws      ContainerItemIsNullException    If a container item is null
-        * @throws      ContainerItemIsNoArrayException If a container item is
-        *                                                                              not an array
-        * @throws      ContainerMaybeDamagedException  If the container item
-        *                                                                              is missing the indexes
-        *                                                                              'name' and/or 'value'
-        * @see         SerializationContainer  A special container class which
-        *                                                              helps storing only some attributes
-        *                                                              of a class.
+        * @deprecated
         */
        public function loadPersonellList ($idNumber) {
-               // Get database instance
-               $dbInstance = $this->getDatabaseInstance();
-
-               // Get the serialization container within the  personell list from
-               // the database layer
-               $containerInstance = $dbInstance->getObjectFromCachedData($idNumber);
-
-               // Iterate through the whole container
-               for ($idx = $containerInstance->getIterator(); $idx->valid(); $idx->next()) {
-                       // Get current item from container
-                       $item = $idx->current();
-
-                       // Validate it a bit
-                       if (is_null($item)) {
-                               // Is null
-                               throw new ContainerItemIsNullException($this, self::EXCEPTION_CONTAINER_ITEM_IS_NULL);
-                       } elseif (!is_array($item)) {
-                               // Is not an array
-                               throw new ContainerItemIsNoArrayException($this, self::EXCEPTION_ITEM_IS_NO_ARRAY);
-                       } elseif ((!isset($item['name'])) || (!isset($item['value']))) {
-                               // Missing elements
-                               throw new ContainerMaybeDamagedException($this, self::EXCEPTION_CONTAINER_MAYBE_DAMAGED);
-                       }
-
-                       // Okay, now we can get the item and generate a valid command for eval().
-                       // We need to convert the first letter to lower-case but keep all others intact
-                       $eval = sprintf("\$this->%s = \$item['value'];",
-                               strtolower(substr($item['name'], 0, 1))
-                               .
-                               substr($item['name'], 1)
-                       );
-
-                       // Debug message
-                       if ((defined('DEBUG_EVAL')) || (defined('DEBUG_ALL'))) $this->getDebugInstance()->output(sprintf("[%s:%d] Konstruierte PHP-Anweisung: <pre><em>%s</em></pre><br />\n",
-                               __CLASS__,
-                               __LINE__,
-                               htmlentities($eval)
-                       ));
-
-                       // Run the command
-                       @eval($eval);
-               }
+               $this->makeDeprecated();
        }
 }