Merge "Selenium: replace UserLoginPage with BlankPage where possible"
[lhc/web/wiklou.git] / includes / specials / SpecialUserrights.php
index d564e5b..a8ff32f 100644 (file)
@@ -61,15 +61,23 @@ class UserrightsPage extends SpecialPage {
                $isself = $this->getUser()->equals( $targetUser );
 
                $available = $this->changeableGroups();
-               if ( $targetUser->getId() == 0 ) {
+               if ( $targetUser->getId() === 0 ) {
                        return false;
                }
 
-               return !empty( $available['add'] )
-                       || !empty( $available['remove'] )
-                       || ( ( $isself || !$checkIfSelf ) &&
-                               ( !empty( $available['add-self'] )
-                                       || !empty( $available['remove-self'] ) ) );
+               if ( $available['add'] || $available['remove'] ) {
+                       // can change some rights for any user
+                       return true;
+               }
+
+               if ( ( $available['add-self'] || $available['remove-self'] )
+                       && ( $isself || !$checkIfSelf )
+               ) {
+                       // can change some rights for self
+                       return true;
+               }
+
+               return false;
        }
 
        /**
@@ -148,10 +156,10 @@ class UserrightsPage extends SpecialPage {
                        $user->matchEditToken( $request->getVal( 'wpEditToken' ), $this->mTarget )
                ) {
                        /*
-                       * If the user is blocked and they only have "partial" access
-                       * (e.g. they don't have the userrights permission), then don't
-                       * allow them to change any user rights.
-                       */
+                        * If the user is blocked and they only have "partial" access
+                        * (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?
@@ -397,8 +405,6 @@ class UserrightsPage extends SpecialPage {
                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 ) {
@@ -501,18 +507,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 );
                                }
                        }
                }
@@ -526,10 +532,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 ) {
@@ -543,10 +549,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() ) {
@@ -993,12 +999,12 @@ class UserrightsPage extends SpecialPage {
        /**
         * Returns $this->getUser()->changeableGroups()
         *
-        * @return array Array(
-        *   'add' => array( addablegroups ),
-        *   'remove' => array( removablegroups ),
-        *   'add-self' => array( addablegroups to self ),
-        *   'remove-self' => array( removable groups from self )
-        *  )
+        * @return array [
+        *   'add' => [ addablegroups ],
+        *   'remove' => [ removablegroups ],
+        *   'add-self' => [ addablegroups to self ],
+        *   'remove-self' => [ removable groups from self ]
+        *  ]
         */
        function changeableGroups() {
                return $this->getUser()->changeableGroups();