]> scripts.mit.edu Git - autoinstalls/mediawiki.git/blob - includes/api/ApiOpenSearch.php
MediaWiki 1.15.3
[autoinstalls/mediawiki.git] / includes / api / ApiOpenSearch.php
1 <?php
2
3 /*
4  * Created on Oct 13, 2006
5  *
6  * API for MediaWiki 1.8+
7  *
8  * Copyright (C) 2006 Yuri Astrakhan <Firstname><Lastname>@gmail.com
9  *
10  * This program is free software; you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation; either version 2 of the License, or
13  * (at your option) any later version.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  * GNU General Public License for more details.
19  *
20  * You should have received a copy of the GNU General Public License along
21  * with this program; if not, write to the Free Software Foundation, Inc.,
22  * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
23  * http://www.gnu.org/copyleft/gpl.html
24  */
25
26 if (!defined('MEDIAWIKI')) {
27         // Eclipse helper - will be ignored in production
28         require_once ("ApiBase.php");
29 }
30
31 /**
32  * @ingroup API
33  */
34 class ApiOpenSearch extends ApiBase {
35
36         public function __construct($main, $action) {
37                 parent :: __construct($main, $action);
38         }
39
40         public function getCustomPrinter() {
41                 return $this->getMain()->createPrinterByName('json');
42         }
43
44         public function execute() {
45                 global $wgEnableMWSuggest;
46                 $params = $this->extractRequestParams();
47                 $search = $params['search'];
48                 $limit = $params['limit'];
49                 $namespaces = $params['namespace'];
50                 $suggest = $params['suggest'];
51                 # $wgEnableMWSuggest hit incoming when $wgEnableMWSuggest is disabled
52                 if( $suggest && !$wgEnableMWSuggest ) return;
53                 
54                 // Open search results may be stored for a very long time
55                 $this->getMain()->setCacheMaxAge(1200);
56
57                 $srchres = PrefixSearch::titleSearch( $search, $limit, $namespaces );
58
59                 // Set top level elements
60                 $result = $this->getResult();
61                 $result->addValue(null, 0, $search);
62                 $result->addValue(null, 1, $srchres);
63         }
64
65         public function getAllowedParams() {
66                 return array (
67                         'search' => null,
68                         'limit' => array(
69                                 ApiBase :: PARAM_DFLT => 10,
70                                 ApiBase :: PARAM_TYPE => 'limit',
71                                 ApiBase :: PARAM_MIN => 1,
72                                 ApiBase :: PARAM_MAX => 100,
73                                 ApiBase :: PARAM_MAX2 => 100
74                         ),
75                         'namespace' => array(
76                                 ApiBase :: PARAM_DFLT => NS_MAIN,
77                                 ApiBase :: PARAM_TYPE => 'namespace',
78                                 ApiBase :: PARAM_ISMULTI => true
79                         ),
80                         'suggest' => false,
81                 );
82         }
83
84         public function getParamDescription() {
85                 return array (
86                         'search' => 'Search string',
87                         'limit' => 'Maximum amount of results to return',
88                         'namespace' => 'Namespaces to search',
89                         'suggest' => 'Do nothing if $wgEnableMWSuggest is false',
90                 );
91         }
92
93         public function getDescription() {
94                 return 'This module implements OpenSearch protocol';
95         }
96
97         protected function getExamples() {
98                 return array (
99                         'api.php?action=opensearch&search=Te'
100                 );
101         }
102
103         public function getVersion() {
104                 return __CLASS__ . ': $Id: ApiOpenSearch.php 47188 2009-02-12 17:27:05Z catrope $';
105         }
106 }