Fixes for fixme comments on my r59655
[lhc/web/wiklou.git] / includes / api / ApiOpenSearch.php
index ecad643..2ed6194 100644 (file)
@@ -29,7 +29,7 @@ if (!defined('MEDIAWIKI')) {
 }
 
 /**
- * @addtogroup API
+ * @ingroup API
  */
 class ApiOpenSearch extends ApiBase {
 
@@ -42,15 +42,24 @@ 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);
@@ -60,20 +69,28 @@ class ApiOpenSearch extends ApiBase {
        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',
                );
        }