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
This commit is contained in:
Brad Jorsch 2014-11-12 14:16:30 -05:00
parent e8ba3bba34
commit 8d9fa0b159

View file

@ -116,18 +116,20 @@ 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 ) {
$apiResult->addValue( array( 'query', 'searchinfo' ),
'totalhits', $totalhits );
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' ),
'suggestion', $matches->getSuggestionQuery() );
}
}
if ( isset( $searchInfo['suggestion'] ) && $matches->hasSuggestion() ) {
$apiResult->addValue( array( 'query', 'searchinfo' ),
'suggestion', $matches->getSuggestionQuery() );
}
// Add the search results to the result
@ -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 ( $resultPageSet === null ) {
$vals = array(
'namespace' => $result->getInterwikiNamespaceText(),
'title' => $title->getText(),
'url' => $title->getFullUrl(),
);
if ( !$fit ) {
// We hit the limit. We can't really provide any meaningful
// pagination info so just bail out
break;
// 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' );