From: Alexandre Emsenhuber Date: Sun, 13 Dec 2009 20:17:09 +0000 (+0000) Subject: * (bug 20765) Special:ListGroupRights no longer misses addables and removables groups... X-Git-Tag: 1.31.0-rc.0~38551 X-Git-Url: http://git.cyclocoop.org/%7B%24admin_url%7Dmes_infos.php?a=commitdiff_plain;h=79148ada186aa0f24eaba750e23eef9e153a4bc4;p=lhc%2Fweb%2Fwiklou.git * (bug 20765) Special:ListGroupRights no longer misses addables and removables groups if there are duplicate entries I could reproduce the problem locally, but since I don't know the exact issue on the Polish Wikipedia, I suspect this is this one: array_unique() doesn't change keys, so if you have: array( 0 => 'One', 1 => 'One', 2 => 'Two' ) you'll get after array_unique(): array( 0 => 'One', 2 => 'Two' ) which confuses Language::listToText() since it expects consecutive keys --- diff --git a/RELEASE-NOTES b/RELEASE-NOTES index 45d7384baa..6d9e6b8702 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -678,6 +678,8 @@ it from source control: http://www.mediawiki.org/wiki/Download_from_SVN * (bug 21803) Special:MyContributions now keeps the query string parameters * Redirecting special pages now keep query string paramters set to "0" (e.g. for namespace) +* (bug 20765) Special:ListGroupRights no longer misses addables and removables + groups if there are duplicate entries == API changes in 1.16 == diff --git a/includes/specials/SpecialListgrouprights.php b/includes/specials/SpecialListgrouprights.php index 82aaae2a78..83724a4f0a 100644 --- a/includes/specials/SpecialListgrouprights.php +++ b/includes/specials/SpecialListgrouprights.php @@ -150,25 +150,25 @@ class SpecialListGroupRights extends SpecialPage { if( $add === true ){ $r[] = wfMsgExt( 'listgrouprights-addgroup-all', array( 'escape' ) ); } else if( is_array( $add ) && count( $add ) ) { - $add = array_unique( $add ); + $add = array_values( array_unique( $add ) ); $r[] = wfMsgExt( 'listgrouprights-addgroup', array( 'parseinline' ), $wgLang->listToText( array_map( array( 'User', 'makeGroupLinkWiki' ), $add ) ), count( $add ) ); } if( $remove === true ){ $r[] = wfMsgExt( 'listgrouprights-removegroup-all', array( 'escape' ) ); } else if( is_array( $remove ) && count( $remove ) ) { - $remove = array_unique( $remove ); + $remove = array_values( array_unique( $remove ) ); $r[] = wfMsgExt( 'listgrouprights-removegroup', array( 'parseinline' ), $wgLang->listToText( array_map( array( 'User', 'makeGroupLinkWiki' ), $remove ) ), count( $remove ) ); } if( $addSelf === true ){ $r[] = wfMsgExt( 'listgrouprights-addgroup-self-all', array( 'escape' ) ); } else if( is_array( $addSelf ) && count( $addSelf ) ) { - $addSelf = array_unique( $addSelf ); + $addSelf = array_values( array_unique( $addSelf ) ); $r[] = wfMsgExt( 'listgrouprights-addgroup-self', array( 'parseinline' ), $wgLang->listToText( array_map( array( 'User', 'makeGroupLinkWiki' ), $addSelf ) ), count( $addSelf ) ); } if( $removeSelf === true ){ $r[] = wfMsgExt( 'listgrouprights-removegroup-self-all', array( 'escape' ) ); } else if( is_array( $removeSelf ) && count( $removeSelf ) ) { - $removeSelf = array_unique( $removeSelf ); + $removeSelf = array_values( array_unique( $removeSelf ) ); $r[] = wfMsgExt( 'listgrouprights-removegroup-self', array( 'parseinline' ), $wgLang->listToText( array_map( array( 'User', 'makeGroupLinkWiki' ), $removeSelf ) ), count( $removeSelf ) ); } if( empty( $r ) ) {