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; }
public function testGetAliasedParamZF2455() { $this->_request->setParam('controller', 'value'); $this->_request->setAlias('var1', 'controller'); $this->assertEquals('value', $this->_request->getParam('controller')); $this->assertEquals('value', $this->_request->getParam('var1')); }
/** * 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; }
/** * 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; }
/** * Implement logic of custom rewrites * * @return bool */ protected function _rewriteDb() { if (null === $this->_rewrite->getStoreId() || false === $this->_rewrite->getStoreId()) { $this->_rewrite->setStoreId($this->_app->getStore()->getId()); } $requestCases = $this->_getRequestCases(); $this->_rewrite->loadByRequestPath($requestCases); $fromStore = $this->_request->getQuery('___from_store'); if (!$this->_rewrite->getId() && $fromStore) { $stores = $this->_app->getStores(false, true); if (!empty($stores[$fromStore])) { /** @var $store Mage_Core_Model_Store */ $store = $stores[$fromStore]; $fromStoreId = $store->getId(); } else { return false; } $this->_rewrite->setStoreId($fromStoreId)->loadByRequestPath($requestCases); if (!$this->_rewrite->getId()) { return false; } // Load rewrite by id_path $currentStore = $this->_app->getStore(); $this->_rewrite->setStoreId($currentStore->getId())->loadByIdPath($this->_rewrite->getIdPath()); $this->_setStoreCodeCookie($currentStore->getCode()); $targetUrl = $currentStore->getBaseUrl() . $this->_rewrite->getRequestPath(); $this->_sendRedirectHeaders($targetUrl, true); } if (!$this->_rewrite->getId()) { return false; } $this->_request->setAlias(Mage_Core_Model_Url_Rewrite::REWRITE_REQUEST_PATH_ALIAS, $this->_rewrite->getRequestPath()); $this->_processRedirectOptions(); 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) { $this->_request = $request; if ($this->_match() !== false) { $request->setAlias(Mage_Core_Model_Url_Rewrite::REWRITE_REQUEST_PATH_ALIAS, ltrim($request->getPathInfo(), '/')); 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; } //echo '<pre>';print_r(Mage::app()->getRequest());exit; $urlRoot = Mage::app()->getRequest()->getPathInfo(); if (!strstr($urlRoot . '/', "/blog/")) { return true; } $route = Mage::helper('blog')->getRoute(); $uri = str_replace("/blog/", "", strstr(Mage::app()->getRequest()->getPathInfo(), "/blog/")); if (!Mage::registry('request_path')) { Mage::register('request_path', $uri); } $request->setAlias(self::REWRITE_REQUEST_PATH_ALIAS, 'blog/' . $uri); if (trim($uri, "/") == "taglist") { Mage::app()->getRequest()->setControllerName('tag'); Mage::app()->getRequest()->setActionName('taglist'); return true; } if ($uri) { $requestInfo = trim($uri); $tmp = explode("_", $requestInfo); if ($tmp[0] == "adminhtml") { return true; } $urlData = $this->analyticUrl($requestInfo); if ($postId = $urlData->getPostId()) { Mage::app()->getRequest()->setControllerName('post'); Mage::app()->getRequest()->setActionName('view'); Mage::app()->getRequest()->setParam('id', $postId); $contentUrl = explode("/", $uri); if (count($contentUrl) > 1) { unset($contentUrl[count($contentUrl) - 1]); Mage::app()->getRequest()->setParam('cat_id', $this->analyticUrl(implode('/', $contentUrl) . '.html')->getCategoryId()); } return true; } elseif ($tagId = $urlData->getTagId()) { Mage::app()->getRequest()->setControllerName('tag'); Mage::app()->getRequest()->setActionName('view'); Mage::app()->getRequest()->setParam('tag_id', $tagId); return true; } elseif ($catId = $urlData->getCategoryId()) { Mage::app()->getRequest()->setControllerName('category'); Mage::app()->getRequest()->setActionName('view'); Mage::app()->getRequest()->setParam('id', $catId); return true; } } 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) { $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; }
/** * Checks * */ public function match(Zend_Controller_Request_Http $request) { $params = trim($request->getPathInfo(), '/'); $params = explode('/', $params); $attribute_code = $params[0]; $identifier = null; if (isset($params[1])) { $identifier = $params[1]; } $allowedAttributes = explode(',', Mage::getStoreConfig('dc_catalog/attributes/selectedattributes')); $attributes = Mage::getModel('dc_catalog/manufacturer'); /* @var $attributes DC_Catalog_Model_Manufacturer */ if (in_array($attribute_code, $allowedAttributes)) { //we have something here... try to match to one of the existing attributes //first, search in attribute_pages for an existing match if ($attributePageId = $attributes->checkIdentifierInPages($attribute_code, $identifier, Mage::app()->getStore()->getId())) { //we have a winnnner!!! $request->setModuleName('attributeinfo')->setControllerName('AttributeInfo')->setActionName('view')->setParam('attribute_page_id', $attributePageId); $request->setAlias(Mage_Core_Model_Url_Rewrite::REWRITE_REQUEST_PATH_ALIAS, $attribute_code . '/' . $identifier); return true; } //second, search in attributes for a possible match if (($option_id = $attributes->getOptionIdFromIdentifier($attribute_code, $identifier, Mage::app()->getStore()->getId())) > 0) { //if ($attributes->getData('attribute_code') > '') { //we have another winnnner!!! $request->setModuleName('attributeinfo')->setControllerName('AttributeInfo')->setActionName('view')->setParam('attribute_code', $attribute_code)->setParam('option_id', $option_id); $request->setAlias(Mage_Core_Model_Url_Rewrite::REWRITE_REQUEST_PATH_ALIAS, $attribute_code . '/' . $identifier); return true; //} } //well.. just display all the values $request->setModuleName('attributeinfo')->setControllerName('AttributeInfo')->setActionName('viewAll')->setParam('attribute_code', $attribute_code); $request->setAlias(Mage_Core_Model_Url_Rewrite::REWRITE_REQUEST_PATH_ALIAS, $attribute_code . '/' . $identifier); return true; } //we didn't find anything acceptable in this router, resume search in others return false; }
/** * 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; } $sellerAtttributeName = Mage::getConfig()->getNode('default/seller_page/attribute_name'); $seoDisplay = Mage::getConfig()->getNode('default/seller_page/seo_display'); if (empty($sellerAtttributeName)) { //Seller attribute not configured return false; } $pageId = $request->getPathInfo(); $param = explode('/', $pageId); $seller = ''; if (count($param) > 1 and strtolower($param[1]) == $seoDisplay and !empty($param[2])) { //Identify Seller $sellerPage = $param[2]; if (strpos($sellerPage, '.') !== false) { $sellerPage = urldecode(substr($sellerPage, 0, -5)); if ($sellerPage) { $seller = str_replace('-', ' ', $sellerPage); } else { return false; } } else { $seller = $sellerPage; } } else { return false; } if ($seller) { Mage::register('seller_company', $seller); $realModule = 'Cybage_Marketplace'; $request->setModuleName('marketplace'); $request->setRouteName('marketplace'); $request->setControllerName('seller'); $request->setActionName('sellerinfo'); $request->setControllerModule($realModule); $request->setAlias(Mage_Core_Model_Url_Rewrite::REWRITE_REQUEST_PATH_ALIAS, ltrim($request->getRequestString(), '/')); $file = Mage::getModuleDir('controllers', $realModule) . DS . 'SellerController.php'; include $file; //compatibility with 1.3 $class = $realModule . '_SellerController'; $controllerInstance = new $class($request, $this->getFront()->getResponse()); $request->setDispatched(true); $controllerInstance->dispatch('sellerinfo'); } return true; }
/** * Validate and Match FAQ 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 = 'faq'; $identifier = trim(str_replace('/faq/', '', $request->getPathInfo()), '/'); $condition = new Varien_Object(array('identifier' => $identifier, 'continue' => true)); Mage::dispatchEvent('faq_controller_router_match_before', array('router' => $this, 'condition' => $condition)); if ($condition->getRedirectUrl()) { Mage::app()->getFrontController()->getResponse()->setRedirect($condition->getRedirectUrl())->sendResponse(); $request->setDispatched(true); return true; } if (!$condition->getContinue()) { return false; } $category = Mage::getModel('zeon_faq/category'); $categoryId = $category->checkIdentifier($identifier, Mage::app()->getStore()->getId()); if (!$categoryId && $identifier == 'mfaq') { $request->setModuleName('faq')->setControllerName('index')->setActionName('index'); if (Mage::helper('zeon_faq')->getIsDisplayMfaq()) { $request->setParam('mfaq', 1); } $request->setAlias(Mage_Core_Model_Url_Rewrite::REWRITE_REQUEST_PATH_ALIAS, $router); return true; } elseif ($categoryId) { $request->setModuleName('faq')->setControllerName('index')->setActionName('index')->setParam('category_id', $categoryId); $request->setAlias(Mage_Core_Model_Url_Rewrite::REWRITE_REQUEST_PATH_ALIAS, $router . '/' . $identifier); return true; } else { return false; } return false; }
public function match(Zend_Controller_Request_Http $request) { if (!AO::isInstalled()) { AO::app()->getFrontController()->getResponse()->setRedirect(AO::getUrl('install'))->sendResponse(); exit; } $identifier = trim($request->getPathInfo(), '/'); $page = AO::getModel('cms/page'); $pageId = $page->checkIdentifier($identifier, AO::app()->getStore()->getId()); if (!$pageId) { 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', $pageId); $request->setAlias(Mage_Core_Model_Url_Rewrite::REWRITE_REQUEST_PATH_ALIAS, $identifier); 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) { $urlKey = trim($request->getPathInfo(), '/'); if ($urlKey === 'splash-sitemap.xml') { $request->setModuleName($this->_getFrontName())->setControllerName('sitemap')->setActionName('index'); return true; } $page = Mage::getModel('splash/page')->setStoreId(Mage::app()->getStore()->getId())->loadByUrlKey($urlKey); if (!$page->getId() || !$page->isEnabled()) { return false; } Mage::getConfig()->setNode('mageworx_seo/seosuite/disable_layered_rewrites', true, true); Mage::app()->getStore()->setConfig('mageworx_seo/seosuite/disable_layered_rewrites', true); Mage::register('splash_page', $page); $request->setModuleName($this->_getFrontName())->setControllerName('page')->setActionName('view')->setParam('page_id', $page->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; } $route = Mage::helper('prodfaqs')->getListIdentifier(); $identifier = trim($request->getPathInfo(), '/'); $identifier = str_replace(Mage::helper('prodfaqs')->getSeoUrlSuffix(), '', $identifier); if ($identifier == $route) { $request->setModuleName('prodfaqs')->setControllerName('index')->setActionName('index'); return true; } elseif (strpos($identifier, $route . '/search') === 0) { $request->setModuleName('prodfaqs')->setControllerName('index')->setActionName('search')->setParam('id', (int) $request->getParam('id')); return true; } elseif (strpos($identifier, $route) === 0 && strlen($identifier) > strlen($route) && strpos($identifier, '-questions') === false) { $identifier = trim(substr($identifier, strlen($route)), '/'); $topicId = Mage::getModel('prodfaqs/topic')->checkIdentifier($identifier, Mage::app()->getStore()->getId()); if (!$topicId) { return false; } $request->setModuleName('prodfaqs')->setControllerName('index')->setActionName('view')->setParam('id', $topicId); $request->setAlias(Mage_Core_Model_Url_Rewrite::REWRITE_REQUEST_PATH_ALIAS, $identifier); return true; } elseif (strpos($identifier, $route) === 0 && strpos($identifier, '-questions') >= 0) { $product_identifier = trim(substr($identifier, strlen($route)), '/'); $product_identifier = str_replace('-questions', '', $product_identifier); //Now get the product id from this identifier $store_id = Mage::app()->getStore()->getId(); $collection = Mage::getResourceModel('catalog/product_collection')->setStoreId($store_id); Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($collection); Mage::getSingleton('catalog/product_status')->addVisibleFilterToCollection($collection); $collection->addAttributeToFilter(array(array('attribute' => 'url_key', 'eq' => $product_identifier))); $data = $collection->getData(); if ($data) { $prod_id = $data[0]['entity_id']; $request->setModuleName('prodfaqs')->setControllerName('index')->setActionName('productfaqs')->setParam('id', $prod_id); return true; } else { return false; } } return false; }
/** * Validate and Match Lucky Draw Program 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; } $urlKey = trim($request->getPathInfo(), '/'); if (!$urlKey) { return false; } $program = Mage::getModel('luckydraw/program'); $programId = $program->checkProgramUrlKey($urlKey, Mage::app()->getStore()->getId()); if (!$programId) { return false; } $request->setModuleName('luckydraw')->setControllerName('index')->setActionName('index')->setParam('id', $programId); $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; } $urlKey = trim($request->getPathInfo(), '/'); $check = array(); $check['deal'] = new Varien_Object(array('model' => 'deal/deal', 'controller' => 'deal', 'action' => 'view', 'param' => 'id')); foreach ($check as $key => $settings) { $model = Mage::getModel($settings->getModel()); $id = $model->checkUrlKey($urlKey, Mage::app()->getStore()->getId()); if ($id) { $request->setModuleName('deal')->setControllerName($settings->getController())->setActionName($settings->getAction())->setParam($settings->getParam(), $id); $request->setAlias(Mage_Core_Model_Url_Rewrite::REWRITE_REQUEST_PATH_ALIAS, $urlKey); return true; } } 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(), '/'); //URL Search after habbeda $url = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; //$identifier = trim($request->getPathInfo(), '/'); if (strpos($url, "/alle/") <= 0 && strpos($url, "/all/") <= 0) { return false; } // if successfully gained url parameters, use them and dispatch ActionController action $request->setRouteName('landingpagesaa')->setModuleName('landingpagesaa')->setControllerName('index')->setActionName('index'); //->setParam('test', "test"); $urlpara = explode("/filter/", $url); if (!empty($urlpara[1])) { $urlparas = explode("?", $urlpara[1]); // Parse url params $params = explode('/', trim($urlparas[0], '/')); $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; } } // Add post params to parsed ones from url // Usefull to easily override params $layerParams += $request->getPost(); // Add params to request $request->setParams($layerParams); // Save params in registry - used later to generate links Mage::register('layer_params', $layerParams); } $request->setRequestUri($url); $request->setAlias(Mage_Core_Model_Url_Rewrite::REWRITE_REQUEST_PATH_ALIAS, $identifier); return true; }
public function match(Zend_Controller_Request_Http $request) { $identifier = trim($request->getPathInfo(), '/'); $condition = new Varien_Object(array('identifier' => $identifier, 'continue' => true)); $identifier = $condition->getIdentifier(); if ($condition->getRedirectUrl()) { Mage::app()->getFrontController()->getResponse()->setRedirect($condition->getRedirectUrl())->sendResponse(); $request->setDispatched(true); return true; } if (!$condition->getContinue()) { return false; } $page = Mage::getModel('searchlandingpage/page')->checkIdentifier($identifier); if (!$page) { return false; } $request->setModuleName('searchlandingpage')->setControllerName('page')->setActionName('view')->setParam('q', $page->getQueryText())->setParam('id', $page->getId()); $request->setAlias(Mage_Core_Model_Url_Rewrite::REWRITE_REQUEST_PATH_ALIAS, $identifier); return true; }
/** * Validate and Match News and modify request * * @param Zend_Controller_Request_Http $request * @return bool */ public function match(Zend_Controller_Request_Http $request) { $identifier = trim($request->getPathInfo(), '/'); $condition = new Varien_Object(array('identifier' => $identifier, 'continue' => true)); Mage::dispatchEvent('magna_news_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; } $news = Mage::getModel('magna_news/news'); $newsId = $news->checkIdentifier($identifier, Mage::app()->getStore()->getId()); if (!$newsId) { return false; } $request->setModuleName('magna_news')->setControllerName('view')->setActionName('show')->setParam('news_id', $newsId); $request->setAlias(Mage_Core_Model_Url_Rewrite::REWRITE_REQUEST_PATH_ALIAS, $identifier); 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::isInstalled()) { Mage::app()->getFrontController()->getResponse()->setRedirect(Mage::getUrl('install'))->sendResponse(); exit; } $identifier = trim($request->getPathInfo(), '/'); $condition = new Varien_Object(array('identifier' => $identifier, 'continue' => true)); if ($condition->getRedirectUrl()) { Mage::app()->getFrontController()->getResponse()->setRedirect($condition->getRedirectUrl())->sendResponse(); $request->setDispatched(true); return true; } if (!$condition->getContinue()) { return false; } if ($identifier != Mage::helper('productquestions')->faqsPageUrlKey()) { return false; } $request->setModuleName('productquestions')->setControllerName('faq')->setActionName('index'); $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(), '/'); $parts = explode('/', $identifier); if (!isset($parts[1])) { return false; } if (!isset($parts[1])) { return false; } $productCollection = Mage::getModel('catalog/product')->getCollection()->addAttributeToFilter('url_path', $parts[1]); if (!$productCollection->count()) { return false; } $product = $productCollection->getFirstItem(); $product->load($product->getId()); $request->setModuleName('askit')->setControllerName('index')->setActionName('index')->setParam('productId', $product->getId()); $request->setAlias(Mage_Core_Model_Url_Rewrite::REWRITE_REQUEST_PATH_ALIAS, $identifier); return true; }
/** * Match the request * * @param Zend_Controller_Request_Http $request * @return boolean */ public function match(Zend_Controller_Request_Http $request) { //checking before even try to find out that current module //should use this router if (!$this->_beforeModuleMatch()) { return false; } $this->fetchDefault(); $front = $this->getFront(); $path = trim($request->getPathInfo(), '/'); if ($path) { $p = explode('/', $path); } else { $p = explode('/', $this->_getDefaultPath()); } // get module name if ($request->getModuleName()) { $module = $request->getModuleName(); } else { if (!empty($p[0])) { $module = $p[0]; } else { $module = $this->getFront()->getDefault('module'); $request->setAlias(Mage_Core_Model_Url_Rewrite::REWRITE_REQUEST_PATH_ALIAS, ''); } } if (!$module) { if (Mage::app()->getStore()->isAdmin()) { $module = 'admin'; } else { return false; } } /** * Searching router args by module name from route using it as key */ $modules = $this->getModuleByFrontName($module); if ($modules === false) { return false; } // checks after we found out that this router should be used for current module if (!$this->_afterModuleMatch()) { return false; } /** * Going through modules to find appropriate controller */ $found = false; foreach ($modules as $realModule) { $request->setRouteName($this->getRouteByFrontName($module)); // get controller name if ($request->getControllerName()) { $controller = $request->getControllerName(); } else { if (!empty($p[1])) { $controller = $p[1]; } else { $controller = $front->getDefault('controller'); $request->setAlias(Mage_Core_Model_Url_Rewrite::REWRITE_REQUEST_PATH_ALIAS, ltrim($request->getOriginalPathInfo(), '/')); } } // get action name if (empty($action)) { if ($request->getActionName()) { $action = $request->getActionName(); } else { $action = !empty($p[2]) ? $p[2] : $front->getDefault('action'); } } //checking if this place should be secure $this->_checkShouldBeSecure($request, '/' . $module . '/' . $controller . '/' . $action); $controllerClassName = $this->_validateControllerClassName($realModule, $controller); if (!$controllerClassName) { continue; } // instantiate controller class $controllerInstance = Mage::getControllerInstance($controllerClassName, $request, $front->getResponse()); if (!$controllerInstance->hasAction($action)) { continue; } $found = true; break; } /** * if we did not found any suitable */ if (!$found) { if ($this->_noRouteShouldBeApplied()) { $controller = 'index'; $action = 'noroute'; $controllerClassName = $this->_validateControllerClassName($realModule, $controller); if (!$controllerClassName) { return false; } // instantiate controller class $controllerInstance = Mage::getControllerInstance($controllerClassName, $request, $front->getResponse()); if (!$controllerInstance->hasAction($action)) { return false; } } else { return false; } } // set values only after all the checks are done $request->setModuleName($module); $request->setControllerName($controller); $request->setActionName($action); $request->setControllerModule($realModule); // set parameters from pathinfo for ($i = 3, $l = sizeof($p); $i < $l; $i += 2) { $request->setParam($p[$i], isset($p[$i + 1]) ? urldecode($p[$i + 1]) : ''); } // dispatch action $request->setDispatched(true); $controllerInstance->dispatch($action); return true; }
public function testGetAliases() { $this->_request->setAlias('controller', 'var1'); $this->_request->setAlias('action', 'var2'); $this->assertSame(array('controller' => 'var1', 'action' => 'var2'), $this->_request->getAliases()); }
/** * Match controller name * * @param Zend_Controller_Request_Http $request * @param string $param * @return string */ protected function _matchControllerName(Zend_Controller_Request_Http $request, $param) { if ($request->getControllerName()) { $controller = $request->getControllerName(); } else { if (!empty($param)) { $controller = $param; } else { $controller = $this->getFront()->getDefault('controller'); $request->setAlias(Mage_Core_Model_Url_Rewrite::REWRITE_REQUEST_PATH_ALIAS, ltrim($request->getOriginalPathInfo(), '/')); } } return $controller; }
/** * Match the request. * * @param Zend_Controller_Request_Http $request The request object. * * @return boolean */ public function match(Zend_Controller_Request_Http $request) { if (!$this->_beforeModuleMatch()) { return false; } $this->fetchDefault(); $front = $this->getFront(); $path = trim($request->getPathInfo(), '/'); $module = null; if ($path) { $parts = explode('/', $path); } else { $parts = explode('/', $this->_getDefaultPath()); } // get module name if ($request->getModuleName()) { $module = $request->getModuleName(); } if (!$module) { if (Mage::app()->getStore()->isAdmin()) { return false; } } // Does module match front name $loadByPath = false; if ($module != Mage::helper('link')->getFrontName()) { // If not, check the table for a match on the path if ($link = Mage::getModel('link/node')->loadByRequestPath($path)) { $module = Mage::helper('link')->getFrontName(); $loadByPath = true; } } // Translate frontName to module $realModule = Mage::helper('link')->getModuleName(); $request->setRouteName($this->getRouteByFrontName($module)); // Get controller name $controller = $front->getDefault('controller'); // Get action name $action = $front->getDefault('action'); if ($loadByPath) { $request->setAlias(Mage_Core_Model_Url_Rewrite::REWRITE_REQUEST_PATH_ALIAS, ltrim(implode('/', $parts), '/')); } else { $request->setAlias(Mage_Core_Model_Url_Rewrite::REWRITE_REQUEST_PATH_ALIAS, ltrim(implode('/', array_slice($parts, 1)), '/')); } // Checking if this place should be secure $this->_checkShouldBeSecure($request, "/{$module}/{$controller}/{$action}"); $controllerClassName = $this->_validateControllerClassName($realModule, $controller); if (!$controllerClassName) { return false; } // Instantiate controller class $controllerInstance = Mage::getControllerInstance($controllerClassName, $request, $front->getResponse()); if (!$controllerInstance->hasAction($action)) { return false; } // Set values $request->setModuleName($module); $request->setControllerName($controller); $request->setActionName($action); $request->setControllerModule($realModule); // Set parameters from pathinfo for ($i = 1, $length = sizeof($parts); $i < $length; $i += 2) { $request->setParam($parts[$i], isset($parts[$i + 1]) ? urldecode($parts[$i + 1]) : ''); } // Dispatch action $request->setDispatched(true); $controllerInstance->dispatch($action); return true; }
/** * Validate and Match shop view and modify request */ public function match(Zend_Controller_Request_Http $request) { $front = $this->getFront(); if (!Mage::isInstalled()) { Mage::app()->getFrontController()->getResponse()->setRedirect(Mage::getUrl('install'))->sendResponse(); exit; } $routerConfig = Mage::getStoreConfig('shopbybrand/general/router'); $_end = Mage::getStoreConfig(Magestore_Shopbybrand_Helper_Data::XML_FRONTEND_LINK); $_path = urldecode(trim($request->getPathInfo(), '/')); if (strpos($_path, $_end)) { $_link_params = explode('/', str_replace($_end, '/', $_path), -1); } else { $_link_params = explode('/', $_path . '/', -1); } $_count_params = count($_link_params); $found = false; if (isset($_link_params[0])) { $router = $_link_params[0]; if ($router == $routerConfig) { $request->setRouteName('shopbybrand')->setControllerModule('Magestore_Shopbybrand')->setModuleName('brand'); $module = 'shopbybrand'; if (isset($_link_params[1]) && $_link_params[1]) { $request->setControllerName($_link_params[1]); } if (isset($_link_params[2]) && $_link_params[2]) { $request->setActionName($_link_params[2]); } // get controller name if ($request->getControllerName()) { $controller = $request->getControllerName(); } else { if (!empty($_link_params[1])) { $controller = $_link_params[1]; } else { $controller = $front->getDefault('controller'); $request->setAlias(Mage_Core_Model_Url_Rewrite::REWRITE_REQUEST_PATH_ALIAS, ltrim($request->getOriginalPathInfo(), '/')); } } // get action name if (empty($action)) { if ($request->getActionName()) { $action = $request->getActionName(); } else { $action = !empty($_link_params[2]) ? $_link_params[2] : $front->getDefault('action'); } } //checking if this place should be secure $this->_checkShouldBeSecure($request, '/' . $module . '/' . $controller . '/' . $action); $controllerClassName = $this->_validateControllerClassName('Magestore_Shopbybrand', $controller); if (!$controllerClassName) { return false; } $controllerInstance = Mage::getControllerInstance($controllerClassName, $request, $front->getResponse()); if (!$controllerInstance->hasAction($action)) { return false; } $found = true; } } if (!$found) { if ($this->_noRouteShouldBeApplied()) { $controller = 'index'; $action = 'noroute'; $controllerClassName = $this->_validateControllerClassName($realModule, $controller); if (!$controllerClassName) { return false; } // instantiate controller class $controllerInstance = Mage::getControllerInstance($controllerClassName, $request, $front->getResponse()); if (!$controllerInstance->hasAction($action)) { return false; } } else { return false; } } else { return true; } }
public function match(Zend_Controller_Request_Http $request) { //checkings before even try to findout that current module should use this router if (!$this->_beforeModuleMatch()) { return false; } $this->fetchDefault(); $front = $this->getFront(); $p = explode('/', trim($request->getPathInfo(), '/')); // get module name if ($request->getModuleName()) { $module = $request->getModuleName(); } else { if (!empty($p[0])) { $module = $p[0]; } else { $module = $this->getFront()->getDefault('module'); $request->setAlias('rewrite_request_path', ''); } } if (!$module) { if (App_Main::isAdmin()) { $module = 'admin'; } } if (empty($module)) { return false; } // Searching router args by module name from route using it as key $modules = $this->getModuleByFrontName($module); // If we did not found anything we searching exact this module name in array values if ($modules === false) { if ($moduleFrontName = $this->getModuleByName($module, $this->_modules)) { $modules = array($module); $module = $moduleFrontName; } } if (empty($modules)) { return false; } /** * Going through modules to find appropriate controller */ $found = false; foreach ($modules as $realModule) { $request->setRouteName($this->getRouteByFrontName($module)); // get controller name if ($request->getControllerName()) { $controller = $request->getControllerName(); } else { if (!empty($p[1])) { $controller = $p[1]; } else { $controller = $front->getDefault('controller'); $request->setAlias('rewrite_request_path', ltrim($request->getOriginalPathInfo(), '/')); } } // get action name if (empty($action)) { if ($request->getActionName()) { $action = $request->getActionName(); } else { $action = !empty($p[2]) ? $p[2] : $front->getDefault('action'); } } //checking if this place should be secure $this->_checkShouldBeSecure($request, '/' . $module . '/' . $controller . '/' . $action); $controllerClassName = $this->_validateControllerClassName($realModule, $controller); if (!$controllerClassName) { continue; } // instantiate controller class $controllerInstance = new $controllerClassName($request, $front->getResponse()); if (!$controllerInstance->hasAction($action)) { continue; } $found = true; break; } /** * if we did not found any siutibul */ if (!$found) { if ($this->_noRouteShouldBeApplied()) { $controller = 'index'; $action = 'noroute'; $controllerClassName = $this->_validateControllerClassName($realModule, $controller); if (!$controllerClassName) { return false; } // instantiate controller class $controllerInstance = new $controllerClassName($request, $front->getResponse()); if (!$controllerInstance->hasAction($action)) { return false; } } else { return false; } } // set values only after all the checks are done $request->setModuleName($module); $request->setControllerName($controller); $request->setActionName($action); $request->setControllerModule($realModule); // set parameters from pathinfo for ($i = 3, $l = sizeof($p); $i < $l; $i += 2) { $request->setParam($p[$i], isset($p[$i + 1]) ? $p[$i + 1] : ''); } // dispatch action $request->setDispatched(true); $controllerInstance->dispatch($action); return true; }
/** * @param Zend_Controller_Request_Http $request * @return $this|Zend_Controller_Request_Http * @throws EcommerceTeam_Sln_Exception_Rewrite */ protected function _oldRewrite(Zend_Controller_Request_Http $request) { /** @var $helper EcommerceTeam_Sln_Helper_Data */ $helper = Mage::helper('ecommerceteam_sln'); $separator = $helper->getConfigData('url_separator'); $requestPath = trim($request->getPathInfo(), '/'); $requestPath = Mage::helper('ecommerceteam_sln/request')->clearSuffix($requestPath); $path = explode('/', $requestPath); $filterKey = array_search($separator, $path); if ($filterKey !== false) { $filterParams = array_slice($path, $filterKey + 1); if (count($filterParams) % 2) { array_unshift($filterParams, 'attributes'); } if ($filterKey) { $categoryUrlKey = implode('/', array_slice($path, 0, $filterKey)); } else { $categoryUrlKey = implode('/', $path); } if ($filterKey && $categoryUrlKey) { if (Mage::getStoreConfig("catalog/seo/category_url_suffix") == "/") { $categoryUrlKey = $categoryUrlKey . '/'; } else { $categoryUrlKey = trim($categoryUrlKey, '/') . $helper->getUrlSuffix(); } /** @var $urlRewriteModel Mage_Core_Model_Url_Rewrite */ $urlRewriteModel = Mage::getModel('core/url_rewrite'); if ($helper->isMagentoEnterprise()) { $urlRewriteModel = Mage::getModel('enterprise_urlrewrite/url_rewrite'); } $urlRewriteModel->setData('store_id', Mage::app()->getStore()->getId()); $targetPath = $urlRewriteModel->loadByRequestPath(array($categoryUrlKey))->getTargetPath(); if (!$urlRewriteModel->getData('category_id')) { throw new EcommerceTeam_Sln_Exception_Rewrite($this->__("Can't resolve category request path.")); } $currentCategory = Mage::getModel('catalog/category')->load($urlRewriteModel->getData('category_id')); Mage::getSingleton('catalog/layer')->setCurrentCategory($currentCategory); $itemsLength = count($filterParams); $request->setParam('layered_navigation_base_url', Mage::getBaseUrl('web') . $urlRewriteModel->getRequestPath()); for ($i = 0; $i < $itemsLength; $i += 2) { $request->setParam($filterParams[$i], isset($filterParams[$i + 1]) ? explode(',', $filterParams[$i + 1]) : null); } if ($targetPath) { $request->setAlias(Mage_Core_Model_Url_Rewrite::REWRITE_REQUEST_PATH_ALIAS, trim($request->getPathInfo(), '/')); $request->setPathInfo($targetPath); return $request; } } } return $this; }