/** * Check, if current url has old format - execute 301 redirect to correct address * @param $params */ protected function _checkRedirect($params) { // get vars $segments = $params['segments']; $segCout = count($segments); // item url if ('item' == $segments[0] && 2 == $segCout) { $itemId = $this->_aliasItem->translateAliasToID($segments[1]); $item = $this->_itemTable->get((int) $itemId); $newUrl = $this->_getUrl($item, 'item'); $this->_redirect($newUrl); } // for excess get param category_id if ($this->_config->get('fix_category_id', 0)) { $reg = '#' . $segments[0] . '\\?category_id=\\d*$#i'; $curUrl = $this->app->jbenv->getCurrentUrl(); if (preg_match($reg, $curUrl, $matches)) { $itemId = $this->_aliasItem->translateAliasToID($segments[0]); $item = $this->_itemTable->get((int) $itemId); $newUrl = $this->_getUrl($item, 'item'); $this->_redirect($newUrl); } } // category url if ('category' == $segments[0] && (2 == $segCout || 3 == $segCout)) { // simple variant if (2 == $segCout) { $catId = $this->_aliasCat->translateAliasToID($segments[1]); $category = $this->_catTable->get((int) $catId); $newUrl = $this->_getUrl($category, 'category'); $this->_redirect($newUrl); } else { if (3 == $segCout) { // with pagination $catId = $this->_aliasCat->translateAliasToID($segments[1]); $category = $this->_catTable->get((int) $catId); $newUrl = $this->_getUrl($category, 'category') . (int) $segments[2]; $this->_redirect($newUrl); } } } // feed if ('feed' == $segments[0] && ('rss' == $segments[1] || 'atom' == $segments[1]) && (3 == $segCout || 4 == $segCout)) { $appId = $this->_aliasApp->translateAliasToID($segments[2]); if ($appId) { if (isset($segments[3])) { $categoryId = $this->_aliasCat->translateAliasToID($segments[3]); $category = $this->_catTable->get($categoryId); } else { $category = $this->app->object->create('category'); $category->id = 0; $category->name = 'ROOT'; $category->alias = '_root'; } $newUrl = $this->_getUrl($category, 'feed', $segments[1]); $this->_redirect($newUrl); } } }