X-Git-Url: https://git.mxchange.org/?p=core.git;a=blobdiff_plain;f=inc%2Fclasses%2Fmain%2Fuser%2Fguest%2Fclass_Guest.php;h=6fdefc7f5b52a28676e9095b9c62bda77ea65641;hp=befd4127c6939dd46625e64520ee521c35a350f4;hb=6fd01888b51f210394c4b7bb5e0ac2a28efb0c99;hpb=361e6320e50a8bb1a3ccb675388b8042361669ae diff --git a/inc/classes/main/user/guest/class_Guest.php b/inc/classes/main/user/guest/class_Guest.php index befd4127..6fdefc7f 100644 --- a/inc/classes/main/user/guest/class_Guest.php +++ b/inc/classes/main/user/guest/class_Guest.php @@ -2,11 +2,11 @@ /** * A generic class for handling guests * - * @author Roland Haeder + * @author Roland Haeder * @version 0.0.0 - * @copyright Copyright (c) 2007 - 2009 Roland Haeder, this is free software + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2015 Core Developer Team * @license GNU GPL 3.0 or any newer version - * @link http://www.ship-simu.org + * @link http://www.shipsimu.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 @@ -26,6 +26,7 @@ class Guest extends BaseUser implements ManageableGuest, Registerable { const EXCEPTION_USERNAME_NOT_FOUND = 0x170; const EXCEPTION_USER_EMAIL_NOT_FOUND = 0x171; const EXCEPTION_USER_PASS_MISMATCH = 0x172; + const EXCEPTION_USER_NOT_GUEST = 0x173; /** * Protected constructor @@ -37,6 +38,32 @@ class Guest extends BaseUser implements ManageableGuest, Registerable { parent::__construct(__CLASS__); } + /** + * Creates a user by a given request instance + * + * @param $requestInstance An instance of a Requestable class + * @return $userInstance An instance of this user class + * @todo Add more ways over creating user classes + */ + public static final function createGuestByRequest (Requestable $requestInstance) { + // Determine if by email or username + if (!is_null($requestInstance->getRequestElement('username'))) { + // Username supplied + $userInstance = self::createGuestByUserName($requestInstance->getRequestElement('username')); + } elseif (!is_null($requestInstance->getRequestElement('email'))) { + // Email supplied + $userInstance = self::createGuestByEmail($requestInstance->getRequestElement('email')); + } else { + // Unsupported mode + $userInstance = new Guest(); + $userInstance->debugBackTrace('More ways of creating user classes are needed here.'); + exit(); + } + + // Return the prepared instance + return $userInstance; + } + /** * Creates an instance of this user class by a provided username. This * factory method will check if username is already taken and if not so it @@ -45,8 +72,9 @@ class Guest extends BaseUser implements ManageableGuest, Registerable { * @param $userName Username we need a class instance for * @return $userInstance An instance of this user class * @throws UsernameMissingException If the username does not exist + * @throws UserNoGuestException If the user is no guest account */ - public final static function createGuestByUsername ($userName) { + public static final function createGuestByUsername ($userName) { // Get a new instance $userInstance = new Guest(); @@ -54,10 +82,13 @@ class Guest extends BaseUser implements ManageableGuest, Registerable { $userInstance->setUserName($userName); // Check if username exists - if ($userInstance->ifUsernameExists() === false) { + if ($userInstance->ifUsernameExists() === FALSE) { // Throw an exception here throw new UsernameMissingException(array($userInstance, $userName), self::EXCEPTION_USERNAME_NOT_FOUND); - } // END - if + } elseif ($userInstance->isGuest() === FALSE) { + // Sanity check on 'guest' status failed + throw new UserNoGuestException(array($userInstance, $userName), self::EXCEPTION_USER_NOT_GUEST_STATUS); + } // Return the instance return $userInstance; @@ -70,7 +101,7 @@ class Guest extends BaseUser implements ManageableGuest, Registerable { * @param $email Email address of the user * @return $userInstance An instance of this user class */ - public final static function createGuestByEmail ($email) { + public static final function createGuestByEmail ($email) { // Get a new instance $userInstance = new Guest();