/**
* A general user class
*
- * @author Roland Haeder <webmaster@ship-simu.org>
+ * @author Roland Haeder <webmaster@shipsimu.org>
* @version 0.0.0
- * @copyright Copyright (c) 2007 - 2009 Roland Haeder, this is free software
+ * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2015 Core Developer Team
* @license GNU GPL 3.0 or any newer version
- * @link http://www.ship-simu.org
+ * @link http://www.shipsimu.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
* 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 BaseUser extends BaseFrameworkSystem {
+class BaseUser extends BaseFrameworkSystem implements Updateable {
// Exception constances
const EXCEPTION_USERNAME_NOT_FOUND = 0x150;
const EXCEPTION_USER_EMAIL_NOT_FOUND = 0x151;
const EXCEPTION_USER_PASS_MISMATCH = 0x152;
+ const EXCEPTION_USER_IS_GUEST = 0x153;
/**
* Username of current user
protected function __construct ($className) {
// Call parent constructor
parent::__construct($className);
-
- // Clean up a little
- $this->removeNumberFormaters();
- $this->removeSystemArray();
}
/**
}
/**
- * Determines wether the username exists or not
+ * Determines whether the username exists or not
*
- * @return $exists Wether the username exists
+ * @return $exists Whether the username exists
*/
public function ifUsernameExists () {
// By default the username does not exist
- $exists = false;
+ $exists = FALSE;
// Is a previous result there?
- if (is_null($this->getResultInstance())) {
+ if (!$this->getResultInstance() instanceof SearchableResult) {
// Get a UserDatabaseWrapper instance
$wrapperInstance = ObjectFactory::createObjectByConfiguredName('user_db_wrapper_class');
// Search for it
if ($this->getResultInstance()->next()) {
// Entry found
- $exists = true;
+ $exists = TRUE;
} // END - if
// Return the status
}
/**
- * Determines wether the email exists or not
+ * Determines whether the email exists or not
*
- * @return $exists Wether the email exists
+ * @return $exists Whether the email exists
*/
public function ifEmailAddressExists () {
// By default the email does not exist
- $exists = false;
+ $exists = FALSE;
// Is a previous result there?
- if (is_null($this->getResultInstance())) {
+ if (!$this->getResultInstance() instanceof SearchableResult) {
// Get a UserDatabaseWrapper instance
$wrapperInstance = ObjectFactory::createObjectByConfiguredName('user_db_wrapper_class');
// Search for it
if ($this->getResultInstance()->next()) {
// Entry found
- $exists = true;
+ $exists = TRUE;
// Is the username set?
if ($this->getUserName() == '') {
* database.
*
* @param $requestInstance A requestable class instance
- * @return $matches Wether the supplied password hash matches
+ * @return $matches Whether the supplied password hash matches
*/
public function ifPasswordHashMatches (Requestable $requestInstance) {
// By default nothing matches... ;)
- $matches = false;
+ $matches = FALSE;
// Is a previous result there?
- if (is_null($this->getResultInstance())) {
+ if ((!$this->getResultInstance() instanceof SearchableResult) || ($this->getResultInstance()->count() == 0)) {
// Get a UserDatabaseWrapper instance
$wrapperInstance = ObjectFactory::createObjectByConfiguredName('user_db_wrapper_class');
$this->setResultInstance($resultInstance);
} // END - if
- // Rewind it
+ // Rewind it and advance to first entry
$this->getResultInstance()->rewind();
+ // This call set the result instance to a clean state
+ $this->getResultInstance()->next();
+
// Search for it
if ($this->getResultInstance()->find('pass_hash')) {
// So does the hashes match?
- //* DEBUG: */ echo $requestInstance->getRequestElement('pass_hash')."/".$entry['pass_hash'];
+ //* DEBUG: */ echo $requestInstance->getRequestElement('pass_hash') . '<br />' . $this->getResultInstance()->getFoundValue() . '<br />';
$matches = ($requestInstance->getRequestElement('pass_hash') === $this->getResultInstance()->getFoundValue());
} // END - if
*/
public final function getPasswordHash () {
// Default is missing password hash
- $passHash = null;
+ $passHash = NULL;
// Get a database entry
$entry = $this->getDatabaseEntry();
* @param $fieldName Field to update
* @param $fieldValue New value to store
* @return void
- * @throws DatabaseUpdateSupportException If this class does not support database updates
* @todo Try to make this method more generic so we can move it in BaseFrameworkSystem
*/
public function updateDatabaseField ($fieldName, $fieldValue) {
- // Is updating database fields allowed by interface?
- if (!$this instanceof Updateable) {
- // Update not supported!
- throw new DatabaseUpdateSupportException($this, self::EXCEPTION_DATABASE_UPDATED_NOT_ALLOWED);
- } // END - if
-
// Get a critieria instance
$searchInstance = ObjectFactory::createObjectByConfiguredName('search_criteria_class');
// Remember the update in database result
$this->getResultInstance()->add2UpdateQueue($updateInstance);
}
+
+ /**
+ * Checks whether the user status is 'confirmed'
+ *
+ * @return $isConfirmed Whether the user status is 'confirmed'
+ */
+ public function isConfirmed () {
+ // Determine it
+ $isConfirmed = ($this->getField(UserDatabaseWrapper::DB_COLUMN_USER_STATUS) == $this->getConfigInstance()->getConfigEntry('user_status_confirmed'));
+
+ // Return it
+ return $isConfirmed;
+ }
+
+ /**
+ * Checks whether the user status is 'guest'
+ *
+ * @return $isGuest Whether the user status is 'guest'
+ */
+ public function isGuest () {
+ // Determine it
+ $isGuest = ($this->getField(UserDatabaseWrapper::DB_COLUMN_USER_STATUS) == $this->getConfigInstance()->getConfigEntry('user_status_guest'));
+
+ // Return it
+ return $isGuest;
+ }
}
// [EOF]