/** * Find Item static function * * @param array $needles Array used to get the language value * * @return null * * @throws Exception */ protected static function _findItem($needles = null) { $app = JFactory::getApplication(); $menus = $app->getMenu('site'); $language = isset($needles['language']) ? $needles['language'] : '*'; // Prepare the reverse lookup array. if (self::$lookup === null) { self::$lookup = array(); $component = JComponentHelper::getComponent('com_tags'); $items = $menus->getItems('component_id', $component->id); if ($items) { foreach ($items as $item) { if (isset($item->query) && isset($item->query['view'])) { $lang = $item->language != '' ? $item->language : '*'; if (!isset(self::$lookup[$lang])) { self::$lookup[$lang] = array(); } $view = $item->query['view']; if (!isset(self::$lookup[$lang][$view])) { self::$lookup[$lang][$view] = array(); } // Only match menu items that list one tag if (isset($item->query['id']) && is_array($item->query['id'])) { foreach ($item->query['id'] as $position => $tagId) { if (!isset(self::$lookup[$lang][$view][$item->query['id'][$position]]) || count($item->query['id']) == 1) { self::$lookup[$lang][$view][$item->query['id'][$position]] = $item->id; } } } } } } } if ($needles) { foreach ($needles as $view => $ids) { if (isset(self::$lookup[$language][$view])) { foreach ($ids as $id) { if (isset(self::$lookup[$language][$view][(int) $id])) { return self::$lookup[$language][$view][(int) $id]; } } } } } else { $active = $menus->getActive(); if ($active) { return $active->id; } } return null; }
protected static function _findItem($needles = null) { $app = JFactory::getApplication(); $menus = $app->getMenu('site'); $language = isset($needles['language']) ? $needles['language'] : '*'; // Prepare the reverse lookup array. if (self::$lookup === null) { self::$lookup = array(); $component = JComponentHelper::getComponent('com_tags'); $items = $menus->getItems('component_id', $component->id); if ($items) { foreach ($items as $item) { if (isset($item->query) && isset($item->query['view'])) { $view = $item->query['view']; if (!isset(self::$lookup[$view])) { self::$lookup[$view] = array(); } // Only match menu items that list one tag if (isset($item->query['id'][0]) && count($item->query['id']) == 1) { // Here it will become a bit tricky // language != * can override existing entries // language == * cannot override existing entries if (!isset(self::$lookup[$language][$view][$item->query['id'][0]]) || $item->language != '*') { self::$lookup[$language][$view][$item->query['id'][0]] = $item->id; } self::$lookup[$view][$item->query['id'][0]] = $item->id; } if (isset($item->query["tag_list_language_filter"]) && $item->query["tag_list_language_filter"] != '') { $language = $item->query["tag_list_language_filter"]; } } } } } if ($needles) { foreach ($needles as $view => $ids) { if (isset(self::$lookup[$view])) { foreach ($ids as $id) { if (isset(self::$lookup[$view][(int) $id])) { return self::$lookup[$view][(int) $id]; } } } } } else { $active = $menus->getActive(); if ($active) { return $active->id; } } return null; }