(bug 22339) "Go" result should be available through the API
authorMatthew Britton <gurch@users.mediawiki.org>
Wed, 31 Mar 2010 14:08:55 +0000 (14:08 +0000)
committerMatthew Britton <gurch@users.mediawiki.org>
Wed, 31 Mar 2010 14:08:55 +0000 (14:08 +0000)
includes/AutoLoader.php
includes/api/ApiGo.php [new file with mode: 0644]
includes/api/ApiMain.php

index f32db5c..54180d3 100644 (file)
@@ -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 (file)
index 0000000..36dd05c
--- /dev/null
@@ -0,0 +1,101 @@
+<?php
+
+/**
+ * Created on Mar 30, 2010
+ * API for MediaWiki 1.8+
+ *
+ * Copyright © 2010 Matthew Britton <Firstname>.<Lastname>@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: $';
+       }
+}
index 19db4cb..35ddeca 100644 (file)
@@ -63,6 +63,7 @@ class ApiMain extends ApiBase {
                'parse' => 'ApiParse',
                'opensearch' => 'ApiOpenSearch',
                'feedwatchlist' => 'ApiFeedWatchlist',
+               'go' => 'ApiGo',
                'help' => 'ApiHelp',
                'paraminfo' => 'ApiParamInfo',