コード例 #1
0
 public function build(Library\HttpUrl $url)
 {
     $query = $url->query;
     $segments = array();
     //Build site route
     $site = $this->getObject('application')->getSite();
     if ($site != 'default' && $site != $this->getObject('application')->getRequest()->getUrl()->toString(Library\HttpUrl::HOST)) {
         $segments[] = $site;
     }
     //Build language route
     $languages = $this->getObject('application.languages');
     if (count($languages) > 1) {
         if (isset($query['language'])) {
             $language = $query['language'];
             unset($query['language']);
         } else {
             $language = $languages->getActive()->slug;
         }
         $segments[] = $language;
     }
     //Build component route
     if (isset($query['option'])) {
         $segments[] = substr($query['option'], 4);
         unset($query['option']);
         if (isset($query['view'])) {
             if ($query['view'] != $segments[0]) {
                 $segments[] = $query['view'];
             }
             unset($query['view']);
         }
     }
     $url->query = $query;
     //Add the format to the uri
     if (isset($url->query['format'])) {
         $format = $url->query['format'];
         if ($format != 'html') {
             $url->format = $format;
         }
         unset($url->query['format']);
     }
     //Build the route
     $url->setPath($this->getObject('request')->getBaseUrl()->getPath() . '/' . implode('/', $segments));
     // Removed unused query variables
     unset($url->query['Itemid']);
     unset($url->query['option']);
     return true;
 }