API: Throw error when interwiki is given for various title param
authorumherirrender <umherirrender_de.wp@web.de>
Fri, 1 Mar 2013 15:01:26 +0000 (16:01 +0100)
committerumherirrender <umherirrender_de.wp@web.de>
Fri, 1 Mar 2013 15:01:26 +0000 (16:01 +0100)
See bug 44341 for action=parse, but the problem with interwiki
processing can also be happen in other modules.

This gives clearer error message on some modules
For example action=move:
Bad title "*title*"
instead of:
Unknown error: "immobile-target-namespace-iw"

Change-Id: I86524533dfd778a169b39968999918a1f531efeb

includes/api/ApiBase.php
includes/api/ApiComparePages.php
includes/api/ApiEditPage.php
includes/api/ApiExpandTemplates.php
includes/api/ApiMove.php
includes/api/ApiParse.php
includes/api/ApiQueryAllMessages.php
includes/api/ApiRollback.php
includes/api/ApiUndelete.php
includes/api/ApiWatch.php

index aff7a2e..d90ea26 100644 (file)
@@ -756,7 +756,7 @@ abstract class ApiBase extends ContextSource {
                $pageObj = null;
                if ( isset( $params['title'] ) ) {
                        $titleObj = Title::newFromText( $params['title'] );
-                       if ( !$titleObj ) {
+                       if ( !$titleObj || $titleObj->isExternal() ) {
                                $this->dieUsageMsg( array( 'invalidtitle', $params['title'] ) );
                        }
                        if ( !$titleObj->canExist() ) {
index 6b894c1..79ffcb0 100644 (file)
@@ -85,7 +85,7 @@ class ApiComparePages extends ApiBase {
                        return $revision;
                } elseif( $titleText ) {
                        $title = Title::newFromText( $titleText );
-                       if( !$title ) {
+                       if( !$title || $title->isExternal() ) {
                                $this->dieUsageMsg( array( 'invalidtitle', $titleText ) );
                        }
                        return $title->getLatestRevID();
index b642c6d..1b9df68 100644 (file)
@@ -46,10 +46,6 @@ class ApiEditPage extends ApiBase {
 
                $pageObj = $this->getTitleOrPageId( $params );
                $titleObj = $pageObj->getTitle();
-               if ( $titleObj->isExternal() ) {
-                       $this->dieUsageMsg( array( 'invalidtitle', $params['title'] ) );
-               }
-
                $apiResult = $this->getResult();
 
                if ( $params['redirect'] ) {
index 826171b..f5898fb 100644 (file)
@@ -42,7 +42,7 @@ class ApiExpandTemplates extends ApiBase {
 
                // Create title for parser
                $title_obj = Title::newFromText( $params['title'] );
-               if ( !$title_obj ) {
+               if ( !$title_obj || $title_obj->isExternal() ) {
                        $this->dieUsageMsg( array( 'invalidtitle', $params['title'] ) );
                }
 
index 3f54fee..ba1d6c9 100644 (file)
@@ -38,7 +38,7 @@ class ApiMove extends ApiBase {
 
                if ( isset( $params['from'] ) ) {
                        $fromTitle = Title::newFromText( $params['from'] );
-                       if ( !$fromTitle ) {
+                       if ( !$fromTitle || $fromTitle->isExternal() ) {
                                $this->dieUsageMsg( array( 'invalidtitle', $params['from'] ) );
                        }
                } elseif ( isset( $params['fromid'] ) ) {
@@ -54,7 +54,7 @@ class ApiMove extends ApiBase {
                $fromTalk = $fromTitle->getTalkPage();
 
                $toTitle = Title::newFromText( $params['to'] );
-               if ( !$toTitle ) {
+               if ( !$toTitle || $toTitle->isExternal() ) {
                        $this->dieUsageMsg( array( 'invalidtitle', $params['to'] ) );
                }
                $toTalk = $toTitle->getTalkPage();
index b81e5c7..ec8bfee 100644 (file)
@@ -161,7 +161,7 @@ class ApiParse extends ApiBase {
                        }
                } else { // Not $oldid, $pageid, $page. Hence based on $text
                        $titleObj = Title::newFromText( $title );
-                       if ( !$titleObj ) {
+                       if ( !$titleObj || $titleObj->isExternal() ) {
                                $this->dieUsageMsg( array( 'invalidtitle', $title ) );
                        }
                        if ( !$titleObj->canExist() ) {
index 6b6b1a3..b0ecca8 100644 (file)
@@ -48,7 +48,7 @@ class ApiQueryAllMessages extends ApiQueryBase {
                if ( $params['enableparser'] ) {
                        if ( !is_null( $params['title'] ) ) {
                                $title = Title::newFromText( $params['title'] );
-                               if ( !$title ) {
+                               if ( !$title || $title->isExternal() ) {
                                        $this->dieUsageMsg( array( 'invalidtitle', $params['title'] ) );
                                }
                        } else {
index 6e55a5e..b9873f4 100644 (file)
@@ -181,7 +181,7 @@ class ApiRollback extends ApiBase {
 
                $this->mTitleObj = Title::newFromText( $params['title'] );
 
-               if ( !$this->mTitleObj ) {
+               if ( !$this->mTitleObj || $this->mTitleObj->isExternal() ) {
                        $this->dieUsageMsg( array( 'invalidtitle', $params['title'] ) );
                }
                if ( !$this->mTitleObj->exists() ) {
index f53f065..4bbe568 100644 (file)
@@ -41,7 +41,7 @@ class ApiUndelete extends ApiBase {
                }
 
                $titleObj = Title::newFromText( $params['title'] );
-               if ( !$titleObj ) {
+               if ( !$titleObj || $titleObj->isExternal() ) {
                        $this->dieUsageMsg( array( 'invalidtitle', $params['title'] ) );
                }
 
index 2454e33..7106b06 100644 (file)
@@ -40,7 +40,7 @@ class ApiWatch extends ApiBase {
                $params = $this->extractRequestParams();
                $title = Title::newFromText( $params['title'] );
 
-               if ( !$title || $title->getNamespace() < 0 ) {
+               if ( !$title || $title->isExternal() || !$title->canExist() ) {
                        $this->dieUsageMsg( array( 'invalidtitle', $params['title'] ) );
                }