X-Git-Url: https://git.mxchange.org/?p=shipsimu.git;a=blobdiff_plain;f=inc%2Fclasses%2Fmain%2Fuser%2Fclass_User.php;h=2221111eabda84589ede9bfc3e360934065fd4a9;hp=cc9c44348058bd2e9645030a5d2950a22554955e;hb=9327c11e14407cce78208de01b5cdd2de87e13a3;hpb=8f6f9ab77c4c9820656ffa8ecd01bc3e68f1ca95 diff --git a/inc/classes/main/user/class_User.php b/inc/classes/main/user/class_User.php index cc9c443..2221111 100644 --- a/inc/classes/main/user/class_User.php +++ b/inc/classes/main/user/class_User.php @@ -22,6 +22,11 @@ * along with this program. If not, see . */ class User extends BaseFrameworkSystem implements ManageableUser, Registerable { + /** + * Instance of the database result + */ + private $resultInstance = null; + /** * Username of current user */ @@ -104,6 +109,38 @@ class User extends BaseFrameworkSystem implements ManageableUser, Registerable { 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 * @@ -151,21 +188,27 @@ class User extends BaseFrameworkSystem implements ManageableUser, Registerable { // 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 - if ($result->next()) { + if ($this->resultInstance->next()) { // 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; - // 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 - if ($result->next()) { + if ($this->resultInstance->next()) { // 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); - // Get a search result - $result = $wrapperInstance->doSelectByCriteria($criteriaInstance); + // Get a search resultInstance + $this->resultInstance = $wrapperInstance->doSelectByCriteria($criteriaInstance); // Search for it - if ($result->next()) { + if ($this->resultInstance->next()) { // 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']); @@ -253,6 +302,28 @@ class User extends BaseFrameworkSystem implements ManageableUser, Registerable { 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]