From cc183225599962543f8005b9eb95198e286c137c Mon Sep 17 00:00:00 2001 From: Reedy Date: Mon, 22 Oct 2012 23:51:26 +0100 Subject: [PATCH] Back out config table and related code Change-Id: I4fa180d45984a4ec2b2c7b1149015c6dad14c5f0 --- includes/AutoLoader.php | 5 - includes/conf/Conf.php | 202 ------------------ includes/conf/DatabaseConf.php | 57 ----- includes/conf/DefaultSettings.php | 28 --- includes/installer/Ibm_db2Updater.php | 3 - includes/installer/MysqlUpdater.php | 1 - includes/installer/OracleUpdater.php | 1 - includes/installer/PostgresUpdater.php | 1 - includes/installer/SqliteUpdater.php | 1 - maintenance/archives/patch-config.sql | 9 - maintenance/ibm_db2/tables.sql | 10 - maintenance/oracle/archives/patch-config.sql | 8 - maintenance/oracle/tables.sql | 7 - .../postgres/archives/patch-config.sql | 5 - maintenance/postgres/tables.sql | 6 - maintenance/tables.sql | 10 - 16 files changed, 354 deletions(-) delete mode 100644 includes/conf/Conf.php delete mode 100644 includes/conf/DatabaseConf.php delete mode 100644 includes/conf/DefaultSettings.php delete mode 100644 maintenance/archives/patch-config.sql delete mode 100644 maintenance/oracle/archives/patch-config.sql delete mode 100644 maintenance/postgres/archives/patch-config.sql diff --git a/includes/AutoLoader.php b/includes/AutoLoader.php index c97c95a965..0cd81c33fd 100644 --- a/includes/AutoLoader.php +++ b/includes/AutoLoader.php @@ -446,11 +446,6 @@ $wgAutoloadLocalClasses = array( 'TitleDependency' => 'includes/cache/CacheDependency.php', 'TitleListDependency' => 'includes/cache/CacheDependency.php', - # includes/conf - 'Conf' => 'includes/conf/Conf.php', - 'DatabaseConf' => 'includes/conf/DatabaseConf.php', - 'DefaultSettings' => 'includes/conf/DefaultSettings.php', - # includes/context 'ContextSource' => 'includes/context/ContextSource.php', 'DerivativeContext' => 'includes/context/DerivativeContext.php', diff --git a/includes/conf/Conf.php b/includes/conf/Conf.php deleted file mode 100644 index 22c621fe5a..0000000000 --- a/includes/conf/Conf.php +++ /dev/null @@ -1,202 +0,0 @@ - - * http://www.mediawiki.org/ - * - * 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., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * http://www.gnu.org/copyleft/gpl.html - * - * @file - * @defgroup Config Config - */ -abstract class Conf { - /** - * A special value to return when default config items do not exist. Use - * this to differentiate from 'null' which may be a valid config value. - * - * Please don't ever make this a default (or accepted) value for your - * configuration. It's liable to Break Something. - */ - const NO_SUCH_DEFAULT_CONFIG = 'mw-no-such-default-config'; - - /** - * The Wiki ID (usually $wgDBname) - * @var String - */ - private $wikiId; - - /** - * Singleton - * @var Conf - */ - private static $__instance; - - /** - * Stores of the core defaults, extension defaults and wiki overrides - * - * @var array - */ - protected $defaults, $extensionDefaults, $values = array(); - - /** - * Constructor. Children should call this if implementing. - * @param $confConfig Array of config vars - */ - protected function __construct( $confConfig ) { - $this->wikiId = $confConfig['wikiId']; - $this->defaults = (array)(new DefaultSettings); - // @todo implement this: - // $this->initExtensionDefaults(); - $this->initChangedSettings(); - if( isset( $confConfig['exposeGlobals'] ) ) { - $this->exposeGlobals(); - } - } - - /** - * Expose all config variables as globals for back-compat. Ewwww. - */ - private function exposeGlobals() { - $allVars = $this->defaults + $this->extensionDefaults + $this->values; - foreach( $allVars as $name => $value ) { - $var = 'wg' . ucfirst( $name ); - $GLOBALS[$var] = $value; - } - } - - /** - * Load customized settings from whatever the data store is - */ - abstract protected function initChangedSettings(); - - /** - * Apply a setting to the backend store - * @param $name String Name of the setting - * @param $value mixed Value to store - */ - abstract protected function writeSetting( $name, $value ); - - /** - * Initialize a new child class based on a configuration array - * @param $conf Array of configuration settings, see $wgConfiguration - * for details - * @throws MWException - * @return Conf - */ - private static function newFromSettings( $conf ) { - $class = ucfirst( $conf['type'] ) . 'Conf'; - if( !class_exists( $class ) ) { - throw new MWException( '$wgConfiguration misconfigured with invalid "type"' ); - } - return new $class( $conf ); - } - - /** - * Get the singleton if we don't want a specific wiki - * @param bool|string $wiki An id for a remote wiki - * @throws MWException - * @return Conf child - */ - public static function load( $wiki = false ) { - throw new MWException( "Not working yet, don't attempt to use this" ); - if( !self::$__instance ) { - /**global $wgConfiguration; - self::$__instance = self::newFromSettings( $wgConfiguration );*/ - } - if( $wiki && $wiki != self::$__instance->getWikiId() ) { - // Load configuration for a different wiki, not sure how - // we're gonna do this yet - return null; - } - return self::$__instance; - } - - /** - * Get a property from the configuration database, falling back - * to DefaultSettings if undefined - * @param $name String Name of setting to retrieve. - * @param $wiki String An id for a remote wiki - * @return mixed - */ - public static function get( $name, $wiki = false ) { - return self::load( $wiki )->retrieveSetting( $name ); - } - - /** - * Actually get the setting, checking overrides, extensions, then core. - * - * @param $name String Name of setting to get - * @return mixed - */ - public function retrieveSetting( $name ) { - // isset() is ok here, because the default is to return null anyway. - if( isset( $this->values[$name] ) ) { - return $this->values[$name]; - } elseif( isset( $this->extensionDefaults[$name] ) ) { - return $this->extensionDefaults[$name]; - } elseif( isset( $this->defaults[$name] ) ) { - return $this->defaults[$name]; - } else { - wfDebug( __METHOD__ . " called for unknown configuration item '$name'\n" ); - return null; - } - } - - /** - * Apply a setting to the configuration object. - * @param $name String Name of the config item - * @param $value mixed Any value to use for the key - * @param $write bool Whether to write to the static copy (db, file, etc) - */ - public function applySetting( $name, $value, $write = false ) { - $this->values[$name] = $value; - if( $write && ( $value !== $this->getDefaultSetting( $name ) ) ) { - $this->writeSetting( $name, $value ); - } - } - - /** - * Get the default for a given setting name. Check core and then extensions. - * Will return NO_SUCH_DEFAULT_CONFIG if the config item does not exist. - * - * @param $name String Name of setting - * @return mixed - */ - public function getDefaultSetting( $name ) { - // Use array_key_exists() here, to make sure we return a default - // that's really set to null. - if( array_key_exists( $name, $this->defaults ) ) { - return $this->defaults[$name]; - } elseif( array_key_exists( $name, $this->extensionDefaults ) ) { - return $this->extensionDefaults[$name]; - } else { - wfDebug( __METHOD__ . " called for unknown configuration item '$name'\n" ); - return self::NO_SUCH_DEFAULT_CONFIG; - } - } - - /** - * What is the wiki ID for this site? - * @return String - */ - public function getWikiId() { - return $this->wikiId; - } -} diff --git a/includes/conf/DatabaseConf.php b/includes/conf/DatabaseConf.php deleted file mode 100644 index d8f644deec..0000000000 --- a/includes/conf/DatabaseConf.php +++ /dev/null @@ -1,57 +0,0 @@ - - * http://www.mediawiki.org/ - * - * 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., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * http://www.gnu.org/copyleft/gpl.html - * - * @file - * @ingroup Config - */ -class DatabaseConf extends Conf { - /** - * @see Conf::initChangedSettings() - */ - protected function initChangedSettings() { - $res = wfGetDB( DB_MASTER )->select( 'config', '*', array(), __METHOD__ ); - foreach( $res as $row ) { - $this->values[$row->cf_name] = unserialize( $row->cf_value ); - } - } - - /** - * @see Conf::writeSetting() - * - * @param $name - * @param $value - * - * @return bool - */ - protected function writeSetting( $name, $value ) { - $dbw = wfGetDB( DB_MASTER ); - $value = serialize( $value ); - if( $dbw->selectRow( 'config', 'cf_name', array( 'cf_name' => $name ), __METHOD__ ) ) { - $dbw->update( 'config', array( 'cf_value' => $value ), - array( 'cf_name' => $name ), __METHOD__ ); - } else { - $dbw->insert( 'config', - array( 'cf_name' => $name, 'cf_value' => $value ), __METHOD__ ); - } - return (bool)$dbw->affectedRows(); - } -} diff --git a/includes/conf/DefaultSettings.php b/includes/conf/DefaultSettings.php deleted file mode 100644 index 4601f048a4..0000000000 --- a/includes/conf/DefaultSettings.php +++ /dev/null @@ -1,28 +0,0 @@ - - * http://www.mediawiki.org/ - * - * 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., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * http://www.gnu.org/copyleft/gpl.html - * - * @file - * @ingroup Config - */ -final class DefaultSettings { - public $mySetting = 'defaultValue'; -} diff --git a/includes/installer/Ibm_db2Updater.php b/includes/installer/Ibm_db2Updater.php index 805ff0ff66..33bf69c69e 100644 --- a/includes/installer/Ibm_db2Updater.php +++ b/includes/installer/Ibm_db2Updater.php @@ -85,9 +85,6 @@ class Ibm_db2Updater extends DatabaseUpdater { array( 'addField', 'revision', 'rev_sha1', 'patch-rev_sha1.sql' ), array( 'addField', 'archive', 'ar_sha1', 'patch-ar_sha1.sql' ), - // 1.20 - array( 'addTable', 'config', 'patch-config.sql' ), - // 1.21 array( 'addField', 'revision', 'rev_content_format', 'patch-revision-rev_content_format.sql' ), array( 'addField', 'revision', 'rev_content_model', 'patch-revision-rev_content_model.sql' ), diff --git a/includes/installer/MysqlUpdater.php b/includes/installer/MysqlUpdater.php index 82de913618..3f1dad9f2e 100644 --- a/includes/installer/MysqlUpdater.php +++ b/includes/installer/MysqlUpdater.php @@ -209,7 +209,6 @@ class MysqlUpdater extends DatabaseUpdater { array( 'modifyField', 'user_former_groups', 'ufg_group', 'patch-ufg_group-length-increase.sql' ), // 1.20 - array( 'addTable', 'config', 'patch-config.sql' ), array( 'addIndex', 'revision', 'page_user_timestamp', 'patch-revision-user-page-index.sql' ), array( 'addField', 'ipblocks', 'ipb_parent_block_id', 'patch-ipb-parent-block-id.sql' ), array( 'addIndex', 'ipblocks', 'ipb_parent_block_id', 'patch-ipb-parent-block-id-index.sql' ), diff --git a/includes/installer/OracleUpdater.php b/includes/installer/OracleUpdater.php index f946d59a96..5523470e1f 100644 --- a/includes/installer/OracleUpdater.php +++ b/includes/installer/OracleUpdater.php @@ -67,7 +67,6 @@ class OracleUpdater extends DatabaseUpdater { array( 'modifyField', 'user_former_groups', 'ufg_group', 'patch-ufg_group-length-increase.sql' ), //1.20 - array( 'addTable', 'config', 'patch-config.sql' ), array( 'addIndex', 'ipblocks', 'i05', 'patch-ipblocks_i05_index.sql' ), array( 'addIndex', 'revision', 'i05', 'patch-revision_i05_index.sql' ), array( 'dropField', 'category', 'cat_hidden', 'patch-cat_hidden.sql' ), diff --git a/includes/installer/PostgresUpdater.php b/includes/installer/PostgresUpdater.php index 457268c0e4..5a13d4211d 100644 --- a/includes/installer/PostgresUpdater.php +++ b/includes/installer/PostgresUpdater.php @@ -89,7 +89,6 @@ class PostgresUpdater extends DatabaseUpdater { array( 'addTable', 'module_deps', 'patch-module_deps.sql' ), array( 'addTable', 'uploadstash', 'patch-uploadstash.sql' ), array( 'addTable', 'user_former_groups','patch-user_former_groups.sql' ), - array( 'addTable', 'config', 'patch-config.sql' ), array( 'addTable', 'external_user', 'patch-external_user.sql' ), # Needed before new field diff --git a/includes/installer/SqliteUpdater.php b/includes/installer/SqliteUpdater.php index c3f7a81674..2fa3f31c76 100644 --- a/includes/installer/SqliteUpdater.php +++ b/includes/installer/SqliteUpdater.php @@ -88,7 +88,6 @@ class SqliteUpdater extends DatabaseUpdater { array( 'modifyField', 'user_former_groups', 'ufg_group', 'patch-ug_group-length-increase.sql' ), // 1.20 - array( 'addTable', 'config', 'patch-config.sql' ), array( 'addIndex', 'revision', 'page_user_timestamp', 'patch-revision-user-page-index.sql' ), array( 'addField', 'ipblocks', 'ipb_parent_block_id', 'patch-ipb-parent-block-id.sql' ), array( 'addIndex', 'ipblocks', 'ipb_parent_block_id', 'patch-ipb-parent-block-id-index.sql' ), diff --git a/maintenance/archives/patch-config.sql b/maintenance/archives/patch-config.sql deleted file mode 100644 index 791015e92b..0000000000 --- a/maintenance/archives/patch-config.sql +++ /dev/null @@ -1,9 +0,0 @@ --- Table for holding configuration changes -CREATE TABLE /*_*/config ( - -- Config var name - cf_name varbinary(255) NOT NULL PRIMARY KEY, - -- Config var value - cf_value blob NOT NULL -) /*$wgDBTableOptions*/; --- Should cover *most* configuration - strings, ints, bools, etc. -CREATE INDEX /*i*/cf_name_value ON /*_*/config (cf_name,cf_value(255)); diff --git a/maintenance/ibm_db2/tables.sql b/maintenance/ibm_db2/tables.sql index 6fd7a831e2..2edb7f0178 100644 --- a/maintenance/ibm_db2/tables.sql +++ b/maintenance/ibm_db2/tables.sql @@ -927,13 +927,3 @@ CREATE TABLE user_former_groups ( ); CREATE UNIQUE INDEX ufg_user_group ON user_former_groups (ufg_user, ufg_group); - - - --- Table for holding configuration changes -CREATE TABLE config ( - cf_name VARCHAR(255) NOT NULL - PRIMARY KEY, - cf_value CLOB(64K) INLINE LENGTH 4096 NOT NULL -); - diff --git a/maintenance/oracle/archives/patch-config.sql b/maintenance/oracle/archives/patch-config.sql deleted file mode 100644 index 66714a73ea..0000000000 --- a/maintenance/oracle/archives/patch-config.sql +++ /dev/null @@ -1,8 +0,0 @@ -define mw_prefix='{$wgDBprefix}'; - -CREATE TABLE &mw_prefix.config ( - cf_name VARCHAR2(255) NOT NULL, - cf_value blob NOT NULL -); -ALTER TABLE &mw_prefix.config ADD CONSTRAINT &mw_prefix.config_pk PRIMARY KEY (cf_name); - diff --git a/maintenance/oracle/tables.sql b/maintenance/oracle/tables.sql index d0712e3de3..f28c61fe94 100644 --- a/maintenance/oracle/tables.sql +++ b/maintenance/oracle/tables.sql @@ -670,13 +670,6 @@ CREATE TABLE &mw_prefix.module_deps ( ); CREATE UNIQUE INDEX &mw_prefix.module_deps_u01 ON &mw_prefix.module_deps (md_module, md_skin); -CREATE TABLE &mw_prefix.config ( - cf_name VARCHAR2(255) NOT NULL, - cf_value blob NOT NULL -); -ALTER TABLE &mw_prefix.config ADD CONSTRAINT &mw_prefix.config_pk PRIMARY KEY (cf_name); --- leaving index out for now ... - -- do not prefix this table as it breaks parserTests CREATE TABLE wiki_field_info_full ( table_name VARCHAR2(35) NOT NULL, diff --git a/maintenance/postgres/archives/patch-config.sql b/maintenance/postgres/archives/patch-config.sql deleted file mode 100644 index 2f39ff050a..0000000000 --- a/maintenance/postgres/archives/patch-config.sql +++ /dev/null @@ -1,5 +0,0 @@ -CREATE TABLE config ( - cf_name TEXT NOT NULL PRIMARY KEY, - cf_value TEXT NOT NULL -); -CREATE INDEX cf_name_value ON config (cf_name, cf_value); \ No newline at end of file diff --git a/maintenance/postgres/tables.sql b/maintenance/postgres/tables.sql index 27759d5d1b..845193da30 100644 --- a/maintenance/postgres/tables.sql +++ b/maintenance/postgres/tables.sql @@ -697,9 +697,3 @@ CREATE TABLE module_deps ( md_deps TEXT NOT NULL ); CREATE UNIQUE INDEX md_module_skin ON module_deps (md_module, md_skin); - -CREATE TABLE config ( - cf_name TEXT NOT NULL PRIMARY KEY, - cf_value TEXT NOT NULL -); -CREATE INDEX cf_name_value ON config (cf_name, cf_value); diff --git a/maintenance/tables.sql b/maintenance/tables.sql index a4cdefd18f..bdcd66eda5 100644 --- a/maintenance/tables.sql +++ b/maintenance/tables.sql @@ -1508,16 +1508,6 @@ CREATE TABLE /*_*/module_deps ( ) /*$wgDBTableOptions*/; CREATE UNIQUE INDEX /*i*/md_module_skin ON /*_*/module_deps (md_module, md_skin); --- Table for holding configuration changes -CREATE TABLE /*_*/config ( - -- Config var name - cf_name varbinary(255) NOT NULL PRIMARY KEY, - -- Config var value - cf_value blob NOT NULL -) /*$wgDBTableOptions*/; --- Should cover *most* configuration - strings, ints, bools, etc. -CREATE INDEX /*i*/cf_name_value ON /*_*/config (cf_name,cf_value(255)); - -- Holds all the sites known to the wiki. CREATE TABLE /*_*/sites ( -- Numeric id of the site -- 2.20.1