From f83fb12d1d4c20c996222c300c58ff5d549cbcf5 Mon Sep 17 00:00:00 2001 From: Matthew Britton Date: Wed, 31 Mar 2010 14:08:55 +0000 Subject: [PATCH] (bug 22339) "Go" result should be available through the API --- includes/AutoLoader.php | 1 + includes/api/ApiGo.php | 101 +++++++++++++++++++++++++++++++++++++++ includes/api/ApiMain.php | 1 + 3 files changed, 103 insertions(+) create mode 100644 includes/api/ApiGo.php diff --git a/includes/AutoLoader.php b/includes/AutoLoader.php index f32db5cac9..54180d3252 100644 --- a/includes/AutoLoader.php +++ b/includes/AutoLoader.php @@ -279,6 +279,7 @@ $wgAutoloadLocalClasses = array( 'ApiFormatWddx' => 'includes/api/ApiFormatWddx.php', 'ApiFormatXml' => 'includes/api/ApiFormatXml.php', 'ApiFormatYaml' => 'includes/api/ApiFormatYaml.php', + 'ApiGo' => 'includes/api/ApiGo.php', 'ApiHelp' => 'includes/api/ApiHelp.php', 'ApiImport' => 'includes/api/ApiImport.php', 'ApiImportReporter' => 'includes/api/ApiImport.php', diff --git a/includes/api/ApiGo.php b/includes/api/ApiGo.php new file mode 100644 index 0000000000..36dd05cfd5 --- /dev/null +++ b/includes/api/ApiGo.php @@ -0,0 +1,101 @@ +.@btinternet.com + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * http://www.gnu.org/copyleft/gpl.html + */ + +if ( !defined( 'MEDIAWIKI' ) ) { + // Eclipse helper - will be ignored in production + require_once( "ApiBase.php" ); +} + +/** +* API module to determine the result of a "Go" search +* + * @ingroup API + */ +class ApiGo extends ApiBase { + + /** + * Std ctor. + */ + public function __construct( $main, $action ) { + parent::__construct( $main, $action ); + } + + public function execute() { + $params = $this->extractRequestParams(); + $text = $params['text']; + + if ( is_null( $text ) ) { + $this->dieUsageMsg( array( 'missingparam', 'text' ) ); + } + + // Strip underscores + $text = str_replace( '_', ' ', $text ); + + $nearMatch = SearchEngine::getNearMatch( $text ); + + $this->getResult()->addValue( null, $this->getModuleName(), array( 'text' => $text, 'result' => $nearMatch ) ); + } + + public function mustBePosted() { + return false; + } + + public function isWriteMode() { + return false; + } + + public function getAllowedParams() { + return array( + 'text' => null, + ); + } + + public function getParamDescription() { + return array( + 'text' => 'Text to try a "Go" match for' + ); + } + + public function getDescription() { + return array( + 'Determine the title one will be taken to by a "Go" search, if any' + ); + } + + public function getPossibleErrors() { + return array_merge( parent::getPossibleErrors(), array( + array( 'missingparam', 'text' ) + ) ); + } + + protected function getExamples() { + return array( + 'api.php?action=go&text=Foo' + ); + } + + public function getVersion() { + return __CLASS__ . ': $Id: $'; + } +} diff --git a/includes/api/ApiMain.php b/includes/api/ApiMain.php index 19db4cbb17..35ddeca5ca 100644 --- a/includes/api/ApiMain.php +++ b/includes/api/ApiMain.php @@ -63,6 +63,7 @@ class ApiMain extends ApiBase { 'parse' => 'ApiParse', 'opensearch' => 'ApiOpenSearch', 'feedwatchlist' => 'ApiFeedWatchlist', + 'go' => 'ApiGo', 'help' => 'ApiHelp', 'paraminfo' => 'ApiParamInfo', -- 2.20.1