From 787e8a603ad34725ee98e93e1d023af7aa0914d5 Mon Sep 17 00:00:00 2001 From: Roberto Segura - phproberto Date: Sat, 7 Mar 2015 00:47:11 +0100 Subject: [PATCH 1/2] [fix] tag links . Fixes #6291 --- components/com_tags/helpers/route.php | 7 +++++-- components/com_tags/router.php | 12 ++++++++---- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/components/com_tags/helpers/route.php b/components/com_tags/helpers/route.php index 680bb72261ce..8e5576501c98 100644 --- a/components/com_tags/helpers/route.php +++ b/components/com_tags/helpers/route.php @@ -143,9 +143,12 @@ protected static function _findItem($needles = null) } // Only match menu items that list one tag - if (isset($item->query['id'][0]) && count($item->query['id']) == 1) + if (isset($item->query['id']) && is_array($item->query['id'])) { - self::$lookup[$lang][$view][$item->query['id'][0]] = $item->id; + foreach ($item->query['id'] as $position => $tagId) + { + self::$lookup[$lang][$view][$item->query['id'][$position]] = $item->id; + } } } } diff --git a/components/com_tags/router.php b/components/com_tags/router.php index 912c2d165519..10c446f7c85e 100644 --- a/components/com_tags/router.php +++ b/components/com_tags/router.php @@ -51,6 +51,7 @@ public function build(&$query) } $view = ''; + if (isset($query['view'])) { $view = $query['view']; @@ -67,12 +68,15 @@ public function build(&$query) if ($mView == $view && isset($query['id']) && $mId == $query['id']) { unset($query['id']); + return $segments; } - if (isset($view) and $view == 'tag') + if (isset($view) && $view == 'tag') { - if (($mId != (int) $query['id'] || $mView != $view) && $view == 'tag') + $notActiveTag = is_array($mId) ? (count($mId) > 1 || $mId[0] != (int) $query['id']) : ($mId != (int) $query['id']); + + if ($notActiveTag || $mView != $view) { // ID in com_tags can be either an integer, a string or an array of IDs $id = is_array($query['id']) ? implode(',', $query['id']) : $query['id']; @@ -155,7 +159,7 @@ public function parse(&$segments) * * @deprecated 4.0 Use Class based routers instead */ -function TagsBuildRoute(&$query) +function tagsBuildRoute(&$query) { $router = new TagsRouter; @@ -171,7 +175,7 @@ function TagsBuildRoute(&$query) * * @deprecated 4.0 Use Class based routers instead */ -function TagsParseRoute($segments) +function tagsParseRoute($segments) { $router = new TagsRouter; From 08195588c4809ae6b3c42abba6e1f2c7e40e1051 Mon Sep 17 00:00:00 2001 From: Roberto Segura - phproberto Date: Sat, 7 Mar 2015 04:34:37 +0100 Subject: [PATCH 2/2] [fix] itemids overwritten if tag is in 2 menus --- components/com_tags/helpers/route.php | 5 ++++- components/com_tags/router.php | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/components/com_tags/helpers/route.php b/components/com_tags/helpers/route.php index 8e5576501c98..5d31424458ba 100644 --- a/components/com_tags/helpers/route.php +++ b/components/com_tags/helpers/route.php @@ -147,7 +147,10 @@ protected static function _findItem($needles = null) { foreach ($item->query['id'] as $position => $tagId) { - self::$lookup[$lang][$view][$item->query['id'][$position]] = $item->id; + 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; + } } } } diff --git a/components/com_tags/router.php b/components/com_tags/router.php index 10c446f7c85e..402bc7375170 100644 --- a/components/com_tags/router.php +++ b/components/com_tags/router.php @@ -72,7 +72,7 @@ public function build(&$query) return $segments; } - if (isset($view) && $view == 'tag') + if ($view == 'tag') { $notActiveTag = is_array($mId) ? (count($mId) > 1 || $mId[0] != (int) $query['id']) : ($mId != (int) $query['id']);