示例#1
0
 /**
  * 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);
         }
     }
 }