Unsuppress another phan issue (part 7)
[lhc/web/wiklou.git] / includes / specials / SpecialUserrights.php
index 1c87f7a..5747f67 100644 (file)
@@ -86,6 +86,7 @@ class UserrightsPage extends SpecialPage {
         *
         * @param string|null $par String if any subpage provided, else null
         * @throws UserBlockedError|PermissionsError
+        * @suppress PhanUndeclaredMethod
         */
        public function execute( $par ) {
                $user = $this->getUser();
@@ -161,11 +162,9 @@ class UserrightsPage extends SpecialPage {
                         * 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?
                                $block = $user->getBlock();
-                               if ( $block ) {
-                                       throw new UserBlockedError( $user->getBlock() );
+                               if ( $block && $block->isSitewide() ) {
+                                       throw new UserBlockedError( $block );
                                }
                        }
 
@@ -466,7 +465,7 @@ class UserrightsPage extends SpecialPage {
                ] );
                $logid = $logEntry->insert();
                if ( count( $tags ) ) {
-                       $logEntry->setTags( $tags );
+                       $logEntry->addTags( $tags );
                }
                $logEntry->publish( $logid );
        }
@@ -481,10 +480,12 @@ class UserrightsPage extends SpecialPage {
                        $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 );
@@ -507,18 +508,18 @@ class UserrightsPage extends SpecialPage {
                $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' ) ) {
                                        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 );
                                }
                        }
                }
@@ -532,10 +533,10 @@ class UserrightsPage extends SpecialPage {
                        // 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 ) {
@@ -549,10 +550,10 @@ class UserrightsPage extends SpecialPage {
                        }
                }
 
-               if ( $wikiId == '' ) {
+               if ( $dbDomain == '' ) {
                        $user = User::newFromName( $name );
                } else {
-                       $user = UserRightsProxy::newFromName( $wikiId, $name );
+                       $user = UserRightsProxy::newFromName( $dbDomain, $name );
                }
 
                if ( !$user || $user->isAnon() ) {