From bc94f1c95be0b773f5323a75e976e44ca3d0e760 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Roland=20H=C3=A4der?= Date: Tue, 25 Aug 2009 21:53:54 +0000 Subject: [PATCH] =?utf8?q?NPE=20catched,=20command=20class=20added,=20bete?= =?utf8?q?r=20coding=20practice=20applied:=20-=20New=20command=20class=20W?= =?utf8?q?ebProblemCommand=20added=20to=20handle=20page=3Dproblem&problem?= =?utf8?q?=3D=3F=3F=3F=20-=20Command=20class=20WebConfirmCommand=20redirec?= =?utf8?q?t=20to=20a=20configurable=20URL=20if=20the=20user=20=20=20instan?= =?utf8?q?ce=20is=20not=20found=20in=20registry.=20This=20might=20happen?= =?utf8?q?=20e.g.=20if=20the=20database=20is=20=20=20corrupted=20or=20the?= =?utf8?q?=20underlaying=20file=20(in=20LocalFileDatabase=20class)=20has?= =?utf8?q?=20been=20=20=20removed.=20-=20All=20user=20classes=20inherited?= =?utf8?q?=20from=20BaseUser=20class=20do=20now=20set=20their=20result=20?= =?utf8?q?=20=20instance=20a=20more=20clean=20state=20(might=20fix=20later?= =?utf8?q?=20troubles)?= --- .gitattributes | 1 + .../commands/web/class_WebConfirmCommand.php | 7 +- .../commands/web/class_WebProblemCommand.php | 77 +++++++++++++++++++ inc/classes/main/user/class_BaseUser.php | 7 +- 4 files changed, 89 insertions(+), 3 deletions(-) create mode 100644 inc/classes/main/commands/web/class_WebProblemCommand.php diff --git a/.gitattributes b/.gitattributes index fe697c12..b9372516 100644 --- a/.gitattributes +++ b/.gitattributes @@ -247,6 +247,7 @@ inc/classes/main/commands/web/class_WebLoginCommand.php -text inc/classes/main/commands/web/class_WebLoginFailedCommand.php -text inc/classes/main/commands/web/class_WebLogoutCommand.php -text inc/classes/main/commands/web/class_WebLogoutDoneCommand.php -text +inc/classes/main/commands/web/class_WebProblemCommand.php -text inc/classes/main/commands/web/class_WebRegisterCommand.php -text inc/classes/main/commands/web/class_WebResendLinkCommand.php -text inc/classes/main/commands/web/class_WebStatusCommand.php -text diff --git a/inc/classes/main/commands/web/class_WebConfirmCommand.php b/inc/classes/main/commands/web/class_WebConfirmCommand.php index 090dbad9..220ae5ce 100644 --- a/inc/classes/main/commands/web/class_WebConfirmCommand.php +++ b/inc/classes/main/commands/web/class_WebConfirmCommand.php @@ -99,7 +99,12 @@ class WebConfirmCommand extends BaseCommand implements Commandable { $templateInstance->assignVariable('title', $this->getLanguageInstance()->getMessage('page_confirm_link_title')); // Get user instance - $userInstance = Registry::getRegistry()->getInstance('user'); + try { + $userInstance = Registry::getRegistry()->getInstance('user'); + } catch (NullPointerException $e) { + // Not found user, e.g. when the user is somehow invalid + $responseInstance->redirectToConfiguredUrl('web_cmd_user_is_null'); + } // Set username $templateInstance->assignVariable('username', $userInstance->getField(UserDatabaseWrapper::DB_COLUMN_USERNAME)); diff --git a/inc/classes/main/commands/web/class_WebProblemCommand.php b/inc/classes/main/commands/web/class_WebProblemCommand.php new file mode 100644 index 00000000..28adc9d3 --- /dev/null +++ b/inc/classes/main/commands/web/class_WebProblemCommand.php @@ -0,0 +1,77 @@ + + * @version 0.0.0 + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 Core Developer Team + * @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 WebProblemCommand extends BaseCommand implements Commandable { + /** + * Protected constructor + * + * @return void + */ + protected function __construct () { + // Call parent constructor + parent::__construct(__CLASS__); + } + + /** + * Creates an instance of this class + * + * @param $resolverInstance An instance of a command resolver class + * @return $commandInstance An instance a prepared command class + */ + public final static function createWebProblemCommand (CommandResolver $resolverInstance) { + // Get new instance + $commandInstance = new WebProblemCommand(); + + // Set the application instance + $commandInstance->setResolverInstance($resolverInstance); + + // Return the prepared instance + return $commandInstance; + } + + /** + * Executes the given command with given request and response objects + * + * @param $requestInstance An instance of a class with an Requestable interface + * @param $responseInstance An instance of a class with an Responseable interface + * @return void + * @todo 0% done + */ + public function execute (Requestable $requestInstance, Responseable $responseInstance) { + $this->partialStub('Unfinished method.'); + } + + /** + * Adds extra filters to the given controller instance + * + * @param $controllerInstance A controller instance + * @param $requestInstance An instance of a class with an Requestable interface + * @return void + */ + public function addExtraFilters (Controller $controllerInstance, Requestable $requestInstance) { + // Empty for now + } +} + +// [EOF] +?> diff --git a/inc/classes/main/user/class_BaseUser.php b/inc/classes/main/user/class_BaseUser.php index 5de1249a..0aa89c35 100644 --- a/inc/classes/main/user/class_BaseUser.php +++ b/inc/classes/main/user/class_BaseUser.php @@ -241,13 +241,16 @@ class BaseUser extends BaseFrameworkSystem implements Updateable { $this->setResultInstance($resultInstance); } // END - if - // Rewind it + // Rewind it and advance to first entry $this->getResultInstance()->rewind(); + // This call set the result instance to a clean state + $this->getResultInstance()->next(); + // Search for it if ($this->getResultInstance()->find('pass_hash')) { // So does the hashes match? - //* DEBUG: */ echo $requestInstance->getRequestElement('pass_hash') . '/' . $this->getResultInstance()->getFoundValue() . '
'; + //* DEBUG: */ echo $requestInstance->getRequestElement('pass_hash') . '
' . $this->getResultInstance()->getFoundValue() . '
'; $matches = ($requestInstance->getRequestElement('pass_hash') === $this->getResultInstance()->getFoundValue()); } // END - if -- 2.39.5