* Remove the two hooks introduced in r52082

* 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.
This commit is contained in:
Ryan Schmidt 2009-06-18 14:47:18 +00:00
parent 634ec8e93e
commit 2da101ba2c
5 changed files with 9 additions and 47 deletions

View 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

View 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

View 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] ) ) );

View 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
);

View 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();
}
/**