X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=sidebyside;f=inc%2Fclasses%2Fmain%2Fdatabase%2Fwrapper%2Fclass_UserDatabaseWrapper.php;h=503fbadb02089e2e2f0007fec6b077d5e406135a;hb=ac5339906ba6e48ed6f423606bb4fef0e7671dcc;hp=a9f64d8c0b54c40ad49e6d5225785485fffab231;hpb=f952a5fb1fe821dd1ddca875f537dd680019371d;p=shipsimu.git diff --git a/inc/classes/main/database/wrapper/class_UserDatabaseWrapper.php b/inc/classes/main/database/wrapper/class_UserDatabaseWrapper.php index a9f64d8..503fbad 100644 --- a/inc/classes/main/database/wrapper/class_UserDatabaseWrapper.php +++ b/inc/classes/main/database/wrapper/class_UserDatabaseWrapper.php @@ -2,12 +2,11 @@ /** * A database wrapper for the User class * - * @see DatabaseFrontendInterface - An interface for database frontends (front-end to the application) * @author Roland Haeder * @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 @@ -23,16 +22,15 @@ * along with this program. If not, see . */ class UserDatabaseWrapper extends BaseDatabaseWrapper { - /** - * Cache instance - */ - private $cacheInstance = null; - // Constants for exceptions - const EXCEPTION_CLIENT_USERNAME_NOT_FOUND = 0xe00; + const EXCEPTION_CLIENT_USERNAME_NOT_FOUND = 0x180; // Constants for database columns - const DB_COLUMN_USERNAME = "username"; + const DB_COLUMN_USERID = "userid"; + 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"; @@ -45,82 +43,74 @@ class UserDatabaseWrapper extends BaseDatabaseWrapper { protected function __construct() { // Call parent constructor parent::__construct(__CLASS__); - - // Set part description - $this->setObjectDescription("Database wrapper for user objects"); - - // Create unique ID number - $this->createUniqueID(); } /** * Creates an instance of this database wrapper by a provided 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 () { // Get a new instance $wrapperInstance = new UserDatabaseWrapper(); - // Initialize the cache instance - $wrapperInstance->initCacheInstance(); + // Set (primary!) table name + $wrapperInstance->setTableName(self::DB_TABLE_USER); // Return the instance return $wrapperInstance; } /** - * Initializes the cache instance with a new object + * Getter for index key + * + * @return $indexKey Index key + */ + public final function getIndexKey () { + return $this->getDatabaseInstance()->getIndexKey(); + } + + /** + * Handles inserting the registration data from a registration instance into the database * + * @param $registrationInstance An instance of a registration class * @return void */ - protected 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); } /** - * Do a "select" query on the user table with the given search criteria and - * store it in cache for later usage + * Updates an user database entry with given result * - * @param $criteriaInstance An instance of a Criteria class - * @return $resultInstance An instance of a database result class + * @param $resultInstance An instance of a Updateable database result + * @return void */ - public function doSelectByCriteria (Criteria $criteriaInstance) { - // First get a key suitable for our cache and extend it with this class name - $cacheKey = sprintf("%s@%s", - $this->__toString(), - $criteriaInstance->getCacheKey() - ); - - // Does this key exists in cache? - if ($this->cacheInstance->offsetExists($cacheKey)) { - // Then use this result - $result = $cacheInstance->offsetGet($cacheKey); - } else { - // Now it's time to ask the database layer for this select statement - $result = $this->getDatabaseInstance()->doSelectByTableCriteria(self::DB_TABLE_USER, $criteriaInstance); - - // Cache the result if not null - if (!is_null($result)) { - // A valid result has returned from the database layer - $this->cacheInstance->offsetSet($cacheKey, $result); - } else { - // This invalid result must be wrapped - $result = array( - 'status' => "invalid", - 'exception' => $this->getDatabaseInstance()->getLastException() - ); - } - } - - // Create an instance of a DatabaseResult class with the given result - $resultInstance = DatabaseResult::createDatabaseResult($result); - - // And return the instance - return $resultInstance; + 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); } }