/** * 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')); } }