diff --git a/components/com_tags/helpers/route.php b/components/com_tags/helpers/route.php index 7d53b7c2f5494..b2732d67d4e1d 100644 --- a/components/com_tags/helpers/route.php +++ b/components/com_tags/helpers/route.php @@ -88,14 +88,11 @@ public static function getTagRoute($id) } else { - if (!empty($needles) && $item = self::_findItem($needles)) - { - $link = 'index.php?Itemid=' . $item; - } - else + $link = 'index.php?option=com_tags&view=tag&id=' . $id; + + if ($item = self::_findItem($needles)) { - // Create the link - $link = 'index.php?option=com_tags&view=tag&id=' . $id; + $link .= '&Itemid=' . $item; } } @@ -131,32 +128,24 @@ protected static function _findItem($needles = null) { if (isset($item->query) && isset($item->query['view'])) { - $view = $item->query['view']; + $lang = ($item->language != '' ? $item->language : '*'); - if (!isset(self::$lookup[$view])) + if (!isset(self::$lookup[$lang])) { - self::$lookup[$view] = array(); + self::$lookup[$lang] = array(); } - // Only match menu items that list one tag - if (isset($item->query['id'][0]) && count($item->query['id']) == 1) + $view = $item->query['view']; + + if (!isset(self::$lookup[$lang][$view])) { - /* - * 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; + self::$lookup[$lang][$view] = array(); } - if (isset($item->query["tag_list_language_filter"]) && $item->query["tag_list_language_filter"] != '') + // Only match menu items that list one tag + if (isset($item->query['id'][0]) && count($item->query['id']) == 1) { - $language = $item->query["tag_list_language_filter"]; + self::$lookup[$lang][$view][$item->query['id'][0]] = $item->id; } } } @@ -167,13 +156,13 @@ protected static function _findItem($needles = null) { foreach ($needles as $view => $ids) { - if (isset(self::$lookup[$view])) + if (isset(self::$lookup[$language][$view])) { foreach ($ids as $id) { - if (isset(self::$lookup[$view][(int) $id])) + if (isset(self::$lookup[$language][$view][(int) $id])) { - return self::$lookup[$view][(int) $id]; + return self::$lookup[$language][$view][(int) $id]; } } }