/** * 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; }
/** * Save CMS page URL rewrite additional information * * @param Mage_Core_Model_Url_Rewrite $model */ private function _handleCmsPageUrlRewriteSave($model) { /** @var $cmsPage Mage_Cms_Model_Page */ $cmsPage = $this->_getCmsPage(); if (!$cmsPage->getId()) { return; } /** @var $cmsRewrite Mage_Cms_Model_Page_Urlrewrite */ $cmsRewrite = Mage::getModel('Mage_Cms_Model_Page_Urlrewrite'); $cmsRewrite->load($model->getId(), 'url_rewrite_id'); if (!$cmsRewrite->getId()) { $cmsRewrite->setUrlRewriteId($model->getId()); $cmsRewrite->setCmsPageId($cmsPage->getId()); $cmsRewrite->save(); } }
/** * Prevent loading disallowed urlrewrites * * @param Mage_Core_Model_Url_Rewrite $model */ public function coreUrlRewriteLoadAfter($model) { if (!$model->getId()) { return; } if (!$this->_role->hasStoreAccess($model->getStoreId())) { $this->_throwLoad(); } }
public function saveRewrite(Mage_Core_Model_Url_Rewrite $rewrite) { if (!$rewrite->getId()) { $old = Mage::getModel('core/url_rewrite')->setStoreId($rewrite->getStoreId())->loadByIdPath($rewrite->getIdPath()); if (!$old) { $old->loadByRequestPath($rewrite->getRequestPath()); } if ($old) { $rewrite->setId($old->getId()); } } $rewrite->save(); $this->_rewrites[$rewrite->getStoreId()][$rewrite->getIdPath()] = $rewrite; $this->_paths[$rewrite->getStoreId()][$rewrite->getRequestPath()] = $rewrite->getIdPath(); return $this; }