* controller was not found one of the default controllers will be used
* depending on whether news shall be displayed.
*
+ * @param $namespace Namespace to look in
* @param $controllerName A controller name we shall look for
* @return $controllerInstance A loaded controller instance
* @throws InvalidControllerException Thrown if even the requested
* controller class is missing (bad!)
*/
- protected function loadController ($controllerName) {
+ protected function loadController ($namespace, $controllerName) {
// Cache default controller
$defaultController = $this->getConfigInstance()->getConfigEntry('default_' . strtolower($this->getClassPrefix()) . '_controller');
// Init controller instance
$controllerInstance = NULL;
+ // Create full class name
+ $className = sprintf(
+ '%s\%sDefaultNewsController',
+ $namespace,
+ $this->getCapitalizedClassPrefix()
+ );
+
// Default controller
- $this->setClassName($this->getCapitalizedClassPrefix() . 'DefaultNewsController');
+ $this->setClassName($className);
// Generate the class name
//* DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('BEFORE: controller=' . $controllerName);
$this->setClassName($className);
} else {
// No news at main controller or non-news controller
- $this->setClassName($this->getCapitalizedClassPrefix() . 'DefaultNewsController');
+ $this->setClassName($className);
}
//* DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput('AFTER: controller=' . $this->getClassName());
/**
* Checks whether the given controller is valid
*
+ * @param $namespace Namespace to look in, no trailing backslash
* @param $controllerName The default controller we shall execute
* @return $isValid Whether the given controller is valid
* @throws EmptyVariableException Thrown if given controller is not set
* @throws DefaultControllerException Thrown if default controller was not found
*/
- public function isControllerValid ($controllerName) {
+ public function isControllerValid ($namespace, $controllerName) {
// By default nothing shall be valid
$isValid = FALSE;
- // Is a controller set?
- if (empty($controllerName)) {
+ // Is namespace and controller name set?
+ if (empty($namespace)) {
+ // Then thrown an exception here
+ throw new EmptyVariableException(array($this, 'namespace'), self::EXCEPTION_UNEXPECTED_EMPTY_STRING);
+ } elseif (empty($controllerName)) {
// Then thrown an exception here
throw new EmptyVariableException(array($this, 'controllerName'), self::EXCEPTION_UNEXPECTED_EMPTY_STRING);
} // END - if
// Create class name
- $className = $this->getCapitalizedClassPrefix() . self::convertToClassName($controllerName) . 'Controller';
+ $className = sprintf(
+ '%s\%sController',
+ $namespace,
+ $this->getCapitalizedClassPrefix() . self::convertToClassName($controllerName)
+ );
+ $newsControllerName = sprintf(
+ '%s\%sDefaultNewsController',
+ $namespace,
+ $this->getCapitalizedClassPrefix()
+ );
+
+ // Debug message
+ /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__, __LINE__)->debugOutput(sprintf('className=%s', $className));
// Now, let us create the full name of the controller class
$this->setClassName($className);
if (class_exists($this->getClassName())) {
// This class does exist. :-)
$isValid = TRUE;
- } elseif ($this->getClassName() != $this->getCapitalizedClassPrefix() . 'DefaultNewsController') {
+ } elseif ($this->getClassName() != $newsControllerName) {
// Set default controller
- $this->setClassName($this->getCapitalizedClassPrefix() . 'DefaultNewsController');
+ $this->setClassName($newsControllerName);
} else {
// All is tried, give it up here
throw new DefaultControllerException($this, self::EXCEPTION_DEFAULT_CONTROLLER_GONE);
$controllerName = '';
$controllerInstance = NULL;
- // Get the controller name
+ // Get namespace and controller name
+ $namespace = $this->getNamespace();
$controllerName = $this->getControllerName();
// Get the controller
- $controllerInstance = $this->loadController($controllerName);
+ $controllerInstance = $this->loadController($namspace, $controllerName);
// And validate it
if ((!is_object($controllerInstance)) || (!$controllerInstance instanceof Controller)) {