public function match(FilterableUri $uri)
 {
     /*
      * if the URI does not contain the seed, it is not allowed
      */
     if (false === stripos($uri->toString(), $this->seed->toString())) {
         $uri->setFiltered(true, 'Doesn\'t match base URI');
         return true;
     }
     return false;
 }
Example #2
0
 public function rewrite($link)
 {
     $url = '';
     $is_home = false;
     $uri = new Uri($link);
     if ($uri->getVar('route')) {
         $seo = new Seo($this->registry);
         switch ($uri->getVar('route')) {
             case 'common/home':
                 $is_home = true;
                 break;
             case 'product/product':
                 if ($this->config->get('config_seo_category')) {
                     if ($uri->getVar('path') and $this->config->get('config_seo_category') == 'last') {
                         $categories = explode('_', $uri->getVar('path'));
                         $categories = array(end($categories));
                     } else {
                         $categories = array();
                         $category_id = $seo->getCategoryIdBySortOrder($uri->getVar('product_id'));
                         if (!is_null($category_id)) {
                             $categories = $seo->getParentCategoriesIds($category_id);
                             $categories[] = $category_id;
                             if ($this->config->get('config_seo_category') == 'last') {
                                 $categories = array(end($categories));
                             }
                         }
                     }
                     foreach ($categories as $category) {
                         $alias = $seo->getAlias($category, 'category');
                         if ($alias) {
                             $url .= '/' . $alias;
                         }
                     }
                     $uri->delVar('path');
                 }
                 if ($uri->getVar('product_id')) {
                     $alias = $seo->getAlias($uri->getVar('product_id'), 'product');
                     if ($alias) {
                         $url .= '/' . $alias;
                     }
                     $uri->delVar('product_id');
                     $uri->delVar('manufacturer_id');
                     $uri->delVar('path');
                     $uri->delVar('search');
                 }
                 break;
             case 'product/category':
                 if ($uri->getVar('path')) {
                     $categories = explode('_', $uri->getVar('path'));
                     foreach ($categories as $category) {
                         $alias = $seo->getAlias($category, 'category');
                         if ($alias) {
                             $url .= '/' . $alias;
                         }
                     }
                     $uri->delVar('path');
                 }
                 break;
             case 'information/information':
                 if ($uri->getVar('information_id')) {
                     $alias = $seo->getAlias($uri->getVar('information_id'), 'information');
                     if ($alias) {
                         $url .= '/' . $alias;
                     }
                     $uri->delVar('information_id');
                 }
                 break;
             case 'product/manufacturer/info':
                 if ($uri->getVar('manufacturer_id')) {
                     $alias = $seo->getAlias($uri->getVar('manufacturer_id'), 'manufacturer');
                     if ($alias) {
                         $url .= '/' . $alias;
                     }
                     $uri->delVar('manufacturer_id');
                 }
                 break;
             default:
                 if (!$this->seoDisabled($uri->getVar('route'))) {
                     $url = '/' . $uri->getVar('route');
                 }
                 break;
         }
         $uri->delVar('route');
     }
     if ($url or $is_home) {
         // Add language code to URL
         if ($this->config->get('config_seo_lang_code')) {
             $url = '/' . $this->session->data['language'] . $url;
         }
         $uri->delVar('lang');
         // Append the suffix if enabled
         if ($this->config->get('config_seo_suffix') && !$is_home) {
             $url .= '.html';
         }
         $path = $uri->getPath();
         if ($is_home or $this->config->get('config_seo_rewrite')) {
             $path = str_replace('index.php/', '', $path);
             $path = str_replace('index.php', '', $path);
         }
         $path .= $url;
         $uri->setPath($path);
         return $uri->toString();
     } else {
         return $link;
     }
 }
 /**
  * @covers MediaCore\Uri::toString
  */
 public function testToString()
 {
     $url = 'http://example.com/path/to/directory?foo=bar&foo=baz';
     $uri = new Uri($url);
     $this->assertEquals($url, $uri->toString());
 }
Example #4
0
 public function testToString()
 {
     $expected = 'http://*****:*****@randomhostname:81/this/is/a/path/filename.ext?qs1=one&qs2=two#frag';
     $uri = new Uri($expected);
     $actual = $uri->toString();
     $this->assertEquals($expected, $actual);
     $this->assertEquals($expected, (string) $uri);
 }
Example #5
0
 public function testSetFragment()
 {
     $uri = new Uri('http', 'www.yahoo.com', '/', null, 'foo');
     $this->assertEquals('foo', $uri->getFragment());
     $this->assertEquals('http://www.yahoo.com/#foo', $uri->toString());
 }
 function cleanUrl($raw_url)
 {
     $uri = new Uri($raw_url);
     $uri->removeQueryItem('PHPSESSID');
     return $uri->toString(array('protocol', 'user', 'password', 'host', 'port', 'path', 'query'));
 }