Beispiel #1
0
 function _finalizeSEF($uri, $sef_url, $real_url, $component, $lang_code)
 {
     // Add menu title
     $skip_menu = $this->attributes->params->get('skip_menu', '0');
     if (!AcesefExtension::skipMenu('', true) && !self::skipMenuVars($uri) && !self::_isHomePage($uri) && ($skip_menu == 0 || $skip_menu == 1 && $sef_url == '')) {
         $menu_title = array();
         $prefix = $this->attributes->params->get('prefix', '');
         if (!empty($prefix)) {
             $menu_title[] = $prefix;
         } else {
             $menu_start_level = $this->attributes->params->get('menu_start_level', '0');
             $menu_length_level = $this->attributes->params->get('menu_length_level', '0');
             $menu_title = AcesefUtility::getMenuTitle(intval($uri->getVar('Itemid')), $menu_start_level, $menu_length_level);
         }
         if (!empty($menu_title)) {
             $menu_url = implode('/', $menu_title);
             $sef_url = ltrim($sef_url, '/');
             if (empty($sef_url)) {
                 $sef_url = $menu_url;
             } else {
                 $sef_url = $menu_url . '/' . $sef_url;
             }
         }
     }
     // Add lang code
     if ($lang_code != "") {
         $sef_url = ltrim($sef_url, '/');
         $sef_url = $lang_code . '/' . $sef_url;
     }
     // Append menu ItemID
     if ($this->AcesefConfig->append_itemid == 1 && !is_null($uri->getVar('Itemid'))) {
         $sef_url = rtrim($sef_url, '/');
         $sef_url .= "/ItemID " . intval($uri->getVar('Itemid'));
     }
     // Generate pagination
     if (!is_null($uri->getVar('limitstart'))) {
         $page_nr = self::getPageNumber($uri->_vars, $this->attributes->params, $this->attributes->item_limitstart);
         $page_str = JText::_('PAGE') . ' ' . $page_nr;
         $sef_url = rtrim($sef_url, '/');
         $sef_url .= '/' . $page_str;
     }
     // Make some cleanup
     $sef_url = self::_cleanupSefUrl($sef_url);
     // Check if the suffix is set and make some optimization
     if (strpos($sef_url, '.') === false && $sef_url != '/' && substr($sef_url, strlen($sef_url) - 1, 1) != '/') {
         if ($sef_url != '') {
             $sef_url .= $this->AcesefConfig->url_suffix;
         }
         $sef_url = str_replace('/.', '.', $sef_url);
         $sef_url = str_replace('-.', '.', $sef_url);
         $sef_url = str_replace('/pdf' . $this->AcesefConfig->url_suffix, '.pdf', $sef_url);
     }
     // Lowercase URLs
     if ($this->AcesefConfig->url_lowercase == 1) {
         $sef_url = JString::strtolower($sef_url);
     }
     // Remove front slash
     $sef_url = ltrim($sef_url, '/');
     // Remove the trailing slash
     if (!empty($sef_url) && $this->AcesefConfig->remove_trailing_slash == 1) {
         $sef_url = rtrim($sef_url, '/');
     }
     // Manage Duplicate URLs
     if (AcesefUtility::getConfigState($this->attributes->params, 'numeral_duplicated')) {
         $sef_url = self::_numeralDuplicated($sef_url, $real_url);
     }
     // Save the generated SEF URL
     if ($real_url != "" && ($sef_url != "" || $sef_url == "" && self::_isHomePage($uri))) {
         // URL
         if (AcesefUtility::getConfigState($this->attributes->params, 'record_duplicated')) {
             self::_saveRecord($real_url, $sef_url, $component);
         } else {
             $db_url_sef = AcesefCache::checkURL($sef_url, true);
             if (!is_object($db_url_sef)) {
                 self::_saveRecord($real_url, $sef_url, $component);
             }
         }
         // Metadata
         $metadata = $this->attributes->meta;
         if ($this->AcesefConfig->meta_core == 1 && is_array($metadata) && count($metadata) > 0) {
             AcesefMetadata::autoMetadata($sef_url, $metadata);
         }
         // Sitemap
         if ($this->AcesefConfig->sm_auto_mode == 1 && class_exists('AcesefSitemap')) {
             AcesefSitemap::autoSitemap($component, $this->attributes->params, $sef_url, $real_url);
         }
         // Tags
         if ($this->AcesefConfig->tags_auto_mode == 1 && is_array($metadata) && !empty($metadata['keywords']) && class_exists('AcesefTags')) {
             AcesefTags::autoTags($metadata['keywords'], $component, $this->attributes->params, $sef_url, $real_url);
         }
     }
     return $sef_url;
 }