Log entries can be rendered with parentheses in HTML
[lhc/web/wiklou.git] / includes / specials / SpecialUserrights.php
index a8ff32f..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 );