<?php
/**
- *
- *
- * Created on July 30, 2007
- *
* Copyright © 2007 Yuri Astrakhan "<Firstname><Lastname>@gmail.com"
*
* This program is free software; you can redistribute it and/or modify
// Create search engine instance and set options
$search = $this->buildSearchEngine( $params );
+ if ( isset( $params['sort'] ) ) {
+ $search->setSort( $params['sort'] );
+ }
$search->setFeatureData( 'rewrite', (bool)$params['enablerewrites'] );
$search->setFeatureData( 'interwiki', (bool)$interwiki );
$terms = $wgContLang->convertForSearchResult( $matches->termMatches() );
$titles = [];
$count = 0;
- $result = $matches->next();
$limit = $params['limit'];
- while ( $result ) {
- if ( ++$count > $limit ) {
- // We've reached the one extra which shows that there are
- // additional items to be had. Stop here...
- $this->setContinueEnumParameter( 'offset', $params['offset'] + $params['limit'] );
- break;
- }
+ if ( $matches->hasMoreResults() ) {
+ $this->setContinueEnumParameter( 'offset', $params['offset'] + $params['limit'] );
+ }
+ foreach ( $matches as $result ) {
+ $count++;
// Silently skip broken and missing titles
if ( $result->isBrokenTitle() || $result->isMissingRevision() ) {
- $result = $matches->next();
continue;
}
} else {
$titles[] = $result->getTitle();
}
-
- $result = $matches->next();
}
// Here we assume interwiki results do not count with
// Include number of results if requested
$totalhits += $interwikiMatches->getTotalHits();
- $result = $interwikiMatches->next();
- while ( $result ) {
+ foreach ( $interwikiMatches as $result ) {
$title = $result->getTitle();
$vals = $this->getSearchResultData( $result, $prop, $terms );
// pagination info so just bail out
break;
}
-
- $result = $interwikiMatches->next();
}
}
if ( $totalhits !== null ) {
'enablerewrites' => false,
];
+ // If we have more than one engine the list of available sorts is
+ // difficult to represent. For now don't expose it.
+ $alternatives = MediaWiki\MediaWikiServices::getInstance()
+ ->getSearchEngineConfig()
+ ->getSearchTypes();
+ if ( count( $alternatives ) == 1 ) {
+ $this->allowedParams['sort'] = [
+ ApiBase::PARAM_DFLT => 'relevance',
+ ApiBase::PARAM_TYPE => MediaWiki\MediaWikiServices::getInstance()
+ ->newSearchEngine()
+ ->getValidSorts(),
+ ];
+ }
+
return $this->allowedParams;
}