function _parseSefRoute(&$uri) { $vars = array(); $app = JFactory::getApplication(); $menu = $app->getMenu(true); $parts = cmsFramework::_parseUri($uri); $route = $parts['path']; // Get the variables from the uri $vars = $parts['query']; /* * Parse the application route */ if (substr($route, 0, 9) == 'component') { $segments = explode('/', $route); $route = str_replace('component/' . $segments[1], '', $route); $vars['option'] = 'com_' . $segments[1]; $vars['Itemid'] = null; } else { //Need to reverse the array (highest sublevels first) $items = array_reverse($menu->getMenu()); $found = false; foreach ($items as $item) { $length = strlen($item->route); //get the length of the route if ($length > 0 && strpos($route . '/', $item->route . '/') === 0 && $item->type != 'menulink') { $route = substr($route, $length); if ($route) { $route = substr($route, 1); } $found = true; break; } } if (!$found) { $item = $menu->getDefault(JFactory::getLanguage()->getTag()); } $vars['Itemid'] = $item->id; $vars['option'] = $item->component; } /* * Parse the component route */ if (!empty($route)) { $segments = explode('/', $route); if (empty($segments[0])) { array_shift($segments); } } return $segments; }
function _parseSefRoute(&$uri) { $vars = array(); $app = JFactory::getApplication(); $menu = $app->getMenu(true); $parts = cmsFramework::_parseUri($uri); $route = $parts['path']; /* * Parse the application route */ if (substr($route, 0, 9) == 'component') { $segments = explode('/', $route); $route = str_replace('component/' . $segments[1], '', $route); } else { //Need to reverse the array (highest sublevels first) $items = array_reverse($menu->getMenu()); $found = false; foreach ($items as $item) { $length = strlen($item->route); //get the length of the route if ($length > 0 && strpos($route . '/', $item->route . '/') === 0 && $item->type != 'menulink') { $route = substr($route, $length); if ($route) { $route = substr($route, 1); } break; } } } /* * Parse the component route */ if (!empty($route)) { $segments = explode('/', str_replace('.html', '', $route)); if (empty($segments[0])) { array_shift($segments); } } return $segments; }