From 8d9fa0b159f99b423f54b400f98da5abbb56cace Mon Sep 17 00:00:00 2001 From: Brad Jorsch Date: Wed, 12 Nov 2014 14:16:30 -0500 Subject: [PATCH] API: Don't add searchinfo or interwiki info from generator=search Generators should generally just generate titles without adding additional stuff to the result. OTOH, there's no reason a generator can't generate interwiki titles. Bug: 73321 Change-Id: I55d1d35c9d8bedbc68a201fab9d455bc011cc4d8 --- includes/api/ApiQuerySearch.php | 65 ++++++++++++++++++--------------- 1 file changed, 36 insertions(+), 29 deletions(-) diff --git a/includes/api/ApiQuerySearch.php b/includes/api/ApiQuerySearch.php index cc9f9aa394..0f33d07f2e 100644 --- a/includes/api/ApiQuerySearch.php +++ b/includes/api/ApiQuerySearch.php @@ -116,19 +116,21 @@ class ApiQuerySearch extends ApiQueryGeneratorBase { $this->dieUsage( $matches->getWikiText(), 'search-error' ); } - $apiResult = $this->getResult(); - // Add search meta data to result - if ( isset( $searchInfo['totalhits'] ) ) { - $totalhits = $matches->getTotalHits(); - if ( $totalhits !== null ) { + if ( $resultPageSet === null ) { + $apiResult = $this->getResult(); + // Add search meta data to result + if ( isset( $searchInfo['totalhits'] ) ) { + $totalhits = $matches->getTotalHits(); + if ( $totalhits !== null ) { + $apiResult->addValue( array( 'query', 'searchinfo' ), + 'totalhits', $totalhits ); + } + } + if ( isset( $searchInfo['suggestion'] ) && $matches->hasSuggestion() ) { $apiResult->addValue( array( 'query', 'searchinfo' ), - 'totalhits', $totalhits ); + 'suggestion', $matches->getSuggestionQuery() ); } } - if ( isset( $searchInfo['suggestion'] ) && $matches->hasSuggestion() ) { - $apiResult->addValue( array( 'query', 'searchinfo' ), - 'suggestion', $matches->getSuggestionQuery() ); - } // Add the search results to the result $terms = $wgContLang->convertForSearchResult( $matches->termMatches() ); @@ -151,7 +153,7 @@ class ApiQuerySearch extends ApiQueryGeneratorBase { } $title = $result->getTitle(); - if ( is_null( $resultPageSet ) ) { + if ( $resultPageSet === null ) { $vals = array(); ApiQueryBase::addTitleInfo( $vals, $title ); @@ -207,7 +209,7 @@ class ApiQuerySearch extends ApiQueryGeneratorBase { $hasInterwikiResults = true; // Include number of results if requested - if ( isset( $searchInfo['totalhits'] ) ) { + if ( $resultPageSet === null && isset( $searchInfo['totalhits'] ) ) { $totalhits = $matches->getTotalHits(); if ( $totalhits !== null ) { $apiResult->addValue( array( 'query', 'interwikisearchinfo' ), @@ -218,30 +220,35 @@ class ApiQuerySearch extends ApiQueryGeneratorBase { $result = $matches->next(); while ( $result ) { $title = $result->getTitle(); - $vals = array( - 'namespace' => $result->getInterwikiNamespaceText(), - 'title' => $title->getText(), - 'url' => $title->getFullUrl(), - ); - - // Add item to results and see whether it fits - $fit = $apiResult->addValue( - array( 'query', 'interwiki' . $this->getModuleName(), $result->getInterwikiPrefix() ), - null, - $vals - ); - if ( !$fit ) { - // We hit the limit. We can't really provide any meaningful - // pagination info so just bail out - break; + if ( $resultPageSet === null ) { + $vals = array( + 'namespace' => $result->getInterwikiNamespaceText(), + 'title' => $title->getText(), + 'url' => $title->getFullUrl(), + ); + + // Add item to results and see whether it fits + $fit = $apiResult->addValue( + array( 'query', 'interwiki' . $this->getModuleName(), $result->getInterwikiPrefix() ), + null, + $vals + ); + + if ( !$fit ) { + // We hit the limit. We can't really provide any meaningful + // pagination info so just bail out + break; + } + } else { + $titles[] = $title; } $result = $matches->next(); } } - if ( is_null( $resultPageSet ) ) { + if ( $resultPageSet === null ) { $apiResult->setIndexedTagName_internal( array( 'query', $this->getModuleName() ), 'p' ); -- 2.20.1