/**
* A database wrapper for the User class
*
- * @see DatabaseFrontendInterface - An interface for database frontends (front-end to the application)
* @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, this is free software
* @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
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
class UserDatabaseWrapper extends BaseDatabaseWrapper {
- /**
- * Cache instance
- */
- private $cacheInstance = null;
+ // Constants for exceptions
+ const EXCEPTION_CLIENT_USERNAME_NOT_FOUND = 0x180;
- // Constants
- const EXCEPTION_CLIENT_USERNAME_NOT_FOUND = 0xe00;
+ // Constants for database columns
+ const DB_COLUMN_USERNAME = "username";
+ const DB_COLUMN_EMAIL = "email";
+ const DB_COLUMN_CONFIRM_HASH = "confirm_hash";
+ const DB_COLUMN_USER_STATUS = "user_status";
+
+ // Constants for database table names
+ const DB_TABLE_USER = "user";
/**
* Protected constructor
$this->setObjectDescription("Database wrapper for user objects");
// Create unique ID number
- $this->createUniqueID();
-
- // Initialize the cache instance
- $this->initCacheInstance();
+ $this->generateUniqueId();
}
/**
* Creates an instance of this database wrapper by a provided user class
*
- * @param $userInstance An instance of a user class
* @return $wrapperInstance An instance of the created wrapper class
* @throws WrapperUserNameNotFoundException If the supplied username
* does not exist
*/
- public final static function createUserDatabaseWrapper (ManageableUser $userInstance) {
+ public final static function createUserDatabaseWrapper () {
// Get a new instance
$wrapperInstance = new UserDatabaseWrapper();
- // Does the username exists?
- if (!$wrapperInstance->ifUserNameExists($userInstance->getUserName())) {
- // Throw an exception here
- throw new WrapperUserNameNotFoundException (array($wrapperInstance, $userInstance), self::EXCEPTION_CLIENT_USERNAME_NOT_FOUND);
- }
-
- // The user exists
- $wrapperInstance->partialStub("Add loading of full user details");
+ // Set (primary!) table name
+ $wrapperInstance->setTableName(self::DB_TABLE_USER);
// Return the instance
return $wrapperInstance;
}
/**
- * Initializes the cache instance with a new object
+ * Handles inserting the registration data from a registration instance into the database
*
+ * @param $registrationInstance An instance of a registration class
* @return void
*/
- private function initCacheInstance () {
- // Set the new instance
- $this->cacheInstance = CacheFactory::getFactory()->createConfiguredCache();
+ public function insertRegistrationObject (UserRegister $registrationInstance) {
+ // Generate a data set for the request
+ $dataSetInstance = ObjectFactory::createObjectByConfiguredName('dataset_criteria_class', array(self::DB_TABLE_USER));
+
+ // Set the primary key
+ $dataSetInstance->setUniqueKey('username');
+
+ // Add registration elements to the dataset
+ $registrationInstance->addElementsToDataSet($dataSetInstance);
+
+ // "Insert" this request instance completely into the database
+ $this->getDatabaseInstance()->queryInsertDataSet($dataSetInstance);
}
/**
- * Checks wether the given username is already used
+ * Updates an user database entry with given result
*
- * @param $userName The username we shall look up
- * @return $exists Wether the username exists
+ * @param $resultInstance An instance of a Updateable database result
+ * @return void
*/
- public function ifUserNameExists ($userName) {
- // By default no entry exist
- $exists = false;
-
- // Does this entry exist?
- if ($this->cacheInstance->offsetExists($userName)) {
- // Then we have a user!
- $exists = true;
- } else {
- // Create a search criteria
- $criteriaInstance = ObjectFactory::createObjectByConfiguredName('search_criteria');
-
- // Add the username as a criteria and set limit to one entry
- $criteriaInstance->add(self::DB_USERNAME, $userName);
- $criteriaInstance->setLimit(1);
-
- // Get a search result
- $result = $this->doSelectByCriteria($criteriaInstance);
-
- // Search for it
- if ($result->next()) {
- // Get the result
- $this->cacheInstance->add($userName, $result->getResultArray());
-
- // Entry found, so all is fine
- $exists = true;
- }
- }
-
- // Return the result
- return $exists;
+ public function doUpdateByResult (UpdateableResult $resultInstance) {
+ // Generate a data set object
+ $dataSetInstance = ObjectFactory::createObjectByConfiguredName('dataset_criteria_class', array(self::DB_TABLE_USER));
+
+ // Add all update criteria to the database set
+ $resultInstance->addElementsToDataSet($dataSetInstance);
+
+ // Add seach criteria
+ $dataSetInstance->setSearchInstance($resultInstance->getSearchInstance());
+
+ // Set the primary key
+ $dataSetInstance->setUniqueKey('username');
+
+ // "Update" this request with the database
+ $this->getDatabaseInstance()->queryUpdateDataSet($dataSetInstance);
}
}