]> git.mxchange.org Git - shipsimu.git/blobdiff - inc/classes/main/user/class_User.php
User login (non-guest) basicly finished, news stubs added, registration and final...
[shipsimu.git] / inc / classes / main / user / class_User.php
index cc9c44348058bd2e9645030a5d2950a22554955e..2221111eabda84589ede9bfc3e360934065fd4a9 100644 (file)
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
 class User extends BaseFrameworkSystem implements ManageableUser, Registerable {
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
 class User extends BaseFrameworkSystem implements ManageableUser, Registerable {
+       /**
+        * Instance of the database result
+        */
+       private $resultInstance = null;
+
        /**
         * Username of current user
         */
        /**
         * Username of current user
         */
@@ -104,6 +109,38 @@ class User extends BaseFrameworkSystem implements ManageableUser, Registerable {
                return $userInstance;
        }
 
                return $userInstance;
        }
 
+       /**
+        * "Getter" for databse entry
+        *
+        * @return      $entry  An array with database entries
+        * @throws      NullPointerException    If the database result is not found
+        * @throws      InvalidDatabaseResultException  If the database result is invalid
+        */
+       private function getDatabaseEntry () {
+               // Is there an instance?
+               if (is_null($this->resultInstance)) {
+                       // Throw new exception
+                       throw new NullPointerException($this, self::EXCEPTION_IS_NULL_POINTER);
+               } // END - if
+
+               // Rewind it
+               $this->resultInstance->rewind();
+
+               // Do we have an entry?
+               if (!$this->resultInstance->valid()) {
+                       throw new InvalidDatabaseResultException(array($this, $this->resultInstance), DatabaseResult::EXCEPTION_INVALID_DATABASE_RESULT);
+               } // END - if
+
+               // Get next entry
+               $this->resultInstance->next();
+
+               // Fetch it
+               $entry = $this->resultInstance->current();
+
+               // And return it
+               return $entry;
+       }
+
        /**
         * Setter for username
         *
        /**
         * Setter for username
         *
@@ -151,21 +188,27 @@ class User extends BaseFrameworkSystem implements ManageableUser, Registerable {
                // By default the username does not exist
                $exists = false;
 
                // By default the username does not exist
                $exists = false;
 
-               // Get a UserDatabaseWrapper instance
-               $wrapperInstance = ObjectFactory::createObjectByConfiguredName('user_db_wrapper_class');
+               // Is a previous result there?
+               if (is_null($this->resultInstance)) {
+                       // Get a UserDatabaseWrapper instance
+                       $wrapperInstance = ObjectFactory::createObjectByConfiguredName('user_db_wrapper_class');
 
 
-               // Create a search criteria
-               $criteriaInstance = ObjectFactory::createObjectByConfiguredName('search_criteria_class');
+                       // Create a search criteria
+                       $criteriaInstance = ObjectFactory::createObjectByConfiguredName('search_criteria_class');
 
 
-               // Add the username as a criteria and set limit to one entry
-               $criteriaInstance->addCriteria(UserDatabaseWrapper::DB_COLUMN_USERNAME, $this->getUsername());
-               $criteriaInstance->setLimit(1);
+                       // Add the username as a criteria and set limit to one entry
+                       $criteriaInstance->addCriteria(UserDatabaseWrapper::DB_COLUMN_USERNAME, $this->getUsername());
+                       $criteriaInstance->setLimit(1);
 
 
-               // Get a search result
-               $result = $wrapperInstance->doSelectByCriteria($criteriaInstance);
+                       // Get a search result
+                       $this->resultInstance = $wrapperInstance->doSelectByCriteria($criteriaInstance);
+               } else {
+                       // Rewind it
+                       $this->resultInstance->rewind();
+               }
 
                // Search for it
 
                // Search for it
-               if ($result->next()) {
+               if ($this->resultInstance->next()) {
                        // Entry found
                        $exists = true;
                } // END - if
                        // Entry found
                        $exists = true;
                } // END - if
@@ -183,21 +226,27 @@ class User extends BaseFrameworkSystem implements ManageableUser, Registerable {
                // By default the email does not exist
                $exists = false;
 
                // By default the email does not exist
                $exists = false;
 
-               // Get a UserDatabaseWrapper instance
-               $wrapperInstance = ObjectFactory::createObjectByConfiguredName('user_db_wrapper_class');
+               // Is a previous result there?
+               if (is_null($this->resultInstance)) {
+                       // Get a UserDatabaseWrapper instance
+                       $wrapperInstance = ObjectFactory::createObjectByConfiguredName('user_db_wrapper_class');
 
 
-               // Create a search criteria
-               $criteriaInstance = ObjectFactory::createObjectByConfiguredName('search_criteria_class');
+                       // Create a search criteria
+                       $criteriaInstance = ObjectFactory::createObjectByConfiguredName('search_criteria_class');
 
 
-               // Add the username as a criteria and set limit to one entry
-               $criteriaInstance->addCriteria(UserDatabaseWrapper::DB_COLUMN_EMAIL, $this->getEmail());
-               $criteriaInstance->setLimit(1);
+                       // Add the username as a criteria and set limit to one entry
+                       $criteriaInstance->addCriteria(UserDatabaseWrapper::DB_COLUMN_EMAIL, $this->getEmail());
+                       $criteriaInstance->setLimit(1);
 
 
-               // Get a search result
-               $result = $wrapperInstance->doSelectByCriteria($criteriaInstance);
+                       // Get a search resultInstance
+                       $this->resultInstance = $wrapperInstance->doSelectByCriteria($criteriaInstance);
+               } else {
+                       // Rewind it
+                       $this->resultInstance->rewind();
+               }
 
                // Search for it
 
                // Search for it
-               if ($result->next()) {
+               if ($this->resultInstance->next()) {
                        // Entry found
                        $exists = true;
                } // END - if
                        // Entry found
                        $exists = true;
                } // END - if
@@ -227,13 +276,13 @@ class User extends BaseFrameworkSystem implements ManageableUser, Registerable {
                $criteriaInstance->addCriteria(UserDatabaseWrapper::DB_COLUMN_USERNAME, $this->getUserName());
                $criteriaInstance->setLimit(1);
 
                $criteriaInstance->addCriteria(UserDatabaseWrapper::DB_COLUMN_USERNAME, $this->getUserName());
                $criteriaInstance->setLimit(1);
 
-               // Get a search result
-               $result = $wrapperInstance->doSelectByCriteria($criteriaInstance);
+               // Get a search resultInstance
+               $this->resultInstance = $wrapperInstance->doSelectByCriteria($criteriaInstance);
 
                // Search for it
 
                // Search for it
-               if ($result->next()) {
+               if ($this->resultInstance->next()) {
                        // Get the current entry (can only be one!)
                        // Get the current entry (can only be one!)
-                       $entry = $result->current();
+                       $entry = $this->resultInstance->current();
 
                        // So does the hashes match?
                        $matches = ($requestInstance->getRequestElement('pass_hash') === $entry['pass_hash']);
 
                        // So does the hashes match?
                        $matches = ($requestInstance->getRequestElement('pass_hash') === $entry['pass_hash']);
@@ -253,6 +302,28 @@ class User extends BaseFrameworkSystem implements ManageableUser, Registerable {
        public function addUpdateData ($column, $value) {
                $this->partialStub("Column={$column}, value={$value}");
        }
        public function addUpdateData ($column, $value) {
                $this->partialStub("Column={$column}, value={$value}");
        }
+
+       /**
+        * "Getter" for user's password hash
+        *
+        * @return      $passHash       User's password hash from database result
+        */
+       public function getPasswordHash () {
+               // Default is missing password hash
+               $passHash = null;
+
+               // Get a database entry
+               $entry = $this->getDatabaseEntry();
+
+               // Is the password hash there?
+               if (isset($entry['pass_hash'])) {
+                       // Get it
+                       $passHash = $entry['pass_hash'];
+               }
+
+               // And return the hash
+               return $passHash;
+       }
 }
 
 // [EOF]
 }
 
 // [EOF]