Add dieBlocked to APIBase and make use of it
authorAndrew H <crazy4sb@gmail.com>
Mon, 21 Dec 2015 22:59:16 +0000 (22:59 +0000)
committerAndrew H <crazy4sb@gmail.com>
Tue, 22 Dec 2015 17:44:36 +0000 (17:44 +0000)
Moves a frequently used snippet of code into APIBase to throw a
usage exception with block info.

Change-Id: I9bd0b2804e9e246f6d53031b04af48f111c0814c

includes/api/ApiBase.php
includes/api/ApiRevisionDelete.php
includes/api/ApiTag.php
includes/api/ApiUndelete.php

index 8a98197..cb74ae1 100644 (file)
@@ -1461,6 +1461,33 @@ abstract class ApiBase extends ContextSource {
                );
        }
 
+       /**
+        * Throw a UsageException, which will (if uncaught) call the main module's
+        * error handler and die with an error message including block info.
+        *
+        * @since 1.27
+        * @param Block $block The block used to generate the UsageException
+        * @throws UsageException always
+        */
+       public function dieBlocked( Block $block ) {
+               // Die using the appropriate message depending on block type
+               if ( $block->getType() == Block::TYPE_AUTO ) {
+                       $this->dieUsage(
+                               'Your IP address has been blocked automatically, because it was used by a blocked user',
+                               'autoblocked',
+                               0,
+                               array( 'blockinfo' => ApiQueryUserInfo::getBlockInfo( $block ) )
+                       );
+               } else {
+                       $this->dieUsage(
+                               'You have been blocked from editing',
+                               'blocked',
+                               0,
+                               array( 'blockinfo' => ApiQueryUserInfo::getBlockInfo( $block ) )
+                       );
+               }
+       }
+
        /**
         * Get error (as code, string) from a Status object.
         *
index b70b536..4db3ca1 100644 (file)
@@ -36,30 +36,12 @@ class ApiRevisionDelete extends ApiBase {
 
                $params = $this->extractRequestParams();
                $user = $this->getUser();
-
                if ( !$user->isAllowed( RevisionDeleter::getRestriction( $params['type'] ) ) ) {
                        $this->dieUsageMsg( 'badaccess-group0' );
                }
 
                if ( $user->isBlocked() ) {
-                       $block = $user->getBlock();
-
-                       // Die using the appropriate message depending on block type
-                       if ( $block->getType() == TYPE_AUTO ) {
-                               $this->dieUsage(
-                                       'Your IP address has been blocked automatically, because it was used by a blocked user',
-                                       'autoblocked',
-                                       0,
-                                       array( 'blockinfo' => ApiQueryUserInfo::getBlockInfo( $block ) )
-                               );
-                       } else {
-                               $this->dieUsage(
-                                       'You have been blocked from editing',
-                                       'blocked',
-                                       0,
-                                       array( 'blockinfo' => ApiQueryUserInfo::getBlockInfo( $block ) )
-                               );
-                       }
+                       $this->dieBlocked( $user->getBlock() );
                }
 
                if ( !$params['ids'] ) {
index 4157de0..4bf799e 100644 (file)
@@ -40,24 +40,7 @@ class ApiTag extends ApiBase {
                }
 
                if ( $user->isBlocked() ) {
-                       $block = $user->getBlock();
-
-                       // Die using the appropriate message depending on block type
-                       if ( $block->getType() == TYPE_AUTO ) {
-                               $this->dieUsage(
-                                       'Your IP address has been blocked automatically, because it was used by a blocked user',
-                                       'autoblocked',
-                                       0,
-                                       array( 'blockinfo' => ApiQueryUserInfo::getBlockInfo( $block ) )
-                               );
-                       } else {
-                               $this->dieUsage(
-                                       'You have been blocked from editing',
-                                       'blocked',
-                                       0,
-                                       array( 'blockinfo' => ApiQueryUserInfo::getBlockInfo( $block ) )
-                               );
-                       }
+                       $this->dieBlocked( $user->getBlock() );
                }
 
                // validate and process each revid, rcid and logid
index cd50ee6..469fe7f 100644 (file)
@@ -33,18 +33,13 @@ class ApiUndelete extends ApiBase {
                $this->useTransactionalTimeLimit();
 
                $params = $this->extractRequestParams();
-
-               if ( !$this->getUser()->isAllowed( 'undelete' ) ) {
+               $user = $this->getUser();
+               if ( !$user->isAllowed( 'undelete' ) ) {
                        $this->dieUsageMsg( 'permdenied-undelete' );
                }
 
-               if ( $this->getUser()->isBlocked() ) {
-                       $this->dieUsage(
-                               'You have been blocked from editing',
-                               'blocked',
-                               0,
-                               array( 'blockinfo' => ApiQueryUserInfo::getBlockInfo( $this->getUser()->getBlock() ) )
-                       );
+               if ( $user->isBlocked() ) {
+                       $this->dieBlocked( $user->getBlock() );
                }
 
                $titleObj = Title::newFromText( $params['title'] );