* Remove the two hooks introduced in r52082
authorRyan Schmidt <skizzerz@users.mediawiki.org>
Thu, 18 Jun 2009 14:47:18 +0000 (14:47 +0000)
committerRyan Schmidt <skizzerz@users.mediawiki.org>
Thu, 18 Jun 2009 14:47:18 +0000 (14:47 +0000)
* Remove the unused UserrightsChangeableGroups hook introduced in r39368 (1.14)
* Fix typo in Special:ListGroupRights introduced in r52083
* Prevent duplicate key display in Special:ListGroupRights (new behavior: if a permission is both assigned and revoked from a group, it only displays as revoked).
* Fix $wgRevokePermissions handling, it now runs after every group permission has been assigned in order to revoke the permission properly.

RELEASE-NOTES
docs/hooks.txt
includes/User.php
includes/specials/SpecialListgrouprights.php
includes/specials/SpecialUserrights.php

index 046e752..4ba479d 100644 (file)
@@ -40,6 +40,7 @@ it from source control: http://www.mediawiki.org/wiki/Download_from_SVN
 * Oracle: maintenance/ora/user.sql script for creating DB user on oracle with
   appropriate privileges. Creating this user with web-install page requires
   oci8.privileged_connect set to On in php.ini.
+* Removed UserrightsChangeableGroups hook introduced in 1.14
 
 === New features in 1.16 ===
 
@@ -83,10 +84,6 @@ it from source control: http://www.mediawiki.org/wiki/Download_from_SVN
 * DISPLAYTITLE now accepts a limited amount of wiki markup (the single-quote items)
 * Special:Search now could search terms in all variant-forms. ONLY apply on
   wikis with LanguageConverter
-* Add hook 'UserrightsGetCheckboxes' to give extensions the ability to modify
-  the arrangement of checkboxes on the Special:UserRights form
-* Add hook 'UserrightsSaveUserGroups' to give extensions the ability to modify
-  the groups being added and removed last-minute.
 * Add autopromote condition APCOND_BLOCKED to autopromote blocked users to various
   user groups.
 * Add $wgRevokePermissions as a means of restricting a group's rights. The syntax is
index 7980db0..ada88d1 100644 (file)
@@ -1538,36 +1538,6 @@ $user  : User object that was changed
 $add   : Array of strings corresponding to groups added
 $remove: Array of strings corresponding to groups removed
 
-'UserrightsChangeableGroups': allows modification of the groups a user
-may add or remove via Special:UserRights
-$userrights  : UserrightsPage object
-$user        : User object of the current user
-$addergroups : Array of groups that the user is in
-&$groups     : Array of groups that can be added or removed. In format of
-                               array(
-                                       'add'         => array( addablegroups ),
-                                       'remove'      => array( removablegroups ),
-                                       'add-self'    => array( addablegroups to self ),
-                                       'remove-self' => array( removable groups from self )
-                               )
-
-'UserrightsGroupCheckboxes': allows modification of the display of
-checkboxes in the Special:UserRights interface.
-$usergroups : Array of groups that the target user belongs to
-&$columns   : Array of checkboxes, in the form of
-                               $columns['column name']['group name'] = array(
-                                       'set'          => is this checkbox checked by default?
-                                       'disabled'     => is this checkbox disabled?
-                                       'irreversible' => can this action not be reversed?
-                               );
-
-'UserrightsSaveUserGroups': allow extensions to modify the added/removed groups
-&$user     : User object of the user being altered
-$oldGroups : Array of groups that the user is currently in
-&$add      : Array of groups to add
-&$remove   : Array of groups to remove
-$reason    : Summary provided by user on the form
-
 'UserRetrieveNewTalks': called when retrieving "You have new messages!"
 message(s)
 $user: user retrieving new talks messages
index d57932e..5849ec0 100644 (file)
@@ -3067,12 +3067,16 @@ class User {
        static function getGroupPermissions( $groups ) {
                global $wgGroupPermissions, $wgRevokePermissions;
                $rights = array();
+               // grant every granted permission first
                foreach( $groups as $group ) {
                        if( isset( $wgGroupPermissions[$group] ) ) {
                                $rights = array_merge( $rights,
                                        // array_filter removes empty items
                                        array_keys( array_filter( $wgGroupPermissions[$group] ) ) );
                        }
+               }
+               // now revoke the revoked permissions
+               foreach( $groups as $group ) {
                        if( isset( $wgRevokePermissions[$group] ) ) {
                                $rights = array_diff( $rights,
                                        array_keys( array_filter( $wgRevokePermissions[$group] ) ) );
index 3147627..f8f0362 100644 (file)
@@ -127,7 +127,8 @@ class SpecialListGroupRights extends SpecialPage {
                global $wgLang;
                $r = array();
                foreach( $permissions as $permission => $granted ) {
-                       if( $granted ) {
+                       //show as granted only if it isn't revoked to prevent duplicate display of permissions
+                       if( $granted && ( !isset( $revoke[$permission] ) || !$revoke[$permission] ) ) {
                                $description = wfMsgExt( 'listgrouprights-right-display', array( 'parseinline' ),
                                        User::getRightDescription( $permission ),
                                        $permission
@@ -137,7 +138,7 @@ class SpecialListGroupRights extends SpecialPage {
                }
                foreach( $revoke as $permission => $revoked ) {
                        if( $revoked ) {
-                               $description = wfMsgExt( 'lisgrouprights-right-revoked', array( 'parseinline' ),
+                               $description = wfMsgExt( 'listgrouprights-right-revoked', array( 'parseinline' ),
                                        User::getRightDescription( $permission ),
                                        $permission
                                );
index 41e7f79..22929b1 100644 (file)
@@ -196,9 +196,6 @@ class UserrightsPage extends SpecialPage {
                $oldGroups = $user->getGroups();
                $newGroups = $oldGroups;
 
-               // Run a hook beforehand to allow extensions to modify the added/removed groups
-               wfRunHooks( 'UserrightsSaveUserGroups', array( &$user, $oldGroups, &$add, &$remove, $reason ) );
-
                // remove then add groups
                if( $remove ) {
                        $newGroups = array_diff($newGroups, $remove);
@@ -486,9 +483,6 @@ class UserrightsPage extends SpecialPage {
                        }
                }
 
-               # Run a hook to allow extensions to modify the column listing
-               wfRunHooks( 'UserrightsGroupCheckboxes', array( $usergroups, &$columns ) );
-
                # Build the HTML table
                $ret .= Xml::openElement( 'table', array( 'border' => '0', 'class' => 'mw-userrights-groups' ) ) .
                        "<tr>\n";
@@ -548,11 +542,7 @@ class UserrightsPage extends SpecialPage {
         */
        function changeableGroups() {
                global $wgUser;
-               $groups = $wgUser->changeableGroups();
-               // Run a hook because we can
-               wfRunHooks( 'UserrightsChangeableGroups', array( $this,
-                       $wgUser, $wgUser->getEffectiveGroups(), &$groups ) );
-               return $groups;
+               return $wgUser->changeableGroups();
        }
 
        /**