/** * Get controller class name * * Try request first; if not found, try pulling from request parameter; * if still not found, fallback to default * * @param Zend_Controller_Request_Abstract $request * * @return string|false Returns class name on success */ public function getControllerClass(Zend_Controller_Request_Abstract $request) { $controllerName = $request->getControllerName(); if (empty($controllerName)) { if (!$this->getParam('useDefaultControllerAlways')) { return false; } $controllerName = $this->getDefaultControllerName(); $request->setControllerName($controllerName); } // Zend 1.10+ changes $className = $this->formatControllerName($controllerName); $controllerDirs = $this->getControllerDirectory(); $module = $request->getModuleName(); if ($this->isValidModule($module)) { $this->_curModule = $module; $this->_curDirectory = $controllerDirs[$module]; } elseif ($this->isValidModule($this->_defaultModule)) { $request->setModuleName($this->_defaultModule); $this->_curModule = $this->_defaultModule; $this->_curDirectory = $controllerDirs[$this->_defaultModule]; } else { require_once 'Zend/Controller/Exception.php'; throw new Zend_Controller_Exception('No default module defined for this application'); } // PATCH // if component manager has controller registered // redirect to specific controller dir index if (null !== $this->_extensionManager) { if ($this->_extensionManager->isComponentRegistered($controllerName)) { $dir = $this->_extensionManager->getComponentPrefix() . $controllerName; $this->_curDirectory = $controllerDirs[$dir]; } } return $className; }