Пример #1
0
 /**
  * Route save single article to the corresponding SEF link
  *
  * @access private
  * @return string
  */
 private function routeArticleToSefMenu($articleID, $catID, $language, $article)
 {
     // Try to route the article to a single article menu item view
     $helperRouteClass = $this->context['class'];
     $classMethod = $this->context['method'];
     // Route helper native by component, com_content, com_k2
     if (!isset($this->context['routing'])) {
         $articleHelperRoute = $helperRouteClass::$classMethod($articleID, $catID, $language);
     } else {
         // Route helper universal JSitemap, com_zoo
         $articleHelperRoute = $helperRouteClass::$classMethod($article->option, $article->view, $article->id, $article->catid, null);
         if ($articleHelperRoute) {
             $articleHelperRoute = '?Itemid=' . $articleHelperRoute;
         }
     }
     // Extract Itemid from the helper routed URL
     $extractedItemid = preg_match('/Itemid=\\d+/i', $articleHelperRoute, $result);
     if (isset($result[0])) {
         // Get uri instance avoidng subdomains already included in the routing chunks
         $uriInstance = JUri::getInstance();
         $resourceLiveSite = rtrim($uriInstance->getScheme() . '://' . $uriInstance->getHost(), '/');
         $extractedItemid = $result[0];
         $siteRouter = JRouterSite::getInstance('site', array('mode' => JROUTER_MODE_SEF));
         $articleMenuRouted = $siteRouter->build('?' . $extractedItemid)->toString();
         // Check if multilanguage is enabled
         if (JMapLanguageMultilang::isEnabled()) {
             if ($language != '*') {
                 // New language manager instance
                 $languageManager = JMapLanguageMultilang::getInstance($language);
             } else {
                 // Get the default language tag
                 // New language manager instance
                 $languageManager = JMapLanguageMultilang::getInstance();
             }
             // Extract the language tag
             $localeTag = $languageManager->getLocale();
             $sefTag = $localeTag[4];
             $articleMenuRouted = str_replace('/administrator', '/' . $sefTag, $articleMenuRouted);
         } else {
             $articleMenuRouted = str_replace('/administrator', '', $articleMenuRouted);
         }
         $articleMenuRouted = preg_match('/http/i', $articleMenuRouted) ? $articleMenuRouted : $resourceLiveSite . '/' . ltrim($articleMenuRouted, '/');
         return $articleMenuRouted;
     } else {
         // Check if routing is valid otherwise throw exception
         throw new RuntimeException(JText::_('COM_JMAP_AUTOPING_ERROR_NOSEFROUTE_FOUND'));
     }
 }