From e76859d792911ee02ad41b7869452b138aace7c2 Mon Sep 17 00:00:00 2001 From: Sam Reed Date: Wed, 5 Jan 2011 21:28:18 +0000 Subject: [PATCH] * (bug 26483) add a iwtitles param to prop=iwlinks --- RELEASE-NOTES | 1 + includes/api/ApiQueryIWLinks.php | 29 +++++++++++++++++++++++++---- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/RELEASE-NOTES b/RELEASE-NOTES index d6cdc757d6..546622082e 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -78,6 +78,7 @@ it from source control: http://www.mediawiki.org/wiki/Download_from_SVN * (bug 26482) add a imimages param to prop=images * (bug 26498) allow LinksUpdate with API * (bug 26485) add a elextlinks param to prop=extlinks +* (bug 26483) add a iwtitles param to prop=iwlinks === Languages updated in 1.18 === diff --git a/includes/api/ApiQueryIWLinks.php b/includes/api/ApiQueryIWLinks.php index 5a5b452d2c..6244793201 100644 --- a/includes/api/ApiQueryIWLinks.php +++ b/includes/api/ApiQueryIWLinks.php @@ -47,6 +47,11 @@ class ApiQueryIWLinks extends ApiQueryBase { } $params = $this->extractRequestParams(); + + if ( isset( $params['title'] ) && !isset( $params['prefix'] ) ) { + $this->dieUsageMsg( array( 'missingparam', 'prefix' ) ); + } + $this->addFields( array( 'iwl_from', 'iwl_prefix', @@ -74,12 +79,23 @@ class ApiQueryIWLinks extends ApiQueryBase { ); } - // Don't order by iwl_from if it's constant in the WHERE clause - if ( count( $this->getPageSet()->getGoodTitles() ) == 1 ) { - $this->addOption( 'ORDER BY', 'iwl_prefix' ); + if ( isset( $params['prefix'] ) ) { + $this->addWhereFld( 'iwl_prefix', $params['prefix'] ); + if ( isset( $params['title'] ) ) { + $this->addWhereFld( 'iwl_title', $params['title'] ); + $this->addOption( 'ORDER BY', 'iwl_from' ); + } else { + $this->addOption( 'ORDER BY', 'iwl_title, iwl_from' ); + } } else { - $this->addOption( 'ORDER BY', 'iwl_from, iwl_prefix' ); + // Don't order by iwl_from if it's constant in the WHERE clause + if ( count( $this->getPageSet()->getGoodTitles() ) == 1 ) { + $this->addOption( 'ORDER BY', 'iwl_prefix' ); + } else { + $this->addOption( 'ORDER BY', 'iwl_from, iwl_prefix' ); + } } + $this->addOption( 'LIMIT', $params['limit'] + 1 ); $res = $this->select( __METHOD__ ); @@ -124,6 +140,8 @@ class ApiQueryIWLinks extends ApiQueryBase { ApiBase::PARAM_MAX2 => ApiBase::LIMIT_BIG2 ), 'continue' => null, + 'prefix' => null, + 'title' => null, ); } @@ -132,6 +150,8 @@ class ApiQueryIWLinks extends ApiQueryBase { 'url' => 'Whether to get the full URL', 'limit' => 'How many interwiki links to return', 'continue' => 'When more results are available, use this to continue', + 'prefix' => 'Prefix for the interwiki', + 'title' => "Interwiki link to search for. Must be used with {$this->getModulePrefix()}prefix", ); } @@ -141,6 +161,7 @@ class ApiQueryIWLinks extends ApiQueryBase { public function getPossibleErrors() { return array_merge( parent::getPossibleErrors(), array( + array( 'missingparam', 'prefix' ), array( 'code' => '_badcontinue', 'info' => 'Invalid continue param. You should pass the original value returned by the previous query' ), ) ); } -- 2.20.1