public static function _($url, $xhtml = true, $ssl = null, $search = false, $isCanonical = false) { $mainframe = JFactory::getApplication(); $config = EasyBlogHelper::getConfig(); static $loaded = array(); static $eUri = array(); $useXHTML = (int) $xhtml . (int) $isCanonical; if (isset($loaded[$url . $useXHTML])) { return $loaded[$url . $useXHTML]; } $rawURL = $url; $blogger = JRequest::getVar('blogger', ''); if (!empty($blogger)) { $url .= '&blogger=' . $blogger; } //$jURL = JRoute::_($url, false); $jURL = $url; // convert the string to variable so that we can access it. parse_str($jURL, $post); $view = isset($post['view']) ? $post['view'] : 'latest'; $Itemid = isset($post['Itemid']) ? $post['Itemid'] : ''; $routingBehavior = $config->get('main_routing', 'currentactive'); $exItemid = ''; $findItemId = false; $dropSegment = false; if (($routingBehavior == 'currentactive' || $routingBehavior == 'menuitemid') && !$isCanonical) { $routingMenuItem = $config->get('main_routing_itemid', ''); if ($routingBehavior == 'menuitemid' && $routingMenuItem != '') { $exItemid = $routingMenuItem; } // @rule: If there is already an item id, try to use the explicitly set one. if (empty($exItemid)) { if ($view == 'entry') { $blogId = $post['id']; $blog = EasyBlogHelper::getTable('Blog', 'Table'); $blog->load($blogId); $author = $blog->created_by; if (!empty($author)) { $tmpItemid = EasyBlogRouter::getItemIdByBlogger($author); if (!empty($tmpItemid)) { $isBloggerMode = EasyBlogRouter::isMenuABloggerMode($tmpItemid); if ($isBloggerMode) { $exItemid = $tmpItemid; } } } } // @rule: If it is not a blogger mode, we just use the current one. if (!$mainframe->isAdmin()) { // Retrieve the active menu item. $menu = JFactory::getApplication()->getMenu(); $item = $menu->getActive(); if (isset($item->id)) { $isBloggerMode = EasyBlogRouter::isMenuABloggerMode($item->id); if (!$isBloggerMode) { $exItemid = $item->id; } } } } } else { switch ($view) { case 'entry': $routingOrder = EasyBlogRouter::getDefaultRoutingOrder(); $exItemid = ''; if (!empty($routingOrder)) { $blogId = $post['id']; $blog = EasyBlogHelper::getTable('Blog', 'Table'); $blog->load($blogId); $authorId = $blog->created_by; $categoryId = $blog->category_id; foreach ($routingOrder as $key => $val) { switch ($key) { case 'bloggerstandalone': $bloggerId = EasyBlogRouter::isBloggerMode(); if ($bloggerId !== false) { $exItemid = EasyBlogRouter::getItemIdByBlogger($bloggerId); } break; case 'entry': $exItemid = EasyBlogRouter::getItemIdByEntry($blogId); break; case 'category': $exItemid = EasyBlogRouter::getItemIdByCategories($categoryId); break; case 'blogger': $exItemid = EasyBlogRouter::getItemIdByBlogger($authorId); break; case 'teamblog': $teamId = $blog->getTeamContributed(); if (!empty($teamId)) { $exItemid = EasyBlogRouter::getItemIdByTeamBlog($teamId); } break; } if (!empty($exItemid)) { break; } } } if (empty($exItemid)) { $view = 'latest'; $findItemId = true; } break; case 'blogger': //if( isset( $post['layout'] ) && isset( $post['id'] ) ) if (isset($post['id'])) { $exItemid = EasyBlogRouter::getItemIdByBlogger($post['id']); if (!empty($exItemid)) { $dropSegment = true; } } if (empty($exItemid)) { $exItemid = EasyBlogRouter::getItemId('blogger', true); } if (empty($exItemid)) { $view = 'latest'; $findItemId = true; } break; case 'categories': //if( isset( $post['layout'] ) && isset( $post['id'] ) ) if (isset($post['id'])) { $exItemid = EasyBlogRouter::getItemIdByCategories($post['id']); if (!empty($exItemid)) { $dropSegment = true; } } if (empty($exItemid)) { $bloggerId = EasyBlogRouter::isBloggerMode(); if ($bloggerId !== false) { $exItemid = EasyBlogRouter::getItemIdByBlogger($bloggerId); } if (empty($exItemid)) { $exItemid = EasyBlogRouter::getItemId('categories', true); } if (empty($exItemid)) { $view = 'latest'; $findItemId = true; } } break; case 'teamblog': //if( isset( $post['layout'] ) && isset( $post['id'] ) ) if (isset($post['id'])) { $exItemid = EasyBlogRouter::getItemIdByTeamBlog($post['id']); if (!empty($exItemid)) { $dropSegment = true; } } if (empty($exItemid)) { $exItemid = EasyBlogRouter::getItemId('teamblog', true); } if (empty($exItemid)) { $view = 'latest'; $findItemId = true; } break; case 'tags': if (isset($post['layout']) && isset($post['id'])) { //now check the active menu whether a blogger isolation mode or not. $bloggerId = EasyBlogRouter::isBloggerMode(); if ($bloggerId !== false) { $exItemid = EasyBlogRouter::getItemIdByBlogger($bloggerId); } if (empty($exItemid)) { $exItemid = EasyBlogRouter::getItemIdByTag($post['id']); if (!empty($exItemid)) { $dropSegment = true; } } } else { $exItemid = EasyBlogRouter::getItemId('tags'); } if (empty($exItemid)) { $view = 'latest'; $findItemId = true; } break; case 'dashboard': if (isset($post['layout'])) { $exItemid = EasyBlogRouter::getItemIdByDashboardLayout($post['layout']); } if (empty($exItemid)) { $exItemid = EasyBlogRouter::getItemId('dashboard', true); } if (empty($exItemid)) { $findItemId = true; } break; case 'latest': $bloggerId = EasyBlogRouter::isBloggerMode(); if ($bloggerId !== false) { $exItemid = EasyBlogRouter::getItemIdByBlogger($bloggerId); } if (empty($exItemid)) { $exItemid = EasyBlogRouter::getItemId('latest'); } if (empty($exItemid)) { $findItemId = true; } break; default: break; } } if (!empty($exItemid)) { if (self::isSefEnabled() && $dropSegment) { $url = 'index.php?Itemid=' . $exItemid; $loaded[$rawURL . $useXHTML] = JRoute::_($url, $xhtml, $ssl); return $loaded[$rawURL . $useXHTML]; } //check if there is any anchor in the link or not. $pos = JString::strpos($url, '#'); // If item id is provided in the query itself, we do not need to append any item id. // otherwise the result would be &Itemid=1&Itemid=2 if (!$Itemid) { if ($pos === false) { $url .= '&Itemid=' . $exItemid; } else { $url = JString::str_ireplace('#', '&Itemid=' . $exItemid . '#', $url); } } $loaded[$rawURL . $useXHTML] = JRoute::_($url, $xhtml, $ssl); return $loaded[$rawURL . $useXHTML]; } //fall back to previous style if getting the Itemid if (empty($Itemid) && $findItemId) { $tmpId = ''; $useDefaultWay = false; if ($mainframe->isAdmin()) { //from backend. $useDefaultWay = true; } else { //from frontend. //lets try to get from the default itemId. $menu = JFactory::getApplication()->getMenu(); $item = $menu->getActive(); if (!$findItemId && isset($item->id) && $item->component == 'com_easyblog' && !$search) { $tmpId = $item->id; } else { $useDefaultWay = true; } } if ($useDefaultWay) { if (empty($eUri[$view])) { $tmpId = EasyBlogRouter::getItemId($view); $eUri[$view] = $tmpId; } else { $tmpId = $eUri[$view]; } } //check if there is any anchor in the link or not. $pos = JString::strpos($url, '#'); if ($pos === false) { $url .= '&Itemid=' . $tmpId; } else { $url = JString::str_ireplace('#', '&Itemid=' . $tmpId . '#', $url); } } $loaded[$rawURL . $useXHTML] = JRoute::_($url, $xhtml, $ssl); return $loaded[$rawURL . $useXHTML]; }