Merge "Don't list nonexistent groups as addable or removable"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Mon, 15 Sep 2014 03:00:28 +0000 (03:00 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Mon, 15 Sep 2014 03:00:28 +0000 (03:00 +0000)
1  2 
includes/specials/SpecialListgrouprights.php

@@@ -38,6 -38,10 +38,6 @@@ class SpecialListGroupRights extends Sp
         * @param string|null $par
         */
        public function execute( $par ) {
 -              global $wgImplicitGroups;
 -              global $wgGroupPermissions, $wgRevokePermissions, $wgAddGroups, $wgRemoveGroups;
 -              global $wgGroupsAddToSelf, $wgGroupsRemoveFromSelf;
 -
                $this->setHeaders();
                $this->outputHeader();
  
                                '</tr>'
                );
  
 +              $config = $this->getConfig();
 +              $groupPermissions = $config->get( 'GroupPermissions' );
 +              $revokePermissions = $config->get( 'RevokePermissions' );
 +              $addGroups = $config->get( 'AddGroups' );
 +              $removeGroups = $config->get( 'RemoveGroups' );
 +              $groupsAddToSelf = $config->get( 'GroupsAddToSelf' );
 +              $groupsRemoveFromSelf = $config->get( 'GroupsRemoveFromSelf' );
                $allGroups = array_unique( array_merge(
 -                      array_keys( $wgGroupPermissions ),
 -                      array_keys( $wgRevokePermissions ),
 -                      array_keys( $wgAddGroups ),
 -                      array_keys( $wgRemoveGroups ),
 -                      array_keys( $wgGroupsAddToSelf ),
 -                      array_keys( $wgGroupsRemoveFromSelf )
 +                      array_keys( $groupPermissions ),
 +                      array_keys( $revokePermissions ),
 +                      array_keys( $addGroups ),
 +                      array_keys( $removeGroups ),
 +                      array_keys( $groupsAddToSelf ),
 +                      array_keys( $groupsRemoveFromSelf )
                ) );
                asort( $allGroups );
  
                foreach ( $allGroups as $group ) {
 -                      $permissions = isset( $wgGroupPermissions[$group] )
 -                              ? $wgGroupPermissions[$group]
 +                      $permissions = isset( $groupPermissions[$group] )
 +                              ? $groupPermissions[$group]
                                : array();
                        $groupname = ( $group == '*' ) // Replace * with a more descriptive groupname
                                ? 'all'
                                        SpecialPage::getTitleFor( 'Listusers' ),
                                        $this->msg( 'listgrouprights-members' )->escaped()
                                );
 -                      } elseif ( !in_array( $group, $wgImplicitGroups ) ) {
 +                      } elseif ( !in_array( $group, $config->get( 'ImplicitGroups' ) ) ) {
                                $grouplink = '<br />' . Linker::linkKnown(
                                        SpecialPage::getTitleFor( 'Listusers' ),
                                        $this->msg( 'listgrouprights-members' )->escaped(),
                                $grouplink = '';
                        }
  
 -                      $revoke = isset( $wgRevokePermissions[$group] ) ? $wgRevokePermissions[$group] : array();
 -                      $addgroups = isset( $wgAddGroups[$group] ) ? $wgAddGroups[$group] : array();
 -                      $removegroups = isset( $wgRemoveGroups[$group] ) ? $wgRemoveGroups[$group] : array();
 -                      $addgroupsSelf = isset( $wgGroupsAddToSelf[$group] ) ? $wgGroupsAddToSelf[$group] : array();
 -                      $removegroupsSelf = isset( $wgGroupsRemoveFromSelf[$group] )
 -                              ? $wgGroupsRemoveFromSelf[$group]
 +                      $revoke = isset( $revokePermissions[$group] ) ? $revokePermissions[$group] : array();
 +                      $addgroups = isset( $addGroups[$group] ) ? $addGroups[$group] : array();
 +                      $removegroups = isset( $removeGroups[$group] ) ? $removeGroups[$group] : array();
 +                      $addgroupsSelf = isset( $groupsAddToSelf[$group] ) ? $groupsAddToSelf[$group] : array();
 +                      $removegroupsSelf = isset( $groupsRemoveFromSelf[$group] )
 +                              ? $groupsRemoveFromSelf[$group]
                                : array();
  
                        $id = $group == '*' ? false : Sanitizer::escapeId( $group );
        }
  
        private function outputNamespaceProtectionInfo() {
 -              global $wgNamespaceProtection, $wgParser, $wgContLang;
 +              global $wgParser, $wgContLang;
                $out = $this->getOutput();
 +              $namespaceProtection = $this->getConfig()->get( 'NamespaceProtection' );
  
 -              if ( count( $wgNamespaceProtection ) == 0 ) {
 +              if ( count( $namespaceProtection ) == 0 ) {
                        return;
                }
  
                        )
                );
  
 -              ksort( $wgNamespaceProtection );
 -              foreach ( $wgNamespaceProtection as $namespace => $rights ) {
 +              ksort( $namespaceProtection );
 +              foreach ( $namespaceProtection as $namespace => $rights ) {
                        if ( !in_array( $namespace, MWNamespace::getValidNamespaces() ) ) {
                                continue;
                        }
                sort( $r );
  
                $lang = $this->getLanguage();
+               $allGroups = User::getAllGroups();
  
                if ( $add === true ) {
                        $r[] = $this->msg( 'listgrouprights-addgroup-all' )->escaped();
-               } elseif ( is_array( $add ) && count( $add ) ) {
-                       $add = array_values( array_unique( $add ) );
-                       $r[] = $this->msg( 'listgrouprights-addgroup',
-                               $lang->listToText( array_map( array( 'User', 'makeGroupLinkWiki' ), $add ) ),
-                               count( $add )
-                       )->parse();
+               } elseif ( is_array( $add ) ) {
+                       $add = array_intersect( array_values( array_unique( $add ) ), $allGroups );
+                       if ( count( $add ) ) {
+                               $r[] = $this->msg( 'listgrouprights-addgroup',
+                                       $lang->listToText( array_map( array( 'User', 'makeGroupLinkWiki' ), $add ) ),
+                                       count( $add )
+                               )->parse();
+                       }
                }
  
                if ( $remove === true ) {
                        $r[] = $this->msg( 'listgrouprights-removegroup-all' )->escaped();
-               } elseif ( is_array( $remove ) && count( $remove ) ) {
-                       $remove = array_values( array_unique( $remove ) );
-                       $r[] = $this->msg( 'listgrouprights-removegroup',
-                               $lang->listToText( array_map( array( 'User', 'makeGroupLinkWiki' ), $remove ) ),
-                               count( $remove )
-                       )->parse();
+               } elseif ( is_array( $remove ) ) {
+                       $remove = array_intersect( array_values( array_unique( $remove ) ), $allGroups );
+                       if ( count( $remove ) ) {
+                               $r[] = $this->msg( 'listgrouprights-removegroup',
+                                       $lang->listToText( array_map( array( 'User', 'makeGroupLinkWiki' ), $remove ) ),
+                                       count( $remove )
+                               )->parse();
+                       }
                }
  
                if ( $addSelf === true ) {
                        $r[] = $this->msg( 'listgrouprights-addgroup-self-all' )->escaped();
-               } elseif ( is_array( $addSelf ) && count( $addSelf ) ) {
-                       $addSelf = array_values( array_unique( $addSelf ) );
-                       $r[] = $this->msg( 'listgrouprights-addgroup-self',
-                               $lang->listToText( array_map( array( 'User', 'makeGroupLinkWiki' ), $addSelf ) ),
-                               count( $addSelf )
-                       )->parse();
+               } elseif ( is_array( $addSelf ) ) {
+                       $addSelf = array_intersect( array_values( array_unique( $addSelf ) ), $allGroups );
+                       if ( count( $addSelf ) ) {
+                               $r[] = $this->msg( 'listgrouprights-addgroup-self',
+                                       $lang->listToText( array_map( array( 'User', 'makeGroupLinkWiki' ), $addSelf ) ),
+                                       count( $addSelf )
+                               )->parse();
+                       }
                }
  
                if ( $removeSelf === true ) {
                        $r[] = $this->msg( 'listgrouprights-removegroup-self-all' )->parse();
-               } elseif ( is_array( $removeSelf ) && count( $removeSelf ) ) {
-                       $removeSelf = array_values( array_unique( $removeSelf ) );
-                       $r[] = $this->msg( 'listgrouprights-removegroup-self',
-                               $lang->listToText( array_map( array( 'User', 'makeGroupLinkWiki' ), $removeSelf ) ),
-                               count( $removeSelf )
-                       )->parse();
+               } elseif ( is_array( $removeSelf ) ) {
+                       $removeSelf = array_intersect( array_values( array_unique( $removeSelf ) ), $allGroups );
+                       if ( count( $removeSelf ) ) {
+                               $r[] = $this->msg( 'listgrouprights-removegroup-self',
+                                       $lang->listToText( array_map( array( 'User', 'makeGroupLinkWiki' ), $removeSelf ) ),
+                                       count( $removeSelf )
+                               )->parse();
+                       }
                }
  
                if ( empty( $r ) ) {