/**
* 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
*
* 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 = 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_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";
protected function __construct() {
// Call parent constructor
parent::__construct(__CLASS__);
-
- // Set part description
- $this->setObjectDescription("Database wrapper for user objects");
-
- // Create unique ID number
- $this->generateUniqueId();
}
/**
// 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
- *
- * @return void
- */
- protected function initCacheInstance () {
- // Set the new instance
- $this->cacheInstance = CacheFactory::getFactory()->createConfiguredCache();
- }
-
- /**
- * Do a "select" query on the user table with the given search criteria and
- * store it in cache for later usage
+ * Getter for index key
*
- * @param $criteriaInstance An instance of a Criteria class
- * @return $resultInstance An instance of a database result class
+ * @return $indexKey Index key
*/
- 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 final function getIndexKey () {
+ return $this->getDatabaseInstance()->getIndexKey();
}
/**
*/
public function insertRegistrationObject (UserRegister $registrationInstance) {
// Generate a data set for the request
- $dataSetInstance = ObjectFactory::createObjectByConfiguredName('dataset_criteria');
- $dataSetInstance->setTableName(self::DB_TABLE_USER);
+ $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);
}
+
+ /**
+ * Updates an user database entry with given result
+ *
+ * @param $resultInstance An instance of a Updateable database result
+ * @return void
+ */
+ 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);
+ }
}
// [EOF]