User rights API: Abstract out some stuff about core's form into separate methods
authorAlex Monk <krenair@wikimedia.org>
Wed, 1 Oct 2014 12:06:10 +0000 (13:06 +0100)
committerAlex Monk <krenair@wikimedia.org>
Wed, 1 Oct 2014 12:11:50 +0000 (13:11 +0100)
To we can make a CentralAuth API module for global user rights.

Bug: 71495
Change-Id: I139c43e5eaa1fb63b75baddbafb7caa3c964d6b5

includes/api/ApiUserrights.php

index c3ceb34..66af4c5 100644 (file)
@@ -32,12 +32,28 @@ class ApiUserrights extends ApiBase {
 
        private $mUser = null;
 
+       /**
+        * Get a UserrightsPage object, or subclass.
+        * @return UserrightsPage
+        */
+       protected function getUserRightsPage() {
+               return new UserrightsPage;
+       }
+
+       /**
+        * Get all available groups.
+        * @return array
+        */
+       protected function getAllGroups() {
+               return User::getAllGroups();
+       }
+
        public function execute() {
                $params = $this->extractRequestParams();
 
                $user = $this->getUrUser( $params );
 
-               $form = new UserrightsPage;
+               $form = $this->getUserRightsPage();
                $form->setContext( $this->getContext() );
                $r['user'] = $user->getName();
                $r['userid'] = $user->getId();
@@ -65,7 +81,7 @@ class ApiUserrights extends ApiBase {
 
                $user = isset( $params['user'] ) ? $params['user'] : '#' . $params['userid'];
 
-               $form = new UserrightsPage;
+               $form = $this->getUserRightsPage();
                $form->setContext( $this->getContext() );
                $status = $form->fetchUser( $user );
                if ( !$status->isOK() ) {
@@ -94,11 +110,11 @@ class ApiUserrights extends ApiBase {
                                ApiBase::PARAM_TYPE => 'integer',
                        ),
                        'add' => array(
-                               ApiBase::PARAM_TYPE => User::getAllGroups(),
+                               ApiBase::PARAM_TYPE => $this->getAllGroups(),
                                ApiBase::PARAM_ISMULTI => true
                        ),
                        'remove' => array(
-                               ApiBase::PARAM_TYPE => User::getAllGroups(),
+                               ApiBase::PARAM_TYPE => $this->getAllGroups(),
                                ApiBase::PARAM_ISMULTI => true
                        ),
                        'reason' => array(