From 50970f42305f4bf233268769e3dc60cff7bb5aeb Mon Sep 17 00:00:00 2001 From: Philip Tzou Date: Fri, 20 Feb 2009 06:47:03 +0000 Subject: [PATCH] Fix bug 17571, now page1 would add to both cat1 and cat2. --- includes/LinksUpdate.php | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/includes/LinksUpdate.php b/includes/LinksUpdate.php index 92856e9f42..0312250081 100644 --- a/includes/LinksUpdate.php +++ b/includes/LinksUpdate.php @@ -427,18 +427,25 @@ class LinksUpdate { function getCategoryInsertions( $existing = array() ) { global $wgContLang; $diffs = array_diff_assoc( $this->mCategories, $existing ); - $arr = array(); - foreach ( $diffs as $name => $sortkey ) { - $nt = Title::makeTitleSafe( NS_CATEGORY, $name ); - $wgContLang->findVariantLink( $name, $nt, true ); + foreach ( $this->mCategories as $name => $sortkey ) { + $newname = $name; + $nt = Title::makeTitleSafe( NS_CATEGORY, $newname ); + $wgContLang->findVariantLink( $newname, $nt, true ); // for category redirection if ( $nt->isRedirect() ) { $at = new Article( $nt ); $nt = $at->getRedirectTarget(); + $newname = $nt->getText(); // we only redirect a category to another category - if ( $nt->getNamespace() == NS_CATEGORY ) - $name = $nt->getText(); + if ( ! array_key_exists( $newname, $existing ) + and $nt->getNamespace() == NS_CATEGORY ) + $diffs[$newname] = $sortkey; } + } + $arr = array(); + foreach ( $diffs as $name => $sortkey ) { + $nt = Title::makeTitleSafe( NS_CATEGORY, $name ); + $wgContLang->findVariantLink( $name, $nt, true ); $arr[] = array( 'cl_from' => $this->mId, 'cl_to' => $name, -- 2.20.1