API: Add ApiDisabled and ApiQueryDisabled classes so individual modules can be disabl...
authorRoan Kattouw <catrope@users.mediawiki.org>
Thu, 25 Sep 2008 20:50:50 +0000 (20:50 +0000)
committerRoan Kattouw <catrope@users.mediawiki.org>
Thu, 25 Sep 2008 20:50:50 +0000 (20:50 +0000)
RELEASE-NOTES
includes/AutoLoader.php
includes/api/ApiDisabled.php [new file with mode: 0644]
includes/api/ApiQueryDisabled.php [new file with mode: 0644]

index fe5f83a..828dc5b 100644 (file)
@@ -277,6 +277,8 @@ The following extensions are migrated into MediaWiki 1.14:
   rather than causing an exception
 * Added uiprop=preferencestoken to meta=userinfo
 * (bug 15609) Add inprop=url and inprop=readable to prop=info
+* Add ApiDisabled and ApiQueryDisabled classes so individual modules can
+  be disabled in LocalSettings.php
 
 === Languages updated in 1.14 ===
 
index e7a8dcf..e721073 100644 (file)
@@ -217,6 +217,7 @@ $wgAutoloadLocalClasses = array(
        'ApiBase' => 'includes/api/ApiBase.php',
        'ApiBlock' => 'includes/api/ApiBlock.php',
        'ApiDelete' => 'includes/api/ApiDelete.php',
+       'ApiDisabled' => 'includes/api/ApiDisabled.php',
        'ApiEditPage' => 'includes/api/ApiEditPage.php',
        'ApiEmailUser' => 'includes/api/ApiEmailUser.php',
        'ApiExpandTemplates' => 'includes/api/ApiExpandTemplates.php',
@@ -257,6 +258,7 @@ $wgAutoloadLocalClasses = array(
        'ApiQueryCategoryMembers' => 'includes/api/ApiQueryCategoryMembers.php',
        'ApiQueryContributions' => 'includes/api/ApiQueryUserContributions.php',
        'ApiQueryDeletedrevs' => 'includes/api/ApiQueryDeletedrevs.php',
+       'ApiQueryDisabled' => 'includes/api/ApiQueryDisabled.php',
        'ApiQueryExtLinksUsage' => 'includes/api/ApiQueryExtLinksUsage.php',
        'ApiQueryExternalLinks' => 'includes/api/ApiQueryExternalLinks.php',
        'ApiQueryGeneratorBase' => 'includes/api/ApiQueryBase.php',
diff --git a/includes/api/ApiDisabled.php b/includes/api/ApiDisabled.php
new file mode 100644 (file)
index 0000000..3136384
--- /dev/null
@@ -0,0 +1,72 @@
+<?php
+
+/*
+ * Created on Sep 25, 2008
+ * API for MediaWiki 1.8+
+ *
+ * Copyright (C) 2008 Roan Kattouw <Firstname>.<Lastname>@home.nl
+ *
+ * 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 that dies with an error immediately.
+ *
+ * Use this to disable core modules with
+ * $wgAPIModules['modulename'] = 'ApiDisabled';
+ *
+ * To disable submodules of action=query, use ApiQueryDisabled instead
+ *
+ * @ingroup API
+ */
+class ApiDisabled extends ApiBase {
+
+       public function __construct($main, $action) {
+               parent :: __construct($main, $action);
+       }
+
+       public function execute() {
+               $this->dieUsage("The ``{$this->getModuleName()}'' module has been disabled.", 'moduledisabled');
+       }
+
+       public function getAllowedParams() {
+               return array ();
+       }
+
+       public function getParamDescription() {
+               return array ();
+       }
+
+       public function getDescription() {
+               return array(
+                       'This module has been disabled.'
+               );
+       }
+
+       protected function getExamples() {
+               return array ();
+       }
+
+       public function getVersion() {
+               return __CLASS__ . ': $Id$';
+       }
+}
diff --git a/includes/api/ApiQueryDisabled.php b/includes/api/ApiQueryDisabled.php
new file mode 100644 (file)
index 0000000..6a9439f
--- /dev/null
@@ -0,0 +1,72 @@
+<?php
+
+/*
+ * Created on Sep 25, 2008
+ * API for MediaWiki 1.8+
+ *
+ * Copyright (C) 2008 Roan Kattouw <Firstname>.<Lastname>@home.nl
+ *
+ * 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 that does nothing 
+ *
+ * Use this to disable core modules with e.g.
+ * $wgAPIPropModules['modulename'] = 'ApiQueryDisabled';
+ *
+ * To disable top-level modules, use ApiDisabled instead
+ *
+ * @ingroup API
+ */
+class ApiQueryDisabled extends ApiQueryBase {
+
+       public function __construct($main, $action) {
+               parent :: __construct($main, $action);
+       }
+
+       public function execute() {
+               $this->setWarning("The ``{$this->getModuleName()}'' module has been disabled.");
+       }
+
+       public function getAllowedParams() {
+               return array ();
+       }
+
+       public function getParamDescription() {
+               return array ();
+       }
+
+       public function getDescription() {
+               return array(
+                       'This module has been disabled.'
+               );
+       }
+
+       protected function getExamples() {
+               return array ();
+       }
+
+       public function getVersion() {
+               return __CLASS__ . ': $Id$';
+       }
+}