/** * routeShutdown * 在 路由器 完成请求的路由后被调用 * @param Zend_Controller_Request_Abstract $request * @return void */ public function routeShutdown(Zend_Controller_Request_Abstract $request) { /** * 检测请求的Content-type类型 */ $pathinfo = $request->getPathInfo(); if (!empty($pathinfo)) { if ($extension = pathinfo($pathinfo, PATHINFO_EXTENSION)) { if (preg_match('/^[-a-z0-9]+$/i', $extension)) { $request->setParam(static::KEY_EXT, strtolower($extension)); } } } /** * 检测是否支持json响应 */ if ($request->getParam(static::KEY_EXT) == '') { $accept = $request->getServer('HTTP_ACCEPT'); if (!empty($accept)) { if (strpos($accept, 'json') !== false) { $request->setParam(static::KEY_EXT, 'json'); } } } /** * 格式化请求目标信息,不允许[-a-zA-Z0-9]以外的字符 */ $pattern = '/[^-a-zA-Z0-9].*/'; $request->setModuleName(preg_replace($pattern, '', $request->getModuleName())); $request->setControllerName(preg_replace($pattern, '', $request->getControllerName())); $request->setActionName(preg_replace($pattern, '', $request->getActionName())); }
public function route(Zend_Controller_Request_Abstract $dispatcher) { try { $getopt = new Zend_Console_Getopt(array('verbose|v' => 'Print verbose output', 'file|f=s' => 'File to upload')); $getopt->parse; $arguments = $getopt->getRemainingArgs(); } catch (Zend_Console_Getopt_Exception $e) { echo $e->getUsageMessage(); exit; } if ($arguments) { $command = array_shift($arguments); $action = array_shift($arguments); if (!preg_match('~\\W~', $command)) { $dispatcher->setControllerName($command); $dispatcher->setActionName($action); $dispatcher->setParams($arguments); if (isset($getopt->v)) { $dispatcher->setParam('verbose', true); } if (isset($getopt->f)) { $dispatcher->setParam('file', $getopt->f); } return $dispatcher; } echo "Invalid command.\n", exit; } echo "No command given.\n", exit; }
/** * Retrieves the request object * * @return Zend_Controller_Request_Abstract */ public function getRequest() { if (null === $this->_request) { $options = $this->getOptions(); // Don't instantiate an HTTP request in CLI mode if (PHP_SAPI == 'cli') { $this->_request = new Zend_Controller_Request_Simple(); } else { // Load Apache-specific request object if applicable $this->_request = function_exists('apache_get_version') ? new Zend_Controller_Request_Apache404() : new Zend_Controller_Request_Http(); } // Store the config settings, if any, in the request foreach ($options as $key => $value) { $method = 'set' . $key; // E.g. "setBaseUrl", "setParams" if (method_exists($this->_request, $method)) { $this->_request->{$method}($value); } else { $this->_request->setParam($key, $value); } } // Store the request in the front controller $this->_bootstrap->bootstrap('FrontController'); $front = $this->_bootstrap->getResource('FrontController'); $front->setRequest($this->_request); } return $this->_request; }
/** * @param Zend_Controller_Request_Abstract $oHttpRequest */ public function preDispatch(Zend_Controller_Request_Abstract $oHttpRequest) { $sControllerName = $oHttpRequest->getControllerName(); $sActionName = $oHttpRequest->getActionName(); $aRequestedParams = $oHttpRequest->getUserParams(); $sQuery = ''; unset($aRequestedParams['controller']); unset($aRequestedParams['action']); // Define user role if (Zend_Auth::getInstance()->hasIdentity()) { $aData = Zend_Auth::getInstance()->getStorage()->read(); $sRole = $aData['role']; } else { // Default role $sRole = 'guest'; } // Check access if (!$this->_oAcl->isAllowed($sRole, $sControllerName, $sActionName)) { $oHttpRequest->setParam('referer_controller', $sControllerName); $oHttpRequest->setParam('referer_action', $sActionName); $aParams = array(); if (count($aRequestedParams)) { foreach ($aRequestedParams as $sKey => $sValue) { $aParams[] = $sKey; $aParams[] = $sValue; } $sQuery = implode('/', $aParams) . '/'; } $oHttpRequest->setParam('query', $sQuery); $oHttpRequest->setControllerName('auth')->setActionName('login'); $this->_response->setHttpResponseCode(401); } }
/** * @param Zend_Controller_Request_Abstract $request */ public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request) { if (!$request instanceof Zend_Controller_Request_Http) { return; } // Accept URI parameter over Accept header for specifying of desired response format $format = $this->getRequest()->getParam('format') ?: $request->getHeader('Accept'); // @todo Need to look into implementing Accept header supporting multiple types with quality factors switch (true) { // XML case stristr($format, 'text/xml') && !stristr($format, 'html'): $request->setParam('format', 'xml'); break; // JSONP/Javascript // JSONP/Javascript case stristr($format, 'text/javascript'): $request->setParam('format', 'js'); break; // JSON // JSON case stristr($format, 'application/json'): default: // Note the fall through! $request->setParam('format', 'json'); break; } }
public function preDispatch(Zend_Controller_Request_Abstract $request) { try { $module = $request->getModuleName(); if ($module == 'admin') { $moduleList = new Zend_Session_Namespace('moduleList'); $userInfo = new Zend_Session_Namespace('userInfo'); $module = $moduleList->module; $allowed_module = $userInfo->module_list; //generating all resources $acl = new Zend_Acl(); //generating user permission $acl->addRole(new Zend_Acl_Role('admin')); $acl->addRole(new Zend_Acl_Role('anonymous')); $acl->add(new Zend_Acl_Resource('index')); $acl->add(new Zend_Acl_Resource('ajax')); $acl->allow('admin', 'index'); $acl->allow('admin', 'ajax'); if (!empty($module)) { foreach ($module as $value) { if (!$acl->has($value['controller'])) { $acl->add(new Zend_Acl_Resource($value['controller'])); } if (in_array($value['id'], $allowed_module)) { if ($value['action'] != null) { $acl->allow('admin', $value['controller'], $value['action']); } else { $acl->allow('admin', $value['controller']); } } } } //allowing anonymous user to get into the login page $acl->allow('anonymous', 'index', 'index'); $acl->allow('anonymous', 'index', 'login'); $auth = Zend_Auth::getInstance(); if ($auth->hasIdentity()) { $role = 'admin'; } else { $role = 'anonymous'; } $controller = $request->controller; $action = $request->action; if (!$acl->isAllowed($role, $controller, $action)) { $request->setModuleName('admin'); $request->setControllerName('error'); $request->setActionName('acl'); $request->setParam('type', 1); } } } catch (Zend_Acl_Exception $e) { $request->setModuleName('admin'); $request->setControllerName('error'); $request->setActionName('acl'); $request->setParam('type', 2); } }
/** * Reset object states * * @return void */ public function resetObjects() { $params = $this->request->getUserParams(); foreach (array_keys($params) as $key) { $this->request->setParam($key, null); } $this->response->clearBody(); $this->response->clearHeaders()->clearRawHeaders(); }
public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request) { $header = $request->getHeader('Accept'); if (strstr($header, 'application/json')) { $request->setParam('format', 'json'); } elseif (strstr($header, 'application/xml')) { $request->setParam('format', 'xml'); } else { $request->setParam('format', 'html'); } }
/** * @params \Zend_Controller_Request_Abstract $dispatcher * @params string $paramString */ protected function setCliParamsToDispatcher(\Zend_Controller_Request_Abstract $dispatcher, $paramString) { if (!empty($paramString)) { $decodeFunctions = array('decode_none', 'decode_base64', 'decode_base32', 'decode_base32hex', 'decode_hex'); foreach ($decodeFunctions as $decoder) { $decodedPararms = $this->{$decoder}($paramString); if (!empty($decodedPararms) && $this->isJsonString($decodedPararms)) { $dispatcher->setParam('params', $decodedPararms); return; } } } $dispatcher->setParam('params', $paramString); }
/** * Pre dispatch * * @author Eddie Jaoude * @param Zend_Controller_Request_Abstract $request * @return void * */ public function preDispatch(Zend_Controller_Request_Abstract $request) { # get application objects $_registry = Zend_Registry::getInstance(); # clone objects for ease of use $_em = $_registry->doctrine->_em; $_logger = $_registry->logger; # helper $_flashMessenger = Zend_Controller_Action_HelperBroker::getStaticHelper('FlashMessenger'); # send to actions $request->setParam('_registry', $_registry); $request->setParam('_em', $_em); $request->setParam('_logger', $_logger); $request->setParam('_flashMessenger', $_flashMessenger); }
public function routeStartup(Zend_Controller_Request_Abstract $request) { if (substr($request->getRequestUri(), 0, -1) == $request->getBaseUrl()) { $request->setRequestUri($request->getRequestUri() . Zend_Registry::get('parameters')->registry->defaultlanguage . "/"); $request->setParam("language", Zend_Registry::get('parameters')->registry->defaultlanguage); } }
public function route(Zend_Controller_Request_Abstract $dispatcher) { $getopt = new Zend_Console_Getopt(array()); $arguments = $getopt->getRemainingArgs(); $controller = 'index'; $action = 'index'; if ($arguments) { $controller = array_shift($arguments); if ($arguments) { $action = array_shift($arguments); $pattern_valid_action = '~^\\w+[\\-\\w\\d]+$~'; if (false == preg_match($pattern_valid_action, $action)) { echo "Invalid action {$action}.\n", exit; } if ($arguments) { foreach ($arguments as $arg) { $parameter = explode('=', $arg, 2); if (false == isset($parameter[1])) { $parameter[1] = true; } $dispatcher->setParam($parameter[0], $parameter[1]); unset($parameter); } } } } $dispatcher->setControllerName($controller)->setActionName($action); return $dispatcher; }
public function apply(Zend_Controller_Request_Abstract $request, $filterBlock) { // very small optimization $catId = (int) Mage::helper('adjnav')->getParam($this->getRequestVar()); if ($catId) { $request->setParam($this->getRequestVar(), $catId); parent::apply($request, $filterBlock); } $category = $this->getCategory(); if (!Mage::registry('current_category_filter')) { Mage::register('current_category_filter', $category); } if (!isset($filter) || !$filter) { $this->addCategoryFilter($category, null); return $this; } $this->_appliedCategory = Mage::getModel('catalog/category')->setStoreId(Mage::app()->getStore()->getId())->load($filter); if ($this->_isValidCategory($this->_appliedCategory)) { /* $this->getLayer()->getProductCollection() ->addCategoryFilter($this->_appliedCategory); */ $this->addCategoryFilter($this->_appliedCategory, $filter); $this->getLayer()->getState()->addFilter($this->_createItem($this->_appliedCategory->getName(), $filter)); } return $this; }
public function preDispatch(Zend_Controller_Request_Abstract $request) { $context = $request->getHeader('X-Zrt-Format'); if ($context) { $request->setParam('format', $context); } }
public function preDispatch(Zend_Controller_Request_Abstract $request) { if ($request->getParam('sid') !== null && $request->getParam('PHPSESSID') === null) { $request->setParam('PHPSESSID', $request->getParam('sid')); } if ($request->getParam('PHPSESSID') === null) { $module = strtolower($request->getModuleName()); $controller = strtolower($request->getControllerName()); $action = strtolower($request->getActionName()); $route = $module . '/' . $controller . '/' . $action; if (!in_array($route, $this->_whitelist)) { if (is_null($this->_auth)) { $auth = Zend_Auth::getInstance(); $auth->setStorage(new Zend_Auth_Storage_Session($this->getStorage())); $this->_auth = $auth; } if (!$this->_auth->hasIdentity()) { $errorHandler = new ArrayObject(array(), ArrayObject::ARRAY_AS_PROPS); $errorHandler->type = 'EXCEPTION_NOT_ALLOWED'; $errorHandler->exception = new Zend_Controller_Action_Exception('No credentials available'); $errorHandler->request = clone $request; $request->setParam('error_handler', $errorHandler)->setModuleName($this->getErrorHandlerModule())->setControllerName($this->getErrorHandlerController())->setActionName($this->getErrorHandlerAction()); } else { $this->_auth->getIdentity()->connect(); $this->_auth->getIdentity()->refresh(); } } } }
public function preDispatch(Zend_Controller_Request_Abstract $request) { /** * Pegando o helper Redirector */ $this->_redirect = Zend_Controller_Action_HelperBroker::getStaticHelper('Redirector'); /* * Instanciando as variáveis de sessão do zend_auth */ $authNamespace = new Zend_Session_Namespace('Zend_Auth'); /** * Copiando em variáves o modulo, controlle e action */ $module = strtolower($request->getModuleName()); $controller = strtolower($request->getControllerName()); $action = strtolower($request->getActionName()); /** * Se o usuário estiver autenticado */ if (Zend_Auth::getInstance()->hasIdentity()) { if (isset($authNamespace->timeout) && time() > $authNamespace->timeout) { /** * limpa a identidade do usuário que está um longo período sem acessar o controller */ $request->setModuleName('default'); $request->setControllerName('login'); $request->setActionName('logout'); $authNamespace->erro = 'Sua sessão expirou, favor logar novamente'; } else { /** * Usuário está ativo - atualizamos o time da sessão. */ $authNamespace->timeout = strtotime(self::$_ZEND_SESSION_NAMESPACE_EXPIRATION_SECONDS . " seconds"); /** * Renovando o timeout das variáves de sessão */ $namesspaces = Zend_Session::getIterator(); $namesspacesArrayCopy = $namesspaces->getArrayCopy(); foreach ($namesspacesArrayCopy as $namesspace) { $namesspace_each = new Zend_Session_Namespace($namesspace); //$namesspace_each->setExpirationSeconds(self::$_ZEND_SESSION_NAMESPACE_EXPIRATION_SECONDS); $namesspace_each->timeout = strtotime(self::$_ZEND_SESSION_NAMESPACE_EXPIRATION_SECONDS . " seconds"); $temp = $namesspace_each->timeout; } } } /** Se o usuário não possuir identidade ou a identidade foi removida devido ao timeout, * redirecionamos ele para a tela de login. */ if (!Zend_Auth::getInstance()->hasIdentity()) { if (!($module == 'default' && $controller == 'login' && $action == 'index') && !($module == 'default' && $controller == 'login' && $action == 'ajaxbanco')) { $request->setModuleName('default'); $request->setControllerName('login'); $request->setActionName('index'); $request->setParam('sessao', 'expirada'); } return; } }
/** * @param \Zend_Controller_Request_Abstract $request * @throws mixed */ protected function _handleError(\Zend_Controller_Request_Abstract $request) { // remove zend error handler $front = \Zend_Controller_Front::getInstance(); $front->unregisterPlugin("Zend_Controller_Plugin_ErrorHandler"); $response = $this->getResponse(); if ($response->isException() && !$this->_isInsideErrorHandlerLoop) { // get errorpage try { // enable error handler $front->setParam('noErrorHandler', false); $errorPath = Config::getSystemConfig()->documents->error_pages->default; if (Site::isSiteRequest()) { $site = Site::getCurrentSite(); $errorPath = $site->getErrorDocument(); } if (empty($errorPath)) { $errorPath = "/"; } $document = Document::getByPath($errorPath); if (!$document instanceof Document\Page) { // default is home $document = Document::getById(1); } if ($document instanceof Document\Page) { $params = Tool::getRoutingDefaults(); if ($module = $document->getModule()) { $params["module"] = $module; } if ($controller = $document->getController()) { $params["controller"] = $controller; $params["action"] = "index"; } if ($action = $document->getAction()) { $params["action"] = $action; } $this->setErrorHandler($params); $request->setParam("document", $document); \Zend_Registry::set("pimcore_error_document", $document); // ensure that a viewRenderer exists, and is enabled if (!\Zend_Controller_Action_HelperBroker::hasHelper("viewRenderer")) { $viewRenderer = new \Pimcore\Controller\Action\Helper\ViewRenderer(); \Zend_Controller_Action_HelperBroker::addHelper($viewRenderer); } $viewRenderer = \Zend_Controller_Action_HelperBroker::getExistingHelper("viewRenderer"); $viewRenderer->setNoRender(false); if ($viewRenderer->view === null) { $viewRenderer->initView(PIMCORE_WEBSITE_PATH . "/views"); } } } catch (\Exception $e) { \Logger::emergency("error page not found"); } } // call default ZF error handler parent::_handleError($request); }
public function apply(Zend_Controller_Request_Abstract $request, $filterBlock) { $catId = (int) Mage::helper('multilayer')->getParam($this->getRequestVar()); if ($catId) { $request->setParam($this->getRequestVar(), $catId); parent::apply($request, $filterBlock); } return $this; }
public function apply(Zend_Controller_Request_Abstract $request, $filterBlock) { // very small optimization $catId = (int) Mage::helper('layerednav')->getParam($this->getRequestVar()); if ($catId) { $request->setParam($this->getRequestVar(), $catId); parent::apply($request, $filterBlock); } return $this; }
/** * Locate path alias node * @see library/Zend/Controller/Plugin/Zend_Controller_Plugin_Abstract#routeStartup($request) * * @param Zend_Controller_Request_Abstract $request * @return void */ public function routeShutdown(Zend_Controller_Request_Abstract $request) { if ($request->getRequestUri() != "/" && ($path = Zoo::getService('path')->findPath($request->getRequestUri()))) { $content_service = Zoo::getService('content'); $request->setActionName($content_service->action); $request->setControllerName($content_service->controller); $request->setModuleName($content_service->module); $request->setParam('id', $path->nid); } }
public function preDispatch(Zend_Controller_Request_Abstract $request) { $lang = $request->getParam('lang', ''); if ($lang !== 'id' && $lang !== 'en') { $request->setParam('lang', 'id'); } $zl = new Zend_Locale(); $zl->setLocale($lang); Zend_Registry::set('Zend_Locale', $zl); }
public function routeStartup(Zend_Controller_Request_Abstract $request) { $request->setParam('View', Showcase_View_Smarty::factory('view.xml')); $request->getParam('View')->cache_handler_func = 'zend_cache_handler'; $request->getParam('View')->caching = 0; $viewRenderer = new Showcase_Controller_Action_Helper_ViewRenderer(); $viewRenderer->setViewSuffix('tpl')->setView($request->getParam('View'))->setViewBasePathSpec(Package::buildPath(SITE_DIR, 'views')); Zend_Controller_Action_HelperBroker::removeHelper('viewRenderer'); Zend_Controller_Action_HelperBroker::addHelper($viewRenderer); }
/** * postDispatch() plugin hook -- render layout * * @param Zend_Controller_Request_Abstract $request * @return void */ public function postDispatch(Zend_Controller_Request_Abstract $request) { $layout = $this->getLayout(); $helper = $this->getLayoutActionHelper(); // Return early if forward detected if (!$request->isDispatched() || $this->getResponse()->isRedirect() || $layout->getMvcSuccessfulActionOnly() && (!empty($helper) && !$helper->isActionControllerSuccessful())) { return; } // Return early if layout has been disabled if (!$layout->isEnabled() or !$this->getLayout()->isLoaded()) { return; } $response = $this->getResponse(); $content = $response->getBody(true); $contentKey = $layout->getContentKey(); if (isset($content['default'])) { $content[$contentKey] = $content['default']; } if ('default' != $contentKey) { unset($content['default']); } $layout->assign($content); $fullContent = null; $obStartLevel = ob_get_level(); try { $fullContent = $layout->render(); $response->setBody($fullContent); } catch (Exception $e) { while (ob_get_level() > $obStartLevel) { $fullContent .= ob_get_clean(); } $request->setParam('layoutFullContent', $fullContent); $request->setParam('layoutContent', $layout->content); $response->setBody(null); if (Zend_Controller_Front::getInstance()->throwExceptions()) { throw $e; } else { $this->getResponse()->setException($e); } } return $this; }
public function preDispatch(Zend_Controller_Request_Abstract $request) { if (Zend_Registry::isRegistered('error') && ($exception = Zend_Registry::get('error'))) { $error = new ArrayObject(array(), ArrayObject::ARRAY_AS_PROPS); $error->exception = $exception; $error->type = Zend_Controller_Plugin_ErrorHandler::EXCEPTION_OTHER; $error->request = clone $this->getRequest(); $request->setControllerName('Error'); $request->setParam('error_handler', $error); } return; }
public function routeShutdown(Zend_Controller_Request_Abstract $request) { require_once 'Sitengine/Env.php'; $frontController = Zend_Controller_Front::getInstance(); #print $request->getQuery(Sitengine_Env::PARAM_CONTROLLER); #Sitengine_Debug::print_r($frontController->getControllers()); $controllerName = $frontController->getController($request->getQuery(Sitengine_Env::PARAM_CONTROLLER)); $request->setParam(Sitengine_Env::PARAM_CONTROLLER, $controllerName); $request->setControllerName($controllerName); $request->setActionName($request->getQuery(Sitengine_Env::PARAM_ACTION)); #$frontController->getDispatcher()->dispatch($request, $frontController->getResponse()); }
/** * validateItemProperties * @return void * @author Thomas Schedler <*****@*****.**> * @version 1.0 */ protected function validateItemProperties() { if ($this->objRequest->getParam('formId', '') == '' && $this->objRequest->getParam('formVersion', '') == '' && (int) $this->objRequest->getParam('id') > 0) { $objData = $this->getModelGlobals()->loadProperties($this->objRequest->getParam('id')); if (count($objData) > 0) { $objGlobalProperties = $objData->current(); $this->objRequest->setParam('formId', $objGlobalProperties->genericFormId); $this->objRequest->setParam('formVersion', $objGlobalProperties->genericFormVersion); $this->objRequest->setParam('templateId', $objGlobalProperties->templateId); } } }
private function _changeDispatch(Zend_Controller_Request_Abstract &$request, Zend_Controller_Response_Abstract $response) { $module = $request->getParam($request->getModuleKey()); $controller = $request->getParam($request->getControllerKey()); $action = $request->getParam($request->getActionKey()); $submodule = ''; $subcontroller = ''; $subaction = ''; if ('admin' != $module) { $submodule = $module; $subcontroller = $controller ? $controller : 'index'; $subaction = $action ? $action : 'index'; $controller = 'index'; $action = 'subroute'; $module = 'default'; } else { $submodule = $controller; $subcontroller = $action ? $action : 'index'; //долно быть настроено в route //$subaction = ( $action ) ? $action : 'index'; $controller = 'index'; $action = 'subroute'; } $request->setParam($request->getModuleKey(), $module); $request->setModuleName($module); $request->setParam($request->getControllerKey(), $controller); $request->setControllerName($controller); $request->setParam($request->getActionKey(), $action); $request->setActionName($action); $request->setParam('submodule', $submodule); $request->setParam('subcontroller', $subcontroller); $request->setParam('subaction', $subaction); }
public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request) { $controller = $request->getControllerName(); $action = $request->getActionName(); if ($controller != 'user') { return; } if (!Zend_Auth::getInstance()->hasIdentity()) { $request->setControllerName('login'); $request->setActionName('index'); $request->setParam('message', 'You are trying to access a protected area. Please log in first.'); return; } }
public function preDispatch(Zend_Controller_Request_Abstract $request) { if ($acl = Zend_registry::get('Acl')) { if ($user = $request->getParam('User', null)) { if (($roles = $user->getRoles()) && count($roles)) { $clientRole = $roles[0]; $clientHelper = Zend_Controller_Action_HelperBroker::getStaticHelper('Client'); $client = $clientHelper->loadByGroup($clientRole->id); $request->setParam('Client', $client); $request->getParam('View')->register_object('client', $client); } } } }
public function routeShutdown(Zend_Controller_Request_Abstract $request) { try { $this->_statusRules($request->getModuleName(), $request->getControllerName(), $request->getActionName(), $request->getParam('resourceStack')); $this->_aclRules($request->getModuleName(), $request->getControllerName(), $request->getActionName(), $request->getParam('resourceStack'), $request->getQuery()); $this->_workflowRules($request->getModuleName(), $request->getControllerName(), $request->getActionName(), $request->getParam('resourceStack')); } catch (Saf_Controller_Front_Plugin_RouteRules_Exception $e) { Saf_Debug::out('Enforcing Routing Rule: ' . $e->getMessage()); $request->setModuleName($e->getModuleName()); $request->setControllerName($e->getControllerName()); $request->setActionName($e->getActionName()); $request->setParam('resourceStack', $e->getResourceStack()); } }