/** * Loads the entire menu table into memory (taken from Joomla 1.7.3). * * @return array */ protected static function load() { // Initialise variables. $db = JFactory::getDbo(); $query = $db->getQuery(true); $query->select('m.id, m.menutype, m.title, m.alias, m.path AS route, m.link, m.type, m.level, m.language'); $query->select('m.browserNav, m.access, m.params, m.home, m.img, m.template_style_id, m.component_id, m.parent_id'); $query->select('e.element as component, m.published'); $query->from('#__menu AS m'); $query->leftJoin('#__extensions AS e ON m.component_id = e.extension_id'); $query->where('m.parent_id > 0'); $query->where('m.client_id = 0'); $query->order('m.lft'); // Set the query $db->setQuery($query); if (!(self::$items = $db->loadObjectList('id'))) { JError::raiseWarning(500, JText::sprintf('JERROR_LOADING_MENUS', $db->getErrorMsg())); return false; } foreach (self::$items as &$item) { // Get parent information. $parent_tree = array(); if (isset(self::$items[$item->parent_id])) { $parent_tree = self::$items[$item->parent_id]->tree; } // Create tree $parent_tree[] = $item->id; $item->tree = $parent_tree; // Create the query array. $url = str_replace('index.php?', '', $item->link); $url = str_replace('&', '&', $url); parse_str($url, $item->query); } }
/** * Loads the entire menu table into memory (taken from Joomla 1.7.3). * * @return array */ protected static function load() { // Initialise variables. $db = JFactory::getDbo(); if (version_compare(JVERSION, '1.6', '>')) { // Joomla 1.6+ $query = $db->getQuery(true); $query->select('m.id, m.menutype, m.title, m.alias, m.path AS route, m.link, m.type, m.level, m.language'); $query->select('m.browserNav, m.access, m.params, m.home, m.img, m.template_style_id, m.component_id, m.parent_id'); $query->select('e.element as component, m.published'); $query->from('#__menu AS m'); $query->leftJoin('#__extensions AS e ON m.component_id = e.extension_id'); $query->where('m.parent_id > 0'); $query->where('m.client_id = 0'); $query->order('m.lft'); } else { // Joomla 1.5 $query = "SELECT m.id, m.menutype, m.name AS title, m.alias, '' AS route, m.link, m.type, m.sublevel AS level, '*' AS language,\n\t\t\t\tm.browserNav, m.access, m.params, m.home, '' AS img, '' AS template_style_id, m.componentid AS component_id, m.parent AS parent_id,\n\t\t\t\tc.option AS component, m.published\n\t\t\t\tFROM #__menu AS m\n\t\t\t\tLEFT JOIN #__components AS c ON m.componentid = c.id\n\t\t\t\tORDER BY m.sublevel, m.parent, m.ordering"; } // Set the query $db->setQuery($query); if (!(self::$items = $db->loadObjectList('id'))) { JError::raiseWarning(500, JText::sprintf('JERROR_LOADING_MENUS', $db->getErrorMsg())); return false; } foreach (self::$items as &$item) { // Get parent information. $parent_tree = array(); if (version_compare(JVERSION, '1.6', '>')) { // Joomla 1.6+ if (isset(self::$items[$item->parent_id])) { $parent_tree = self::$items[$item->parent_id]->tree; } } else { // Joomla 1.5 $parent_route = ''; if (($parent = $item->parent_id) && isset(self::$items[$parent]) && is_object(self::$items[$parent]) && isset(self::$items[$parent]->route) && isset(self::$items[$parent]->tree)) { $parent_route = self::$items[$parent]->route . '/'; $parent_tree = self::$items[$parent]->tree; } // Create route $item->route = $parent_route . $item->alias; } // Create tree $parent_tree[] = $item->id; $item->tree = $parent_tree; // Create the query array. $url = str_replace('index.php?', '', $item->link); $url = str_replace('&', '&', $url); parse_str($url, $item->query); } }