From: Roland Haeder Date: Sat, 18 Apr 2015 10:25:02 +0000 (+0200) Subject: Added new factory and fixed confusing between login and actual user classes. X-Git-Url: https://git.mxchange.org/?p=core.git;a=commitdiff_plain;h=27e0403074124968ff6588735afb0e1d7577ab76;hp=30d996765c2587e3735f1c4289c5f90bd40f4520 Added new factory and fixed confusing between login and actual user classes. Signed-off-by: Roland Häder --- diff --git a/inc/classes/main/actions/post_registration/class_LoginAfterRegistrationAction.php b/inc/classes/main/actions/post_registration/class_LoginAfterRegistrationAction.php index f41843c8..2ee90844 100644 --- a/inc/classes/main/actions/post_registration/class_LoginAfterRegistrationAction.php +++ b/inc/classes/main/actions/post_registration/class_LoginAfterRegistrationAction.php @@ -55,7 +55,6 @@ class LoginAfterRegistrationAction extends BaseAction implements PerformableActi public function execute (Requestable $requestInstance, Responseable $responseInstance) { // Get a login class from factory $loginInstance = LoginFactory::createLoginObjectByRequest($requestInstance); - die('
'.print_r($loginInstance, TRUE).'
'); // Login the user by the request instance $loginInstance->doLogin($requestInstance, $responseInstance); diff --git a/inc/classes/main/factories/login/class_LoginFactory.php b/inc/classes/main/factories/login/class_LoginFactory.php index 01b042cc..0f271993 100644 --- a/inc/classes/main/factories/login/class_LoginFactory.php +++ b/inc/classes/main/factories/login/class_LoginFactory.php @@ -36,7 +36,7 @@ class LoginFactory extends ObjectFactory { * Returns a singleton login instance for given request instance. * * @param $requestInstance An instance of a Requestable class - * @return $wrapperInstance A database wrapper instance + * @return $loginInstance An instance of a login helper (@TODO Use actual interface name) */ public static final function createLoginObjectByRequest (Requestable $requestInstance) { // Get registry instance @@ -45,29 +45,29 @@ class LoginFactory extends ObjectFactory { // Do we have an instance in the registry? if ($registryInstance->instanceExists('login_helper')) { // Then use this instance - $userInstance = $registryInstance->getInstance('login_helper'); + $loginInstance = $registryInstance->getInstance('login_helper'); } else { // Probe on member instance try { // Get class name - $className = FrameworkConfiguration::getSelfInstance()->getConfigEntry('user_class'); + $className = FrameworkConfiguration::getSelfInstance()->getConfigEntry('user_login_class'); // Try to instance it - $userInstance = call_user_func_array(array($className, 'createMemberByRequest'), array($requestInstance)); + $loginInstance = call_user_func_array(array($className, 'createMemberByRequest'), array($requestInstance)); } catch (UnexpectedGuestAccountException $e) { // Then try it with guest account - $className = FrameworkConfiguration::getSelfInstance()->getConfigEntry('guest_class'); + $className = FrameworkConfiguration::getSelfInstance()->getConfigEntry('guest_login_class'); // Try to instance it - $userInstance = call_user_func_array(array($className, 'createGuestByRequest'), array($requestInstance)); + $loginInstance = call_user_func_array(array($className, 'createGuestByRequest'), array($requestInstance)); } // Set the instance in registry for further use - $registryInstance->addInstance('login_helper', $userInstance); + $registryInstance->addInstance('login_helper', $loginInstance); } // Return the instance - return $userInstance; + return $loginInstance; } } diff --git a/inc/classes/main/factories/user/.htaccess b/inc/classes/main/factories/user/.htaccess new file mode 100644 index 00000000..3a428827 --- /dev/null +++ b/inc/classes/main/factories/user/.htaccess @@ -0,0 +1 @@ +Deny from all diff --git a/inc/classes/main/factories/user/class_UserFactory.php b/inc/classes/main/factories/user/class_UserFactory.php new file mode 100644 index 00000000..929038dc --- /dev/null +++ b/inc/classes/main/factories/user/class_UserFactory.php @@ -0,0 +1,75 @@ + + * @version 0.0.0 + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2015 Core Developer Team + * @license GNU GPL 3.0 or any newer version + * @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 + * 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 UserFactory extends ObjectFactory { + /** + * Protected constructor + * + * @return void + */ + protected function __construct () { + // Call parent constructor + parent::__construct(__CLASS__); + } + + /** + * Returns a singleton user instance for given request instance. + * + * @param $requestInstance An instance of a Requestable class + * @return $userInstance An instance of a user class (@TODO use actual interface name) + */ + public static final function createUserByRequest (Requestable $requestInstance) { + // Get registry instance + $registryInstance = Registry::getRegistry(); + + // Do we have an instance in the registry? + if ($registryInstance->instanceExists('user')) { + // Then use this instance + $userInstance = $registryInstance->getInstance('user'); + } else { + // Probe on member instance + try { + // Get class name + $className = FrameworkConfiguration::getSelfInstance()->getConfigEntry('user_class'); + + // Try to instance it + $userInstance = call_user_func_array(array($className, 'createMemberByRequest'), array($requestInstance)); + } catch (UnexpectedGuestAccountException $e) { + // Then try it with guest account + $className = FrameworkConfiguration::getSelfInstance()->getConfigEntry('guest_class'); + + // Try to instance it + $userInstance = call_user_func_array(array($className, 'createGuestByRequest'), array($requestInstance)); + } + + // Set the instance in registry for further use + $registryInstance->addInstance('user', $userInstance); + } + + // Return the instance + return $userInstance; + } +} + +// [EOF] +?> diff --git a/inc/classes/main/filter/verifier/class_UserUnconfirmedVerifierFilter.php b/inc/classes/main/filter/verifier/class_UserUnconfirmedVerifierFilter.php index c8e6f427..897951d4 100644 --- a/inc/classes/main/filter/verifier/class_UserUnconfirmedVerifierFilter.php +++ b/inc/classes/main/filter/verifier/class_UserUnconfirmedVerifierFilter.php @@ -54,7 +54,7 @@ class UserUnconfirmedVerifierFilter extends BaseFilter implements Filterable { */ public function execute (Requestable $requestInstance, Responseable $responseInstance) { // Get a user instance for comparison - $userInstance = LoginFactory::createLoginObjectByRequest($requestInstance); + $userInstance = UserFactory::createUserByRequest($requestInstance); // Is the email address valid? if ($userInstance->ifEmailAddressExists() === FALSE) {