* @ingroup SpecialPage
*/
+use MediaWiki\MediaWikiServices;
+
/**
* Special page to allow managing user group membership
*
*
* @param string|null $par String if any subpage provided, else null
* @throws UserBlockedError|PermissionsError
+ * @suppress PhanUndeclaredMethod
*/
public function execute( $par ) {
$user = $this->getUser();
* (e.g. they don't have the userrights permission), then don't
* allow them to change any user rights.
*/
- if ( !$user->isAllowed( 'userrights' ) ) {
- // @TODO Should the user be blocked from changing user rights if they
- // are partially blocked?
+ if ( !MediaWikiServices::getInstance()
+ ->getPermissionManager()
+ ->userHasRight( $user, 'userrights' )
+ ) {
$block = $user->getBlock();
- if ( $block ) {
- throw new UserBlockedError( $user->getBlock() );
+ if ( $block && $block->isSitewide() ) {
+ throw new UserBlockedError( $block );
}
}
wfDebug( 'newGroups: ' . print_r( $newGroups, true ) . "\n" );
wfDebug( 'oldUGMs: ' . print_r( $oldUGMs, true ) . "\n" );
wfDebug( 'newUGMs: ' . print_r( $newUGMs, true ) . "\n" );
- // Deprecated in favor of UserGroupsChanged hook
- Hooks::run( 'UserRights', [ &$user, $add, $remove ], '1.26' );
// Only add a log entry if something actually changed
if ( $newGroups != $oldGroups || $newUGMs != $oldUGMs ) {
] );
$logid = $logEntry->insert();
if ( count( $tags ) ) {
- $logEntry->setTags( $tags );
+ $logEntry->addTags( $tags );
}
$logEntry->publish( $logid );
}
$this->getOutput()->addWikiTextAsInterface( $status->getWikiText() );
return;
- } else {
- $user = $status->value;
}
+ /** @var User $user */
+ $user = $status->value;
+ '@phan-var User $user';
+
$groups = $user->getGroups();
$groupMemberships = $user->getGroupMemberships();
$this->showEditUserGroupsForm( $user, $groups, $groupMemberships );
$parts = explode( $this->getConfig()->get( 'UserrightsInterwikiDelimiter' ), $username );
if ( count( $parts ) < 2 ) {
$name = trim( $username );
- $wikiId = '';
+ $dbDomain = '';
} else {
- list( $name, $wikiId ) = array_map( 'trim', $parts );
+ list( $name, $dbDomain ) = array_map( 'trim', $parts );
- if ( WikiMap::isCurrentWikiId( $wikiId ) ) {
- $wikiId = '';
+ if ( WikiMap::isCurrentWikiId( $dbDomain ) ) {
+ $dbDomain = '';
} else {
- if ( $writing && !$this->getUser()->isAllowed( 'userrights-interwiki' ) ) {
+ if ( $writing && !MediaWikiServices::getInstance()
+ ->getPermissionManager()
+ ->userHasRight( $this->getUser(), 'userrights-interwiki' )
+ ) {
return Status::newFatal( 'userrights-no-interwiki' );
}
- if ( !UserRightsProxy::validDatabase( $wikiId ) ) {
- return Status::newFatal( 'userrights-nodatabase', $wikiId );
+ if ( !UserRightsProxy::validDatabase( $dbDomain ) ) {
+ return Status::newFatal( 'userrights-nodatabase', $dbDomain );
}
}
}
// We'll do a lookup for the name internally.
$id = intval( substr( $name, 1 ) );
- if ( $wikiId == '' ) {
+ if ( $dbDomain == '' ) {
$name = User::whoIs( $id );
} else {
- $name = UserRightsProxy::whoIs( $wikiId, $id );
+ $name = UserRightsProxy::whoIs( $dbDomain, $id );
}
if ( !$name ) {
}
}
- if ( $wikiId == '' ) {
+ if ( $dbDomain == '' ) {
$user = User::newFromName( $name );
} else {
- $user = UserRightsProxy::newFromName( $wikiId, $name );
+ $user = UserRightsProxy::newFromName( $dbDomain, $name );
}
if ( !$user || $user->isAnon() ) {