From e0317f461bd98d5c838b55ca31642d68ac8d5726 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Roland=20H=C3=A4der?= Date: Tue, 24 Jun 2008 15:52:18 +0000 Subject: [PATCH] More bugfixes: - Template engine does now compile code again - Missing controller for registration form added - Stubs in all responses added to return proper default command - Misc fixes in controller classes --- .gitattributes | 1 + .../class_DefaultControllerException.php | 2 +- .../class_InvalidControllerException.php | 2 +- .../class_ConfigEntryNotFoundException.php | 2 +- .../main/class_InvalidCommandException.php | 2 +- .../web/class_WebRegisterController.php | 92 +++++++++++++++++++ .../class_BaseControllerResolver.php | 6 +- .../image/class_ImageControllerResolver.php | 4 +- .../main/response/class_HttpResponse.php | 10 ++ .../main/response/class_ImageResponse.php | 10 ++ .../template/class_BaseTemplateEngine.php | 11 +-- 11 files changed, 124 insertions(+), 18 deletions(-) create mode 100644 inc/classes/main/controller/web/class_WebRegisterController.php diff --git a/.gitattributes b/.gitattributes index bec7301..268477a 100644 --- a/.gitattributes +++ b/.gitattributes @@ -402,6 +402,7 @@ inc/classes/main/controller/web/class_WebDefaultController.php -text inc/classes/main/controller/web/class_WebDefaultNewsController.php -text inc/classes/main/controller/web/class_WebLoginController.php -text inc/classes/main/controller/web/class_WebLoginFailedController.php -text +inc/classes/main/controller/web/class_WebRegisterController.php -text inc/classes/main/criteria/.htaccess -text inc/classes/main/criteria/class_DataSetCriteria.php -text inc/classes/main/criteria/class_SearchCriteria.php -text diff --git a/inc/classes/exceptions/controller/class_DefaultControllerException.php b/inc/classes/exceptions/controller/class_DefaultControllerException.php index e6be3a1..02c2010 100644 --- a/inc/classes/exceptions/controller/class_DefaultControllerException.php +++ b/inc/classes/exceptions/controller/class_DefaultControllerException.php @@ -37,7 +37,7 @@ class DefaultControllerException extends FrameworkException { ); // Set extra data - $this->setExtraData($resolverInstance->getClassName()); + $this->setExtraData($resolverInstance->getClassName().":".$this->getLine()); // Call parent contructor with message parent::__construct($message, $code); diff --git a/inc/classes/exceptions/controller/class_InvalidControllerException.php b/inc/classes/exceptions/controller/class_InvalidControllerException.php index 2546e72..ee7adaa 100644 --- a/inc/classes/exceptions/controller/class_InvalidControllerException.php +++ b/inc/classes/exceptions/controller/class_InvalidControllerException.php @@ -39,7 +39,7 @@ class InvalidControllerException extends FrameworkException { ); // Set extra data - $this->setExtraData($msgArray[0]->getClassName()); + $this->setExtraData($msgArray[0]->getClassName().":".$this->getLine()); // Call parent contructor with message parent::__construct($message, $code); diff --git a/inc/classes/exceptions/main/class_ConfigEntryNotFoundException.php b/inc/classes/exceptions/main/class_ConfigEntryNotFoundException.php index d7d2c95..96dbc42 100644 --- a/inc/classes/exceptions/main/class_ConfigEntryNotFoundException.php +++ b/inc/classes/exceptions/main/class_ConfigEntryNotFoundException.php @@ -38,7 +38,7 @@ class ConfigEntryNotFoundException extends FrameworkException { ); // Set extra data - $this->setExtraData($classArray[1]); + $this->setExtraData($classArray[1].":".$this->getLine()); // Call parent constructor parent::__construct($message, $code); diff --git a/inc/classes/exceptions/main/class_InvalidCommandException.php b/inc/classes/exceptions/main/class_InvalidCommandException.php index dd36dba..ca71e2e 100644 --- a/inc/classes/exceptions/main/class_InvalidCommandException.php +++ b/inc/classes/exceptions/main/class_InvalidCommandException.php @@ -39,7 +39,7 @@ class InvalidCommandException extends FrameworkException { ); // Set extra data - $this->setExtraData($msgArray[0]->getClassName()); + $this->setExtraData($msgArray[0]->getClassName().":".$this->getLine()); // Call parent constructor parent::__construct($message, $code); diff --git a/inc/classes/main/controller/web/class_WebRegisterController.php b/inc/classes/main/controller/web/class_WebRegisterController.php new file mode 100644 index 0000000..f4d749c --- /dev/null +++ b/inc/classes/main/controller/web/class_WebRegisterController.php @@ -0,0 +1,92 @@ + + * @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 WebRegisterController extends BaseController implements Controller { + /** + * Protected constructor + * + * @return void + */ + protected function __construct () { + // Call parent constructor + parent::__construct(__CLASS__); + + // Set part description + $this->setObjectDescription("Controller for register form"); + + // Create unique ID number + $this->generateUniqueId(); + } + + /** + * Creates an instance of this class + * + * @param $resolverInstance An instance of a command resolver class + * @return $controllerInstance A prepared instance of this class + * @todo Add some filters to this controller + */ + public final static function createWebRegisterController (CommandResolver $resolverInstance) { + // Create the instance + $controllerInstance = new WebRegisterController(); + + // Set the command resolver + $controllerInstance->setResolverInstance($resolverInstance); + + + // Return the prepared instance + return $controllerInstance; + } + + /** + * Handles the given request and response + * + * @param $requestInstance An instance of a request class + * @param $responseInstance An instance of a response class + * @return void + */ + public function handleRequest (Requestable $requestInstance, Responseable $responseInstance) { + // Get the command instance from the resolver by sending a request instance to the resolver + $commandInstance = $this->getResolverInstance()->resolveCommandByRequest($requestInstance); + + // Add more filters by the command + $commandInstance->addExtraFilters($this, $requestInstance); + + // Run the pre filters + $this->executePreFilters($requestInstance, $responseInstance); + + // This request was valid! :-D + $requestInstance->requestIsValid(); + + // Execute the command + $commandInstance->execute($requestInstance, $responseInstance); + + // Run the pre filters + $this->executePostFilters($requestInstance, $responseInstance); + + // Flush the response out + $responseInstance->flushBuffer(); + } +} + +// [EOF] +?> diff --git a/inc/classes/main/resolver/controller/class_BaseControllerResolver.php b/inc/classes/main/resolver/controller/class_BaseControllerResolver.php index 2081745..75a1b8e 100644 --- a/inc/classes/main/resolver/controller/class_BaseControllerResolver.php +++ b/inc/classes/main/resolver/controller/class_BaseControllerResolver.php @@ -102,14 +102,14 @@ class BaseControllerResolver extends BaseResolver { if (class_exists($this->getClassName())) { // This class does exist. :-) $isValid = true; - } elseif (($this->getClassName() != "WebDefaultController") && ($this->getClassName() != "WebDefaultNewsController")) { + } elseif (($this->getClassName() != $this->controllerPrefix."DefaultController") && ($this->getClassName() != $this->controllerPrefix."DefaultNewsController")) { // Do we have news? if ($this->getConfigInstance()->readConfig('page_with_news') == $this->getApplicationInstance()->getRequestInstance()->getRequestElement('page')) { // Yes, display news in home then set default controller with news - $this->setClassName("WebDefaultNewsController"); + $this->setClassName($this->controllerPrefix."DefaultNewsController"); } else { // No news at "home" page or non-news page - $this->setClassName("WebDefaultController"); + $this->setClassName($this->controllerPrefix."DefaultController"); } } else { // All is tried, give it up here diff --git a/inc/classes/main/resolver/controller/image/class_ImageControllerResolver.php b/inc/classes/main/resolver/controller/image/class_ImageControllerResolver.php index 9b982f8..b0b75c8 100644 --- a/inc/classes/main/resolver/controller/image/class_ImageControllerResolver.php +++ b/inc/classes/main/resolver/controller/image/class_ImageControllerResolver.php @@ -122,7 +122,7 @@ class ImageControllerResolver extends BaseControllerResolver implements Controll * * @param $controllerName A controller name we shall look for * @return $controllerInstance A loaded controller instance - * @throws InvalidControllerException Thrown if even the requested + * @throws DefaultControllerException Thrown if even the default * controller class is missing (bad!) */ private function loadController ($controllerName) { @@ -153,7 +153,7 @@ class ImageControllerResolver extends BaseControllerResolver implements Controll // Is this class loaded? if (!class_exists($this->getClassName())) { - // Class not found, so try the default one or throw exception + // Class not found, so or throw an exception throw new InvalidControllerException(array($this, $controllerName), self::EXCEPTION_INVALID_CONTROLLER); } // END - if diff --git a/inc/classes/main/response/class_HttpResponse.php b/inc/classes/main/response/class_HttpResponse.php index 46979c7..d318969 100644 --- a/inc/classes/main/response/class_HttpResponse.php +++ b/inc/classes/main/response/class_HttpResponse.php @@ -359,6 +359,16 @@ class HttpResponse extends BaseFrameworkSystem implements Responseable { $this->addCookie($cookieName, $_COOKIE[$cookieName], false); } // END - if } + + /** + * Getter for default command + * + * @return $defaultCommand Default command for this response + */ + public function getDefaultCommand () { + $defaultCommand = $this->getConfigInstance()->readConfig('default_web_command'); + return $defaultCommand; + } } // [EOF] diff --git a/inc/classes/main/response/class_ImageResponse.php b/inc/classes/main/response/class_ImageResponse.php index 3d16954..065caba 100644 --- a/inc/classes/main/response/class_ImageResponse.php +++ b/inc/classes/main/response/class_ImageResponse.php @@ -384,6 +384,16 @@ class ImageResponse extends BaseFrameworkSystem implements Responseable { public final function setImageInstance (BaseImage $imageInstance) { $this->imageInstance = $imageInstance; } + + /** + * Getter for default command + * + * @return $defaultCommand Default command for this response + */ + public function getDefaultCommand () { + $defaultCommand = $this->getConfigInstance()->readConfig('default_image_command'); + return $defaultCommand; + } } // [EOF] diff --git a/inc/classes/main/template/class_BaseTemplateEngine.php b/inc/classes/main/template/class_BaseTemplateEngine.php index aa5b2ab..bdeec74 100644 --- a/inc/classes/main/template/class_BaseTemplateEngine.php +++ b/inc/classes/main/template/class_BaseTemplateEngine.php @@ -993,9 +993,6 @@ class BaseTemplateEngine extends BaseFrameworkSystem { $eval = sprintf("%s<%%php %s %%>%s", $evalLeft, $evalMiddle, $evalRight); } // END - while - // Get length for check if PHP code was found - $evalLength = strlen($eval); - // Prepare PHP code for eval() command $eval = str_replace( "<%php", "\";", @@ -1004,12 +1001,8 @@ class BaseTemplateEngine extends BaseFrameworkSystem { ) ); - // Was PHP code found in template? - if (strlen($eval) != $evalLength) { - // Run the constructed command. This will "compile" all variables in - @eval($eval); - //* DEBUG: */ print("
".htmlentities($eval)."
"); - } // END - if + // Run the constructed command. This will "compile" all variables in + @eval($eval); // Goes something wrong? if (!isset($result)) { -- 2.39.5