]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
check the schema
authorEvan Prodromou <evan@status.net>
Thu, 1 Oct 2009 19:11:12 +0000 (15:11 -0400)
committerEvan Prodromou <evan@status.net>
Thu, 1 Oct 2009 19:11:12 +0000 (15:11 -0400)
EVENTS.txt
README
lib/common.php
lib/default.php
scripts/checkschema.php [new file with mode: 0644]

index e0d4bbd06107d591dd2d66c286ba73ba6f8d9395..fbb2f36a7b81ff2987213cdaecca53749bae31a4 100644 (file)
@@ -283,3 +283,5 @@ StartShowHeadElements: Right after the <head> tag
 
 EndShowHeadElements: Right before the </head> tag; put <script>s here if you need them in <head>
 - $action: the current action
+
+CheckSchema: chance to check the schema
diff --git a/README b/README
index f3b2528b85ab6bd1932ce997badd5266efb65f73..486656a3bcf178b65f366ca6c34ce70f3f51510f 100644 (file)
--- a/README
+++ b/README
@@ -1037,6 +1037,14 @@ utf8: whether to talk to the database in UTF-8 mode. This is the default
       with new installations, but older sites may want to turn it off
       until they get their databases fixed up. See "UTF-8 database"
       above for details.
+schemacheck: when to let plugins check the database schema to add
+             tables or update them. Values can be 'runtime' (default)
+             or 'script'. 'runtime' can be costly (plugins check the
+             schema on every hit, adding potentially several db
+             queries, some quite long), but not everyone knows how to
+             run a script. If you can, set this to 'script' and run
+             scripts/checkschema.php whenever you install or upgrade a
+             plugin.
 
 syslog
 ------
index 58e208a4e92b98620fb540c7ffbafb67904d21d3..ce33c871bfb15b83d1c0e4b207952c8a7b61cb54 100644 (file)
@@ -232,6 +232,12 @@ require_once INSTALLDIR.'/lib/serverexception.php';
 
 Config::loadSettings();
 
+// XXX: if plugins should check the schema at runtime, do that here.
+
+if ($config['db']['schemacheck'] == 'runtime') {
+    Event::handle('CheckSchema');
+}
+
 // XXX: other formats here
 
 define('NICKNAME_FMT', VALIDATE_NUM.VALIDATE_ALPHA_LOWER);
index 7af94d2ad6081c11683f1eceb2206f741214c9f6..f9670cb7f96523c1122ff6b7cbc970e6eb50f67c 100644 (file)
@@ -64,7 +64,8 @@ $default =
               'utf8' => true,
               'db_driver' => 'DB', # XXX: JanRain libs only work with DB
               'quote_identifiers' => false,
-              'type' => 'mysql' ),
+              'type' => 'mysql',
+              'schemacheck' => 'runtime'), // 'runtime' or 'script'
         'syslog' =>
         array('appname' => 'statusnet', # for syslog
               'priority' => 'debug', # XXX: currently ignored
diff --git a/scripts/checkschema.php b/scripts/checkschema.php
new file mode 100644 (file)
index 0000000..bf52abe
--- /dev/null
@@ -0,0 +1,30 @@
+#!/usr/bin/env php
+<?php
+/*
+ * StatusNet - a distributed open-source microblogging tool
+ * Copyright (C) 2008, 2009, StatusNet, Inc.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 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 Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+define('INSTALLDIR', realpath(dirname(__FILE__) . '/..'));
+
+$helptext = <<<END_OF_CHECKSCHEMA_HELP
+Gives plugins a chance to update the database schema.
+
+END_OF_CHECKSCHEMA_HELP;
+
+require_once INSTALLDIR.'/scripts/commandline.inc';
+
+Event::handle('CheckSchema');