X-Git-Url: https://git.mxchange.org/?p=shipsimu.git;a=blobdiff_plain;f=inc%2Fclasses%2Fmain%2Fdatabase%2Fwrapper%2Fclass_UserDatabaseWrapper.php;h=1bbbf0315c7365b83e2233e92c47c2ecb12c7466;hp=262c950c898698bfe18d3b7becc803cff2cee27b;hb=ec23e72b16433ac136817f3ea78697fb70236e4a;hpb=8995d39e2d13295568b6ca1d0a6ec01302994d22 diff --git a/inc/classes/main/database/wrapper/class_UserDatabaseWrapper.php b/inc/classes/main/database/wrapper/class_UserDatabaseWrapper.php index 262c950..1bbbf03 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,17 +22,14 @@ * 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_EMAIL = "email"; + 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"; @@ -46,12 +42,6 @@ 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(); } /** @@ -65,84 +55,54 @@ class UserDatabaseWrapper extends BaseDatabaseWrapper { // 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 + * 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)); - /** - * Do a "select" query on the user table with the given search criteria and - * store it in cache for later usage - * - * @param $criteriaInstance An instance of a Criteria class - * @return $resultInstance An instance of a database result class - */ - 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; + // 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); } /** - * Handles inserting the registration data from a registration instance into the database + * Updates an user database entry with given result * - * @param $registrationInstance An instance of a registration class + * @param $resultInstance An instance of a Updateable database result * @return void */ - public function insertRegistrationObject (UserRegister $registrationInstance) { - // Get the request instance which we use for saving - $requestInstance = $registrationInstance->getRequestInstance(); + public function doUpdateByResult (UpdateableResult $resultInstance) { + // Generate a data set object + $dataSetInstance = ObjectFactory::createObjectByConfiguredName('dataset_criteria_class', array(self::DB_TABLE_USER)); - // Generate a data set for the request - $dataSetInstance = ObjectFactory::createObjectByConfiguredName('dataset_criteria'); - $dataSetInstance->setTableName(self::DB_TABLE_USER); + // Add all update criteria to the database set + $resultInstance->addElementsToDataSet($dataSetInstance); - // Add all needed request elements to the data set - //$requestInstance->debugInstance(); + // Add seach criteria + $dataSetInstance->setSearchInstance($resultInstance->getSearchInstance()); - // "Insert" this request instance completely into the database - $this->getDatabaseInstance()->insertDataSet($dataSetInstance); + // Set the primary key + $dataSetInstance->setUniqueKey('username'); + + // "Update" this request with the database + $this->getDatabaseInstance()->queryUpdateDataSet($dataSetInstance); } }