}
/**
- * @addtogroup API
+ * @ingroup API
*/
class ApiOpenSearch extends ApiBase {
}
public function execute() {
+ global $wgEnableOpenSearchSuggest;
$params = $this->extractRequestParams();
$search = $params['search'];
$limit = $params['limit'];
+ $namespaces = $params['namespace'];
+ $suggest = $params['suggest'];
- // Open search results may be stored for a very long time
- $this->getMain()->setCacheMaxAge(1200);
-
- $srchres = PrefixSearch::titleSearch( $search, $limit );
+ // MWSuggest or similar hit
+ if( $suggest && !$wgEnableOpenSearchSuggest )
+ $srchres = array();
+ else {
+ // Open search results may be stored for a very long
+ // time
+ $this->getMain()->setCacheMaxAge(1200);
+ $srchres = PrefixSearch::titleSearch( $search, $limit,
+ $namespaces );
+ }
// Set top level elements
$result = $this->getResult();
$result->addValue(null, 0, $search);
public function getAllowedParams() {
return array (
'search' => null,
- 'limit' => array (
+ 'limit' => array(
ApiBase :: PARAM_DFLT => 10,
ApiBase :: PARAM_TYPE => 'limit',
ApiBase :: PARAM_MIN => 1,
ApiBase :: PARAM_MAX => 100,
ApiBase :: PARAM_MAX2 => 100
- )
+ ),
+ 'namespace' => array(
+ ApiBase :: PARAM_DFLT => NS_MAIN,
+ ApiBase :: PARAM_TYPE => 'namespace',
+ ApiBase :: PARAM_ISMULTI => true
+ ),
+ 'suggest' => false,
);
}
public function getParamDescription() {
return array (
'search' => 'Search string',
- 'limit' => 'Maximum amount of results to return'
+ 'limit' => 'Maximum amount of results to return',
+ 'namespace' => 'Namespaces to search',
+ 'suggest' => 'Do nothing if $wgEnableOpenSearchSuggest is false',
);
}