[ Index ] |
PHP Cross Reference of MediaWiki-1.24.0 |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * Created on Oct 13, 2006 4 * 5 * Copyright © 2006 Yuri Astrakhan "<Firstname><Lastname>@gmail.com" 6 * 7 * This program is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by 9 * the Free Software Foundation; either version 2 of the License, or 10 * (at your option) any later version. 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License along 18 * with this program; if not, write to the Free Software Foundation, Inc., 19 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 20 * http://www.gnu.org/copyleft/gpl.html 21 * 22 * @file 23 */ 24 25 /** 26 * @ingroup API 27 */ 28 class ApiOpenSearch extends ApiBase { 29 30 /** 31 * Override built-in handling of format parameter. 32 * Only JSON is supported. 33 * 34 * @return ApiFormatBase 35 */ 36 public function getCustomPrinter() { 37 $params = $this->extractRequestParams(); 38 $format = $params['format']; 39 $allowed = array( 'json', 'jsonfm' ); 40 if ( in_array( $format, $allowed ) ) { 41 return $this->getMain()->createPrinterByName( $format ); 42 } 43 44 return $this->getMain()->createPrinterByName( $allowed[0] ); 45 } 46 47 public function execute() { 48 $params = $this->extractRequestParams(); 49 $search = $params['search']; 50 $limit = $params['limit']; 51 $namespaces = $params['namespace']; 52 $suggest = $params['suggest']; 53 54 // Some script that was loaded regardless of wgEnableOpenSearchSuggest, likely cached. 55 if ( $suggest && !$this->getConfig()->get( 'EnableOpenSearchSuggest' ) ) { 56 $searches = array(); 57 } else { 58 // Open search results may be stored for a very long time 59 $this->getMain()->setCacheMaxAge( $this->getConfig()->get( 'SearchSuggestCacheExpiry' ) ); 60 $this->getMain()->setCacheMode( 'public' ); 61 62 $searcher = new StringPrefixSearch; 63 $searches = $searcher->searchWithVariants( $search, $limit, $namespaces ); 64 } 65 // Set top level elements 66 $result = $this->getResult(); 67 $result->addValue( null, 0, $search ); 68 $result->addValue( null, 1, $searches ); 69 } 70 71 public function getAllowedParams() { 72 return array( 73 'search' => null, 74 'limit' => array( 75 ApiBase::PARAM_DFLT => $this->getConfig()->get( 'OpenSearchDefaultLimit' ), 76 ApiBase::PARAM_TYPE => 'limit', 77 ApiBase::PARAM_MIN => 1, 78 ApiBase::PARAM_MAX => 100, 79 ApiBase::PARAM_MAX2 => 100 80 ), 81 'namespace' => array( 82 ApiBase::PARAM_DFLT => NS_MAIN, 83 ApiBase::PARAM_TYPE => 'namespace', 84 ApiBase::PARAM_ISMULTI => true 85 ), 86 'suggest' => false, 87 'format' => array( 88 ApiBase::PARAM_DFLT => 'json', 89 ApiBase::PARAM_TYPE => array( 'json', 'jsonfm' ), 90 ) 91 ); 92 } 93 94 public function getParamDescription() { 95 return array( 96 'search' => 'Search string', 97 'limit' => 'Maximum amount of results to return', 98 'namespace' => 'Namespaces to search', 99 'suggest' => 'Do nothing if $wgEnableOpenSearchSuggest is false', 100 'format' => 'The format of the output', 101 ); 102 } 103 104 public function getDescription() { 105 return 'Search the wiki using the OpenSearch protocol.'; 106 } 107 108 public function getExamples() { 109 return array( 110 'api.php?action=opensearch&search=Te' 111 ); 112 } 113 114 public function getHelpUrls() { 115 return 'https://www.mediawiki.org/wiki/API:Opensearch'; 116 } 117 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 14:03:12 2014 | Cross-referenced by PHPXref 0.7.1 |