Example #1
0
 /**
  * Retrieve default controller class
  *
  * Determines whether the default controller to use lies within the
  * requested module, or if the global default should be used.
  *
  * By default, will only use the module default unless that controller does
  * not exist; if this is the case, it falls back to the default controller
  * in the default module.
  *
  * @param \Zend\Controller\Request\AbstractRequest $request
  * @return string
  */
 public function getDefaultControllerClass(Request\AbstractRequest $request)
 {
     $controller = $this->getDefaultControllerName();
     $default = $this->formatControllerName($controller);
     $request->setControllerName($controller)->setActionName(null);
     $module = $request->getModuleName();
     $controllerDirs = $this->getControllerDirectory();
     $this->_curModule = $this->_defaultModule;
     $this->_curDirectory = $controllerDirs[$this->_defaultModule];
     if ($this->isValidModule($module)) {
         $found = false;
         if (class_exists($default, false)) {
             $found = true;
         } else {
             $moduleDir = $controllerDirs[$module];
             $fileSpec = $moduleDir . DIRECTORY_SEPARATOR . $this->classToFilename($default);
             if (\Zend\Loader::isReadable($fileSpec)) {
                 $found = true;
                 $this->_curDirectory = $moduleDir;
             }
         }
         if ($found) {
             $request->setModuleName($module);
             $this->_curModule = $this->formatModuleName($module);
         }
     } else {
         $request->setModuleName($this->_defaultModule);
     }
     return $default;
 }