* @version 0.0.0 * @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 * * 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 * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ class ShipSimuRegistration extends BaseRegistration { /** * Hashed password */ private $hashedPassword = ""; /** * Elements for criteria */ private $criteriaElements = array( 'username', 'pass_hash', 'email' => 'email1', 'surname', 'family', 'street', 'zip', 'city', 'icq', 'jabber', 'yahoo', 'aol', 'msn' ); /** * Protected constructor * * @return void */ protected function __construct () { // Call parent constructor parent::__construct(__CLASS__); // Set part description $this->setObjectDescription("Ship-Simu registration class"); // Create unique ID number $this->generateUniqueId(); } /** * Create a new instance * * @return $registrationInstance An instance of this registration class */ public final static function createShipSimuRegistration () { // Get a new instance $registrationInstance = new ShipSimuRegistration(); // Initialize the filter chains $registrationInstance->initFilterChains(); // And return it return $registrationInstance; } /** * Encrypt the given request key or throw an exception if the key was not * found in the request * * @param $requestKey Key in request class * @return void */ public function encryptPassword ($requestKey) { // Check if the password is found in the request if ($this->getRequestInstance()->isRequestElementSet($requestKey)) { // So encrypt the password and store it for later usage in // the request: // 1.: Get the plain password $plainPassword = $this->getRequestInstance()->getRequestElement($requestKey); // 2. Get a crypto helper and hash the password $this->hashedPassword = ObjectFactory::createObjectByConfiguredName('crypto_class')->hashString($plainPassword); // 3. Store the hash back in the request $this->getRequestInstance()->setRequestElement('pass_hash', $this->hashedPassword); } } /** * Perform things like informing assigned affilates about new registration * before registration * * @return void */ public function doPreRegistration () { // First run all pre filters $this->executePreFilters(); } /** * Registers the new user account by insterting the request data into the * database and paying some start credits or throw exceptions if this fails * * @return void */ public function registerNewUser () { // Get a user database wrapper $wrapperInstance = ObjectFactory::createObjectByConfiguredName('user_db_wrapper_class'); // Use this instance to insert the whole registration instance $wrapperInstance->insertRegistrationObject($this); } /** * Perform things like notifying partner websites after registration is done * * @return void */ public function doPostRegistration () { // First run all post filters $this->executePostFilters(); } /** * Do the action which is required after all registration steps are done. * This can be a simple redirect to another webpage or displaying a message * to the user. Or this can be a login step into the newly created account. * * @return void */ public function doPostAction () { // Get an action instance from our factory $actionInstance = ObjectFactory::createObjectByConfiguredName('post_registration_class'); // Execute the action $actionInstance->execute($this->getRequestInstance(), $this->getResponseInstance()); } /** * Adds registration elements to a given dataset instance * * @param $criteriaInstance An instance of a storeable criteria * @return void */ public function addElementsToDataSet (StoreableCriteria $criteriaInstance) { // Default is user account! $configEntry = 'user_status_unconfirmed'; // Add a lot elements to the dataset criteria foreach ($this->criteriaElements as $alias=>$element) { // Do we have an alias? if (is_string($alias)) { // Yes, so use it $criteriaInstance->addCriteria($alias, $this->getRequestInstance()->getRequestElement($element)); } else { // No, default entry $criteriaInstance->addCriteria($element, $this->getRequestInstance()->getRequestElement($element)); } // Is this a guest account? if ((($element == "username") || ($alias == "username")) && ($this->getRequestInstance()->getRequestElement($element) == $this->getConfigInstance()->readConfig('guest_login_user'))) { // Yes, then set the config entry to guest status $configEntry = 'user_status_guest'; } // END - if } // END - foreach // Mark the username as unique key $criteriaInstance->setUniqueKey('username'); // Add account status as configured $criteriaInstance->addConfiguredCriteria('user_status', $configEntry); } } // ?>