* 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
*/
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
*
// 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
// 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
$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']);
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]