/** * Validate and Match Cms Page and modify request * * @param Zend_Controller_Request_Http $request * @return bool * * @SuppressWarnings(PHPMD.ExitExpression) */ public function match(Zend_Controller_Request_Http $request) { if (!Mage::isInstalled()) { Mage::app()->getFrontController()->getResponse()->setRedirect(Mage::getUrl('install'))->sendResponse(); exit; } $identifier = trim($request->getPathInfo(), '/'); $condition = new Varien_Object(array('identifier' => $identifier, 'continue' => true)); Mage::dispatchEvent('cms_controller_router_match_before', array('router' => $this, 'condition' => $condition)); $identifier = $condition->getIdentifier(); if ($condition->getRedirectUrl()) { Mage::app()->getFrontController()->getResponse()->setRedirect($condition->getRedirectUrl())->sendResponse(); $request->setDispatched(true); return Mage::getControllerInstance('Mage_Core_Controller_Varien_Action_Forward', $request, Mage::app()->getFrontController()->getResponse()); } if (!$condition->getContinue()) { return null; } $page = Mage::getModel('Mage_Cms_Model_Page'); $pageId = $page->checkIdentifier($identifier, Mage::app()->getStore()->getId()); if (!$pageId) { return null; } $request->setModuleName('cms')->setControllerName('page')->setActionName('view')->setParam('page_id', $pageId); $request->setAlias(Mage_Core_Model_Url_Rewrite::REWRITE_REQUEST_PATH_ALIAS, $identifier); return Mage::getControllerInstance('Mage_Core_Controller_Varien_Action_Forward', $request, Mage::app()->getFrontController()->getResponse()); }
protected function matchForwardMultilevel() { $pageId = $this->request->getPathInfo(); $pageId = $this->getUrlHelper()->checkRemoveSuffix($pageId); $pageId = trim($pageId, '/') . '/'; $cat = $this->matchMultilevel($pageId); if ($cat !== false) { if ($cat) { // normal category $result = $this->forwardCategory($cat); } else { // root category $this->forwardShopby(); $result = true; } if ($result && $this->urlMode == Amasty_Shopby_Model_Source_Url_Mode::MODE_SHORT && Mage::getStoreConfig('amshopby/seo/redirects_enabled')) { /** @var Amasty_Shopby_Model_Url_Builder $urlBuilder */ $urlBuilder = Mage::getModel('amshopby/url_builder'); $urlBuilder->reset(); $urlBuilder->mode = $this->urlMode; $url = $urlBuilder->getUrl(); Mage::app()->getResponse()->setRedirect($url, 301); } return true; } }
public function match(Zend_Controller_Request_Http $request) { if (!Mage::app()->isInstalled()) { Mage::app()->getFrontController()->getResponse()->setRedirect(Mage::getUrl('install'))->sendResponse(); exit; } $route = "f"; $identifier = $request->getPathInfo(); if (substr(str_replace("/", "", $identifier), 0, strlen($route)) != $route) { return false; } $identifier = substr_replace($request->getPathInfo(), '', 0, strlen("/" . $route . "/")); $identifier = str_replace('.html', '', $identifier); $identifier = str_replace('.htm', '', $identifier); $identifier = str_replace('.php', '', $identifier); if ($identifier[strlen($identifier) - 1] == "/") { $identifier = substr($identifier, '', -1); } $identifier = explode('/', $identifier, 3); if (isset($identifier[1]) && isset($identifier[0]) && !isset($identifier[2])) { $request->setModuleName('f')->setControllerName('index')->setActionName('view')->setParam('id', $identifier[0])->setParam('v', $identifier[1]); return true; } else { return false; } }
/** * Match the request against all enabled splash routes * * @return bool */ protected function _match() { $requestUri = trim($this->_request->getPathInfo(), '/'); Mage::dispatchEvent('attributeSplash_match_routes_before', array('router' => $this, 'request_uri' => $requestUri)); if ($this->getRequest()->getModuleName() === 'splash') { return true; } $isDoubleBarrel = strpos($requestUri, '/') !== false; $includeGroupUrlKey = Mage::getStoreConfigFlag('attributeSplash/page/include_group_url_key'); $urlSuffix = rtrim(Mage::getStoreConfig('attributeSplash/seo/url_suffix'), '/'); if ($urlSuffix) { if (substr($requestUri, -strlen($urlSuffix)) !== $urlSuffix) { return false; } $requestUri = substr($requestUri, 0, -strlen($urlSuffix)); } if ($isDoubleBarrel) { // Must be splash page if (!$includeGroupUrlKey) { // URL contains / but no group key so should be single return false; } list($groupUrlKey, $pageUrlKey) = explode('/', $requestUri); return $this->_loadSplashPage($pageUrlKey, $groupUrlKey); } else { if ($includeGroupUrlKey) { return $this->_loadSplashGroup($requestUri); } } if ($this->_loadSplashPage($requestUri)) { return true; } return $this->_loadSplashGroup($requestUri); }
public function match(Zend_Controller_Request_Http $request) { if (!Mage::app()->isInstalled()) { Mage::app()->getFrontController()->getResponse()->setRedirect(Mage::getUrl('install'))->sendResponse(); exit; } $route = Mage::helper('clnews')->getRoute(); $identifier = $request->getPathInfo(); if (substr(str_replace("/", "", $identifier), 0, strlen($route)) != $route) { return false; } $identifier = substr_replace($request->getPathInfo(), '', 0, strlen("/" . $route . "/")); $identifier = str_replace(Mage::helper('clnews')->getNewsitemUrlSuffix(), '', $identifier); if (substr($request->getPathInfo(), 0, 7) !== '/clnews') { if ($identifier == '') { $request->setModuleName('clnews')->setControllerName('index')->setActionName('index'); return true; } elseif (substr($identifier, 0, 9) === 'category/') { $len = strcspn($identifier, '/'); $key = substr($identifier, $len + 1); $request->setModuleName('clnews')->setControllerName('index')->setActionName('index')->setParam('category', $key); return true; } elseif (substr($identifier, 0, 4) === 'rss/') { $request->setModuleName('clnews')->setControllerName('rss')->setActionName('index'); return true; } elseif ($pos = strpos($identifier, '/print/article/')) { $param = substr($identifier, $pos + 15); $param = trim(str_replace('/', '', $param)); $request->setModuleName('clnews')->setControllerName('newsitem')->setActionName('print')->setParam('article', $param); return true; } elseif (substr($identifier, 0, 9) === 'newsitem/') { $str = str_replace('newsitem/view/id/', '', $identifier); $len = strcspn($identifier, '/'); $id = substr($identifier, 0, $len); $request->setModuleName('clnews')->setControllerName('newsitem')->setActionName('view')->setParam('id', $id); return true; } elseif ($pos = strpos($identifier, '/q/')) { $param = substr($identifier, $pos + 2); $param = trim(str_replace('/', '', $param)); $request->setModuleName('clnews')->setControllerName('index')->setActionName('index')->setParam('q', $param); return true; } elseif (substr($identifier, 0, 15) !== 'adminhtml_news/' && strpos($identifier, '/') && substr($request->getPathInfo(), 0, strlen($route) + 2) === '/' . $route . '/' && strpos($identifier, 'category/') === false) { $len = strcspn($identifier, '/'); $category = substr($identifier, 0, $len); $key = substr($identifier, $len + 1); $request->setModuleName('clnews')->setControllerName('newsitem')->setActionName('view')->setParams(array('category' => $category, 'key' => $key)); return true; } elseif (substr($request->getPathInfo(), 0, strlen($route) + 2) === '/' . $route . '/') { $request->setModuleName('clnews')->setControllerName('newsitem')->setActionName('view')->setParam('key', $identifier); return true; } } return false; }
/** * match the route * @param Zend_Controller_Request_Http $request * @return bool */ public function match(Zend_Controller_Request_Http $request) { //if magento is not installed redirect to install if (!Mage::isInstalled()) { Mage::app()->getFrontController()->getResponse()->setRedirect(Mage::getUrl('install'))->sendResponse(); exit; } //get the url key $urlKey = trim($request->getPathInfo(), '/'); //explode by slash $parts = explode('/', $urlKey); //if there are not 2 parts (tag/something) in the url we don't care about it. //return false and let the rest of the application take care of the url. if (count($parts) != 2) { return false; } //if the first part of the url key is not 'tag' we don't care about it //return false and let the rest of the application take care of the url if ($parts[0] != 'tag') { return false; } $tagName = urldecode($parts[1]); //tag name //load the tag model $tag = Mage::getModel('tag/tag')->loadByName($tagName); //if there is no tag with this name available in the current store just do nothing if (!$tag->getId() || !$tag->isAvailableInStore()) { return false; } //but if the tag is valid //say to magento that the request should be mapped to `tag/product/list/tagId/ID_HERE` - the original url $request->setModuleName('tag')->setControllerName('product')->setActionName('list')->setParam('tagId', $tag->getId()); $request->setAlias(Mage_Core_Model_Url_Rewrite::REWRITE_REQUEST_PATH_ALIAS, $urlKey); return true; }
public function match(Zend_Controller_Request_Http $request) { if (!Mage::isInstalled()) { Mage::app()->getFrontController()->getResponse()->setRedirect(Mage::getUrl('install'))->sendResponse(); exit; } /* @var $core Mana_Core_Helper_Data */ $core = Mage::helper('mana_core'); if ($core->getRoutePath() != '//') { return false; } /* @var $routerHelper Mana_Core_Helper_Router */ $routerHelper = Mage::helper('mana_core/router'); $path = ltrim($request->getPathInfo(), '/'); $urlKey = Mage::getStoreConfig('mana/ajax/url_key_filter'); $routeSeparator = Mage::getStoreConfig('mana/ajax/route_separator_filter'); if ($core->startsWith($path, $urlKey . '/') && ($pos = strpos($path, '/' . $routeSeparator . '/')) > strlen($urlKey . '/')) { $this->_route = substr($path, strlen($urlKey . '/'), $pos - strlen($urlKey . '/')); $path = substr($path, $pos + strlen('/' . $routeSeparator)); $routerHelper->changePath($path)->processWithoutRendering($this, 'render'); $baseUrl = parse_url(Mage::getUrl(null, array('_nosid' => true))); Mage::register('m_original_request_uri', $_SERVER['REQUEST_URI']); $_SERVER['REQUEST_URI'] = $baseUrl['path'] . ($path ? ltrim($path, '/') : '/') . (($queryPos = strpos($_SERVER['REQUEST_URI'], '?')) !== false ? substr($_SERVER['REQUEST_URI'], $queryPos) : ''); Mage::register('manapro_filterajax_request', 1); $this->getCatalogSession()->setData('manapro_filterajax_request', 1); if ($core->isEnterpriseUrlRewriteInstalled()) { $this->_getRequestRewriteController()->rewrite(); } else { Mage::getModel('core/url_rewrite')->rewrite(); } } return false; }
/** * Rewritten function of the standard controller. Tries to match the pathinfo on url parameters. * * @see Mage_Core_Controller_Varien_Router_Standard::match() * @param Zend_Controller_Request_Http $request The http request object that needs to be mapped on Action Controllers. */ public function match(Zend_Controller_Request_Http $request) { if (!Mage::isInstalled()) { Mage::app()->getFrontController()->getResponse()->setRedirect(Mage::getUrl('install'))->sendResponse(); exit; } $identifier = trim($request->getPathInfo(), '/'); // try to gather url parameters from parser. /* @var $parser Flagbit_FilterUrls_Model_Parser */ $parser = Mage::getModel('filterurls/parser'); $parsedRequestInfo = $parser->parseFilterInformationFromRequest($identifier, Mage::app()->getStore()->getId()); if (!$parsedRequestInfo) { return false; } Mage::register('filterurls_active', true); // if successfully gained url parameters, use them and dispatch ActionController action $request->setRouteName('catalog')->setModuleName('catalog')->setControllerName('category')->setActionName('view')->setParam('id', $parsedRequestInfo['categoryId']); $pathInfo = 'catalog/category/view/id/' . $parsedRequestInfo['categoryId']; $requestUri = '/' . $pathInfo . '?'; foreach ($parsedRequestInfo['additionalParams'] as $paramKey => $paramValue) { $requestUri .= $paramKey . '=' . $paramValue . '&'; } $controllerClassName = $this->_validateControllerClassName('Mage_Catalog', 'category'); $controllerInstance = Mage::getControllerInstance($controllerClassName, $request, $this->getFront()->getResponse()); $request->setRequestUri(substr($requestUri, 0, -1)); $request->setPathInfo($pathInfo); // dispatch action $request->setDispatched(true); $controllerInstance->dispatch('view'); $request->setAlias(Mage_Core_Model_Url_Rewrite::REWRITE_REQUEST_PATH_ALIAS, $identifier); return true; }
public function match(Zend_Controller_Request_Http $request) { if (!Mage::isInstalled()) { Mage::app()->getFrontController()->getResponse()->setRedirect(Mage::getUrl('install'))->sendResponse(); exit; } $identifier = trim($request->getPathInfo(), '/'); /* @var $parser Hackathon_Layeredlanding_Model_Layeredlanding */ $landingPage = Mage::getModel('layeredlanding/layeredlanding')->loadByUrl($identifier); if (!$landingPage->getId()) { return false; } Mage::register('current_landingpage', $landingPage); Mage::app()->getStore()->setConfig(Mage_Catalog_Helper_Category::XML_PATH_USE_CATEGORY_CANONICAL_TAG, 0); // disable canonical tag // if successfully gained url parameters, use them and dispatch ActionController action $categoryIdsValue = $landingPage->getCategoryIds(); $categoryIds = explode(',', $categoryIdsValue); $firstCategoryId = $categoryIds[0]; $request->setRouteName('catalog')->setModuleName('catalog')->setControllerName('category')->setActionName('view')->setParam('id', $firstCategoryId); /** @var $attribute Hackathon_Layeredlanding_Model_Attributes */ foreach ($landingPage->getAttributes() as $attribute) { $attr = Mage::getModel('eav/entity_attribute')->load($attribute->getAttributeId()); $request->setParam($attr->getAttributeCode(), $attribute->getValue()); } $controllerClassName = $this->_validateControllerClassName('Mage_Catalog', 'category'); $controllerInstance = Mage::getControllerInstance($controllerClassName, $request, $this->getFront()->getResponse()); $request->setAlias(Mage_Core_Model_Url_Rewrite::REWRITE_REQUEST_PATH_ALIAS, $identifier); // dispatch action $request->setDispatched(true); $controllerInstance->dispatch('view'); return true; }
/** * Validate and Match Cms Page and modify request * * @param Zend_Controller_Request_Http $request * @return bool */ public function match(Zend_Controller_Request_Http $request) { if (Mage::app()->getStore()->isAdmin()) { return false; } $pathInfo = $request->getPathInfo(); // remove suffix if any $suffix = Mage::helper('amlanding/url')->getSuffix(); if ($suffix && '/' != $suffix) { $pathInfo = str_replace($suffix, '', $pathInfo); } $pathInfo = explode('/', trim($pathInfo, '/ '), 2); $identifier = $pathInfo[0]; $params = isset($pathInfo[1]) ? $pathInfo[1] : ''; /* @var $page Amasty_Xlanding_Model_Page */ $page = Mage::getModel('amlanding/page'); $pageId = $page->checkIdentifier($identifier, Mage::app()->getStore()->getId()); if (!$pageId) { return false; } $params = trim($params, '/ '); if ($params) { $params = explode('/', $params); Mage::register('amshopby_current_params', $params); } $request->setModuleName('amlanding')->setControllerName('page')->setActionName('view')->setParam('page_id', $pageId)->setParam('am_landing', $identifier); return true; }
public function match(Zend_Controller_Request_Http $request) { if (!Mage::isInstalled()) { Mage::app()->getFrontController()->getResponse()->setRedirect(Mage::getUrl('install'))->sendResponse(); exit; } $identifier = trim($request->getPathInfo(), '/'); $parts = explode('/', $identifier); if (isset($parts[1]) && $parts[1] == 'reviews') { $product = Mage::getModel('catalog/product')->loadByAttribute('url_key', $parts[0]); if (isset($parts[2])) { $p = explode('-', $parts[2]); $id = (int) end($p); $request->setRouteName('review')->setModuleName('review')->setControllerName('product')->setActionName('view')->setParam('id', $id)->setAlias(Mage_Core_Model_Url_Rewrite::REWRITE_REQUEST_PATH_ALIAS, 'reviews'); return true; } else { if ($product) { $request->setRouteName('review')->setModuleName('review')->setControllerName('product')->setActionName('list')->setParam('id', $product->getId())->setAlias(Mage_Core_Model_Url_Rewrite::REWRITE_REQUEST_PATH_ALIAS, 'reviews'); return true; } } } elseif ($parts[0] == 'tag' && isset($parts[1])) { $p = explode('-', $parts[1]); $id = (int) end($p); $request->setRouteName('tag')->setModuleName('tag')->setControllerName('product')->setActionName('list')->setParam('tagId', $id)->setAlias(Mage_Core_Model_Url_Rewrite::REWRITE_REQUEST_PATH_ALIAS, 'tags'); return true; } return false; }
/** * See if any product matches * * @param Zend_Controller_Request_Http $request * @return bool */ public function match(Zend_Controller_Request_Http $request) { if (!Mage::isInstalled()) { Mage::app()->getFrontController()->getResponse()->setRedirect(Mage::getUrl('install'))->sendResponse(); exit; } // Clear session to make sure users can add products and the shopping cart clears properly if (isset($_GET['zipcode'])) { Mage::helper('urls')->clearSession($_GET['zipcode']); } // Get basic data $identifier = urldecode(strtolower(trim($request->getPathInfo(), '/'))); $vendorsCollection = Mage::helper('urls')->getVendors(); $vendorId = false; $productSlug = ''; // Get vendor id $vendorId = $this->_detectVendorId($identifier, $vendorsCollection); // Get product slug preg_match('/.*\\/(.*).html$/', $identifier, $matches); $productSlug = $matches[1]; if ($vendorId) { Mage::register('vendorId', $vendorId); $productId = Mage::helper('urls')->getProductIdBySlug($productSlug, $vendorId); if ('' == $productId || empty($productId)) { return false; } // Point to correct product $request->setModuleName('catalog')->setControllerName('product')->setActionName('view')->setParam('id', $productId); return true; } return false; }
public function match(Zend_Controller_Request_Http $request) { if (!Mage::app()->isInstalled()) { Mage::app()->getFrontController()->getResponse()->setRedirect(Mage::getUrl('install'))->sendResponse(); exit; } $pathInfo = trim($request->getPathInfo(), '/'); //echo $pathInfo;die(); $pathInfoAr = explode('/', $pathInfo); if ($pathInfoAr[0] == Mage::getStoreConfig('vc_miniblog/blog/router')) { if (isset($pathInfoAr[1])) { switch ($pathInfoAr[1]) { case 'tag': $request->setModuleName('vc_miniblog')->setControllerName('index')->setActionName('index'); $request->setParams(array('tag' => $pathInfoAr[2])); $request->setParams(array('tag' => $pathInfoAr[2])); break; case 'cat': $request->setModuleName('vc_miniblog')->setControllerName('index')->setActionName('index'); $request->setParams(array('cat' => $pathInfoAr[2])); break; default: $request->setModuleName('vc_miniblog')->setControllerName('index')->setActionName('postDetail'); $request->setParams(array('identifier' => $pathInfoAr[1])); break; } } else { $request->setModuleName('vc_miniblog')->setControllerName('index')->setActionName('index'); } return true; } return false; }
public function match(Zend_Controller_Request_Http $request) { if (!Mage::isInstalled()) { Mage::app()->getFrontController()->getResponse()->setRedirect(Mage::getUrl('install'))->sendResponse(); exit; } $pathInfo = trim($request->getPathInfo(), '/'); $params = explode('/', $pathInfo); if (isset($params[0]) && $params[0] == 'miembro' || isset($params[0]) && $params[0] == 'member') { //redirect to mymodule/brands/index/brand_name/addidas $request->setModuleName('member')->setControllerName('index')->setActionName('index'); if (isset($params[1])) { $request->setParam('member_url', $params[1]); } $request->setAlias(Mage_Core_Model_Url_Rewrite::REWRITE_REQUEST_PATH_ALIAS, $pathInfo); return true; } if (isset($params[0]) && $params[0] == 'mwcon') { $request->setModuleName('member')->setControllerName('index')->setActionName('signin'); if (isset($params[1])) { $request->setParam('member_id', $params[1]); } $request->setAlias(Mage_Core_Model_Url_Rewrite::REWRITE_REQUEST_PATH_ALIAS, $pathInfo); return true; } return false; }
/** * Validate and match entities and modify request * * @access public * @param Zend_Controller_Request_Http $request * @return bool * @author Ultimate Module Creator */ public function match(Zend_Controller_Request_Http $request) { if (!Mage::isInstalled()) { Mage::app()->getFrontController()->getResponse()->setRedirect(Mage::getUrl('install'))->sendResponse(); exit; } $urlKey = trim($request->getPathInfo(), '/'); $check = array(); $check['trainevent'] = new Varien_Object(array('prefix' => Mage::getStoreConfig('wage_trainevent/trainevent/url_prefix'), 'suffix' => Mage::getStoreConfig('wage_trainevent/trainevent/url_suffix'), 'list_key' => Mage::getStoreConfig('wage_trainevent/trainevent/url_rewrite_list'), 'list_action' => 'index', 'model' => 'wage_trainevent/trainevent', 'controller' => 'trainevent', 'action' => 'view', 'param' => 'id', 'check_path' => 0)); foreach ($check as $key => $settings) { if ($settings->getListKey()) { if ($urlKey == $settings->getListKey()) { $request->setModuleName('wage_trainevent')->setControllerName($settings->getController())->setActionName($settings->getListAction()); $request->setAlias(Mage_Core_Model_Url_Rewrite::REWRITE_REQUEST_PATH_ALIAS, $urlKey); return true; } } if ($settings['prefix']) { $parts = explode('/', $urlKey); if ($parts[0] != $settings['prefix'] || count($parts) != 2) { continue; } $urlKey = $parts[1]; } if ($settings['suffix']) { $urlKey = substr($urlKey, 0, -strlen($settings['suffix']) - 1); } $model = Mage::getModel($settings->getModel()); } return false; }
/** * Validate and Match Manufacturer Page and modify request * * @param Zend_Controller_Request_Http $request * @return bool */ public function match(Zend_Controller_Request_Http $request) { if (!Mage::isInstalled()) { Mage::app()->getFrontController()->getResponse()->setRedirect(Mage::getUrl('install'))->sendResponse(); exit; } $router = 'manufacturers'; $identifier = trim(str_replace('/manufacturers/', '', $request->getPathInfo()), '/'); $condition = new Varien_Object(array('identifier' => $identifier, 'continue' => true)); Mage::dispatchEvent('manufacturer_controller_router_match_before', array('router' => $this, 'condition' => $condition)); $identifier = $condition->getIdentifier(); if ($condition->getRedirectUrl()) { Mage::app()->getFrontController()->getResponse()->setRedirect($condition->getRedirectUrl())->sendResponse(); $request->setDispatched(true); return true; } if (!$condition->getContinue()) { return false; } $manufacturer = Mage::getModel('zeon_manufacturer/manufacturer'); $manufacturerId = $manufacturer->checkIdentifier($identifier, Mage::app()->getStore()->getId()); if (trim($identifier) && $manufacturerId) { $request->setModuleName('manufacturers')->setControllerName('index')->setActionName('view')->setParam('manufacturer_id', $manufacturerId); $request->setAlias(Mage_Core_Model_Url_Rewrite::REWRITE_REQUEST_PATH_ALIAS, $router . '/' . $identifier); return true; } return false; }
public function match(Zend_Controller_Request_Http $request) { if (!Mage::isInstalled()) { Mage::app()->getFrontController()->getResponse()->setRedirect(Mage::getUrl('install'))->sendResponse(); exit; } $identifier = trim($request->getPathInfo(), '/'); $condition = new Varien_Object(array('identifier' => $identifier, 'continue' => true)); Mage::dispatchEvent('magicproduct_controller_router_match_before', array('router' => $this, 'condition' => $condition)); $identifier = $condition->getIdentifier(); if ($condition->getRedirectUrl()) { Mage::app()->getFrontController()->getResponse()->setRedirect($condition->getRedirectUrl())->sendResponse(); $request->setDispatched(true); return true; } if (!$condition->getContinue()) { return false; } if (!in_array($identifier, $this->router)) { return false; } $request->setModuleName('magicproduct')->setControllerName('index')->setActionName('product')->setParam('type', $identifier); $request->setAlias(Mage_Core_Model_Url_Rewrite::REWRITE_REQUEST_PATH_ALIAS, $identifier); return true; }
protected function _initStoreRoutes() { $request = new Zend_Controller_Request_Http(); $path = explode('/', trim($request->getPathInfo(), '/')); $requestedPath = array_shift($path); $requestedHost = $request->getHttpHost(); if ($store = Cosmos_Api::get()->cosmos->getStoreByHostPath($requestedHost, $requestedPath)) { $this->bootstrap('session'); Zend_Registry::set('csession', new Zend_Session_Namespace("cosmos_{$store['group_id']}")); Zend_Registry::get('log')->info($store); if ($store['path']) { $this->bootstrap('frontcontroller'); $front = Zend_Controller_Front::getInstance(); $request = $front->getRequest(); $dispatcher = $front->getDispatcher(); $defaultRoute = new Zend_Controller_Router_Route_Module(array(), $dispatcher, $request); $front->getRouter()->removeDefaultRoutes(); $defaults = array('path' => $store['path'], 'module' => $dispatcher->getDefaultModule()); $pathRoute = new Zend_Controller_Router_Route(':path', $defaults); Zend_Registry::set('cosmosRoute', $pathRoute); // This is to catch empty requests because for some reason 'default' doesn't. $front->getRouter()->addRoute('default-empty', $pathRoute); $front->getRouter()->addRoute('default', $pathRoute->chain($defaultRoute)); Zend_Registry::set('mode', 'path'); } else { Zend_Registry::set('mode', 'host'); } } else { die('fail'); // no matching store? } Cosmos_Addon::getInstance($store['addons']); }
public function match(Zend_Controller_Request_Http $request) { $helper = Mage::helper('sm_shopby'); if (!$helper->isEnabled()) { return false; } $suffix = Mage::getStoreConfig('catalog/seo/category_url_suffix'); $identifier = ltrim($request->getPathInfo(), '/'); $identifier = substr($identifier, 0, strlen($identifier) - strlen($suffix)); $urlSplit = explode($helper->getRoutingSuffix(), $identifier, 2); if (!isset($urlSplit[1])) { return false; } $urlRewrite = Mage::getModel('core/url_rewrite'); $urlRewrite->setStoreId(Mage::app()->getStore()->getId()); $cat = $urlSplit[0]; $catPath = $cat . $suffix; $urlRewrite->loadByRequestPath($catPath); if ($urlRewrite->getId()) { $modules = $this->getModuleByFrontName('catalog'); $found = false; foreach ($modules as $realModule) { $request->setRouteName($this->getRouteByFrontName('catalog')); $this->_checkShouldBeSecure($request, '/catalog/category/view'); $controllerClassName = $this->_validateControllerClassName($realModule, 'category'); if (!$controllerClassName) { continue; } $controllerInstance = Mage::getControllerInstance($controllerClassName, $request, $this->getFront()->getResponse()); if (!$controllerInstance->hasAction('view')) { continue; } $found = true; break; } if (!$found) { return false; } $request->setPathInfo($urlRewrite->getTargetPath()); $request->setRequestUri('/' . $urlRewrite->getTargetPath()); $request->setModuleName('catalog')->setControllerName('category')->setActionName('view')->setControllerModule($realModule)->setParam('id', $urlRewrite->getCategoryId())->setAlias(Mage_Core_Model_Url_Rewrite::REWRITE_REQUEST_PATH_ALIAS, $catPath); $params = explode('/', trim($urlSplit[1], '/')); $layerParams = array(); $total = count($params); for ($i = 0; $i < $total - 1; $i++) { if (isset($params[$i + 1])) { $layerParams[$params[$i]] = urldecode($params[$i + 1]); ++$i; } } $layerParams += $request->getPost(); $request->setParams($layerParams); Mage::register('layer_params', $layerParams); $request->setDispatched(true); $controllerInstance->dispatch('view'); return true; } return false; }
/** * Format path url * @access private * @return unknown */ private function _formatPath() { // get raw url path if (!$this->_path) { $this->_path = $this->_request->getPathInfo(); $this->_path = preg_replace('/\\/+/i', '/', $this->_path); } }
/** * Can this request's path be processed by this router? * * @param Zend_Controller_Request_Http $request * @return string|boolean */ protected function _isValidPath(Zend_Controller_Request_Http $request) { $path = trim($request->getPathInfo(), '/') . '/'; if (strpos($path, $this->getRouteName()) === 0) { return $path; } return false; }
public function testSetRequestUri() { $this->_request->setRequestUri('/archives/past/4?set=this&unset=that'); $this->assertEquals('/archives/past/4?set=this&unset=that', $this->_request->getRequestUri()); $this->assertEquals('/archives/past/4', $this->_request->getPathInfo()); $this->assertEquals('this', $this->_request->getQuery('set')); $this->assertEquals('that', $this->_request->getQuery('unset')); }
/** * Match with router * * @param Zend_Controller_Request_Http $request * @return boolean */ public function match(Zend_Controller_Request_Http $request) { $path = trim($request->getPathInfo(), '/'); if (strrpos($path, '.json') === strlen($path) - 5) { $request->setPathInfo(substr($path, 0, strlen($path) - 5)); Mage::getSingleton('easyAjax/core')->setEasyAjax(true); return parent::match($request); } return false; }
/** * Matches a user submitted path with a previously defined route. * Assigns and returns an array of defaults on a successful match. * * @param Zend_Controller_Request_Http $request Request to get the path info from * @return array|false An array of assigned values or a false on a mismatch */ public function match($request, $partial = null) { $path = $request->getPathInfo(); $values = array(); foreach ($this->_routes as $key => $route) { // TODO: Should be an interface method. Hack for 1.0 BC if (!method_exists($route, 'getVersion') || $route->getVersion() == 1) { $match = $request->getPathInfo(); } else { $match = $request; } $res = $route->match($match); if ($res === false) { return false; } $values = $res + $values; } return $values; }
public function match(Zend_Controller_Request_Http $request) { $identifier = trim($request->getPathInfo(), '/'); $page = Mage::getSingleton('cms/page'); $page->setStoreId(Mage::app()->getStore()->getId()); if (!$page->load($identifier)->getId()) { return false; } $request->setModuleName(isset($d[0]) ? $d[0] : 'cms')->setControllerName(isset($d[1]) ? $d[1] : 'page')->setActionName(isset($d[2]) ? $d[2] : 'view')->setParam('page_id', $page->getId()); return true; }
/** * Matches a user submitted path with a previously defined route. * Assigns and returns an array of defaults on a successful match. * * @param Zend_Controller_Request_Http $request Request to get the path info from * @param null $partial * @return array|false An array of assigned values or a false on a mismatch */ public function match($request, $partial = null) { $rawPath = $request->getPathInfo(); $path = trim($request->getPathInfo(), self::URI_DELIMITER); $subPath = $path; $values = array(); $matchedPath = null; foreach ($this->_routes as $key => $route) { if ($key > 0 && $matchedPath !== null && $subPath !== '' && $subPath !== false) { $separator = substr($subPath, 0, strlen($this->_separators[$key])); if ($separator !== $this->_separators[$key]) { $request->setPathInfo($rawPath); return false; } $subPath = substr($subPath, strlen($separator)); } // TODO: Should be an interface method. Hack for 1.0 BC if (!method_exists($route, 'getVersion') || $route->getVersion() == 1) { $match = $subPath; } else { $request->setPathInfo($subPath); $match = $request; } $res = $route->match($match, true); if ($res === false) { $request->setPathInfo($rawPath); return false; } $matchedPath = $route->getMatchedPath(); if ($matchedPath !== null) { $subPath = substr($subPath, strlen($matchedPath)); } $values = $res + $values; } $request->setPathInfo($path); if ($subPath !== '' && $subPath !== false) { return false; } return $values; }
/** * Validate and Match Cms Page and modify request * * @param Zend_Controller_Request_Http $request * @return bool */ public function match(Zend_Controller_Request_Http $request) { $this->_request = $request; if (($requestUri = $this->_preparePathInfo($request->getPathInfo())) === false) { return false; } if ($this->_match($requestUri) !== false) { $request->setAlias(Mage_Core_Model_Url_Rewrite::REWRITE_REQUEST_PATH_ALIAS, $requestUri . Mage::getStoreConfig('attributeSplash/seo/url_suffix')); Mage::helper('attributeSplash')->clearLayerRewrites(); return true; } return false; }
protected function matchForwardMultilevel() { $pageId = $this->request->getPathInfo(); $pageId = $this->getUrlHelper()->checkRemoveSuffix($pageId); $pageId = trim($pageId, '/') . '/'; $cat = $this->matchMultilevel($pageId); if ($cat === false) { return false; } if ($cat) { // normal category try { $this->forwardCategory($cat); } catch (Mage_Core_Controller_Varien_Exception $e) { return false; } } else { // root category if (!Mage::getStoreConfig('amshopby/seo/enable_shopby_page')) { /** @var Amasty_Shopby_Helper_Attributes $helper */ $helper = Mage::helper('amshopby/attributes'); $brand = $helper->getRequestedBrandOption(); if (!$brand) { return false; } } $this->forwardShopby(); } // Redirect to new short URL if ($this->urlMode == Amasty_Shopby_Model_Source_Url_Mode::MODE_SHORT && Mage::getStoreConfig('amshopby/seo/redirects_enabled')) { /** @var Amasty_Shopby_Model_Url_Builder $urlBuilder */ $urlBuilder = Mage::getModel('amshopby/url_builder'); $urlBuilder->reset(); $urlBuilder->mode = $this->urlMode; $url = $urlBuilder->getUrl(); Mage::app()->getResponse()->setRedirect($url, 301); } return true; }
/** * Match the request * * @param Zend_Controller_Request_Http $request * @return boolean */ public function match(Zend_Controller_Request_Http $request) { if (!$this->_beforeModuleMatch()) { return false; } $front = $this->getFront(); $path = trim($request->getPathInfo(), '/'); $pathParts = explode('/', $path, 4); if (!isset($pathParts[0])) { return parent::match($request); } switch ($pathParts[0]) { case Mage::getStoreConfig('arioem/parts/shortname'): $request->setRouteName('arioem'); $request->setModuleName('Vikont_ARIOEM'); $request->setControllerModule('Vikont_ARIOEM'); $controllerName = 'parts'; // empty($pathParts[1]) ? 'index' : $pathParts[1]; $request->setControllerName($controllerName); $actionName = 'index'; // empty($pathParts[2]) ? 'index' : $pathParts[2]; $request->setActionName($actionName); $request->setDispatched(true); $brand = empty($pathParts[1]) ? false : $pathParts[1]; Mage::register('oem_brand', $brand); $request->setParam('brand', $brand); $partNumber = empty($pathParts[2]) ? false : $pathParts[2]; Mage::register('oem_part_number', $partNumber); $request->setParam('partNumber', $partNumber); $controllerClassName = $this->_validateControllerClassName('Vikont_ARIOEM', $controllerName); $controllerInstance = Mage::getControllerInstance($controllerClassName, $request, $front->getResponse()); $controllerInstance->dispatch('index'); return true; break; case Mage::getStoreConfig('arioem/partcenter/shortname'): $request->setRouteName('arioem'); $request->setModuleName('Vikont_ARIOEM'); $request->setControllerModule('Vikont_ARIOEM'); $controllerName = 'partcenter'; $request->setControllerName($controllerName); $actionName = empty($pathParts[1]) ? 'index' : $pathParts[1]; //'index'; $request->setActionName($actionName); $request->setDispatched(true); $controllerClassName = $this->_validateControllerClassName('Vikont_ARIOEM', $controllerName); $controllerInstance = Mage::getControllerInstance($controllerClassName, $request, $front->getResponse()); $controllerInstance->dispatch('index'); break; } return parent::match($request); }
public function match(Zend_Controller_Request_Http $request) { if (!Mage::isInstalled()) { Mage::app()->getFrontController()->getResponse()->setRedirect(Mage::getUrl('install'))->sendResponse(); exit; } $pathInfo = $request->getPathInfo(); $result = Mage::helper('mstcore/urlrewrite')->match($pathInfo); if ($result) { $request->setRouteName($result->getRouteName())->setModuleName($result->getModuleName())->setControllerName($result->getControllerName())->setActionName($result->getActionName())->setParam('id', $result->getEntityId())->setAlias(Mage_Core_Model_Url_Rewrite::REWRITE_REQUEST_PATH_ALIAS, $result->getRouteName()); return true; } return false; }