X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=inc%2Fclasses%2Fmain%2Fresolver%2Fcontroller%2Fweb%2Fclass_WebControllerResolver.php;h=5378006099a8c964f98d01ab13826f24133866bb;hb=df33e264f3246f80756d7e2da55d7f7c40f9088c;hp=777f8edd926946998c3932c79c8cc11e18848e75;hpb=d5e40277c2607f2cb130ab9fde84f8fbdb832ce4;p=shipsimu.git diff --git a/inc/classes/main/resolver/controller/web/class_WebControllerResolver.php b/inc/classes/main/resolver/controller/web/class_WebControllerResolver.php index 777f8ed..5378006 100644 --- a/inc/classes/main/resolver/controller/web/class_WebControllerResolver.php +++ b/inc/classes/main/resolver/controller/web/class_WebControllerResolver.php @@ -4,7 +4,7 @@ * * @author Roland Haeder * @version 0.0.0 - * @copyright Copyright(c) 2007, 2008 Roland Haeder, this is free software + * @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 * @@ -41,12 +41,6 @@ class WebControllerResolver extends BaseControllerResolver implements Controller // Call parent constructor parent::__construct(__CLASS__); - // Set part description - $this->setObjectDescription("Resolver for local web controllers"); - - // Create unique ID number - $this->generateUniqueId(); - // Set prefix to "Web" $this->setControllerPrefix("Web"); } @@ -57,8 +51,8 @@ class WebControllerResolver extends BaseControllerResolver implements Controller * @param $controllerName The controller we shall resolve * @param $appInstance An instance of a manageable application helper class * @return $resolverInstance The prepared controller resolver instance - * @throws EmptyVariableException Thrown if the default command is not set - * @throws InvalidControllerException Thrown if the default controller is invalid + * @throws EmptyVariableException Thrown if default command is not set + * @throws InvalidControllerException Thrown if default controller is invalid */ public final static function createWebControllerResolver ($controllerName, ManageableApplication $appInstance) { // Create the new instance @@ -68,7 +62,7 @@ class WebControllerResolver extends BaseControllerResolver implements Controller if (empty($controllerName)) { // Then thrown an exception here throw new EmptyVariableException(array($resolverInstance, 'commandName'), self::EXCEPTION_UNEXPECTED_EMPTY_STRING); - } elseif (!$resolverInstance->isControllerValid($controllerName)) { + } elseif ($resolverInstance->isControllerValid($controllerName) === false) { // Invalid command found throw new InvalidControllerException(array($resolverInstance, $controllerName), self::EXCEPTION_INVALID_CONTROLLER); } @@ -126,9 +120,6 @@ class WebControllerResolver extends BaseControllerResolver implements Controller * controller class is missing (bad!) */ private function loadController ($controllerName) { - // Debug message - //* DEBUG: */ $this->debugBackTrace(); - // Cache default command $defaultController = $this->getConfigInstance()->readConfig('default_web_command'); @@ -136,7 +127,7 @@ class WebControllerResolver extends BaseControllerResolver implements Controller $controllerInstance = null; // Default controller - $this->setClassName("WebDefaultController"); + $this->setClassName('WebDefaultController'); // Generate the class name //* DEBUG: */ echo __METHOD__.": Controller=".$controllerName; @@ -147,10 +138,10 @@ class WebControllerResolver extends BaseControllerResolver implements Controller )); } elseif ($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('WebDefaultNewsController'); } else { - // No news at "home" page or non-news page - $this->setClassName("WebDefaultController"); + // No news at home page or non-news page + $this->setClassName('WebDefaultController'); } //* DEBUG: */ echo ", controller=".$this->getClassName()."
\n"; @@ -160,11 +151,26 @@ class WebControllerResolver extends BaseControllerResolver implements Controller throw new InvalidControllerException(array($this, $controllerName), self::EXCEPTION_INVALID_CONTROLLER); } // END - if + // Set default resolver config name + $resolverConfigEntry = ""; + + // Try to read a config entry for our resolver including controller name... ;-) + try { + // Create the resolver name + $resolverConfigEntry = sprintf("web_cmd_%s_resolver_class", strtolower($controllerName)); + + // Get the config, this will throw an exception if there is no special command resolver + $resolverClass = $this->getConfigInstance()->readConfig($resolverConfigEntry); + } catch (ConfigEntryNotFoundException $e) { + // Use default resolver entry + $resolverConfigEntry = "web_cmd_resolver_class"; + } + // Initiate the resolver and controller - $resolverInstance = ObjectFactory::createObjectByConfiguredName('web_cmd_resolver_class', array($controllerName, $this->getApplicationInstance())); + $resolverInstance = ObjectFactory::createObjectByConfiguredName($resolverConfigEntry, array($controllerName, $this->getApplicationInstance())); $controllerInstance = ObjectFactory::createObjectByName($this->getClassName(), array($resolverInstance)); - // Remove resolver + // Remove resolver (we don't need it anymore) unset($resolverInstance); // Return the result