Reduce duplication in some Special:ListGroupRights code
authorAlex Monk <krenair@gmail.com>
Mon, 22 Sep 2014 19:04:57 +0000 (20:04 +0100)
committerUmherirrender <umherirrender_de.wp@web.de>
Tue, 23 Sep 2014 19:27:21 +0000 (19:27 +0000)
Change-Id: I05bf9f3eef5f71d2d3789c8a6a1aff09ac46c14e

includes/specials/SpecialListgrouprights.php

index 5bae28f..8b9a0ee 100644 (file)
@@ -235,20 +235,18 @@ class SpecialListGroupRights extends SpecialPage {
                foreach ( $permissions as $permission => $granted ) {
                        //show as granted only if it isn't revoked to prevent duplicate display of permissions
                        if ( $granted && ( !isset( $revoke[$permission] ) || !$revoke[$permission] ) ) {
-                               $description = $this->msg( 'listgrouprights-right-display',
+                               $r[] = $this->msg( 'listgrouprights-right-display',
                                        User::getRightDescription( $permission ),
                                        '<span class="mw-listgrouprights-right-name">' . $permission . '</span>'
                                )->parse();
-                               $r[] = $description;
                        }
                }
                foreach ( $revoke as $permission => $revoked ) {
                        if ( $revoked ) {
-                               $description = $this->msg( 'listgrouprights-right-revoked',
+                               $r[] = $this->msg( 'listgrouprights-right-revoked',
                                        User::getRightDescription( $permission ),
                                        '<span class="mw-listgrouprights-right-name">' . $permission . '</span>'
                                )->parse();
-                               $r[] = $description;
                        }
                }
 
@@ -257,51 +255,28 @@ class SpecialListGroupRights extends SpecialPage {
                $lang = $this->getLanguage();
                $allGroups = User::getAllGroups();
 
-               if ( $add === true ) {
-                       $r[] = $this->msg( 'listgrouprights-addgroup-all' )->escaped();
-               } 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 ) ) {
-                       $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 ) ) {
-                       $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();
-                       }
-               }
+               $changeGroups = array(
+                       'addgroup' => $add,
+                       'removegroup' => $remove,
+                       'addgroup-self' => $addSelf,
+                       'removegroup-self' => $removeSelf
+               );
 
-               if ( $removeSelf === true ) {
-                       $r[] = $this->msg( 'listgrouprights-removegroup-self-all' )->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();
+               foreach ( $changeGroups as $messageKey => $changeGroup ) {
+                       if ( $changeGroup === true ) {
+                               // For grep: listgrouprights-addgroup-all, listgrouprights-removegroup-all,
+                               // listgrouprights-addgroup-self-all, listgrouprights-removegroup-self-all
+                               $r[] = $this->msg( 'listgrouprights-' . $messageKey . '-all' )->escaped();
+                       } elseif ( is_array( $changeGroup ) ) {
+                               $changeGroup = array_intersect( array_values( array_unique( $changeGroup ) ), $allGroups );
+                               if ( count( $changeGroup ) ) {
+                                       // For grep: listgrouprights-addgroup, listgrouprights-removegroup,
+                                       // listgrouprights-addgroup-self, listgrouprights-removegroup-self
+                                       $r[] = $this->msg( 'listgrouprights-' . $messageKey,
+                                               $lang->listToText( array_map( array( 'User', 'makeGroupLinkWiki' ), $changeGroup ) ),
+                                               count( $changeGroup )
+                                       )->parse();
+                               }
                        }
                }