]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - scripts/checkschema.php
Merge remote-tracking branch 'upstream/master' into social-master
[quix0rs-gnu-social.git] / scripts / checkschema.php
old mode 100644 (file)
new mode 100755 (executable)
index bf52abe..6a4c8c9
@@ -2,7 +2,7 @@
 <?php
 /*
  * StatusNet - a distributed open-source microblogging tool
- * Copyright (C) 2008, 2009, StatusNet, Inc.
+ * Copyright (C) 2008-2011 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
 
 define('INSTALLDIR', realpath(dirname(__FILE__) . '/..'));
 
+$shortoptions = 'x::';
+$longoptions = array('extensions=');
+
 $helptext = <<<END_OF_CHECKSCHEMA_HELP
+php checkschema.php [options]
 Gives plugins a chance to update the database schema.
 
+    -x --extensions=     Comma-separated list of plugins to load before checking
+
+
 END_OF_CHECKSCHEMA_HELP;
 
-require_once INSTALLDIR.'/scripts/commandline.inc';
+require_once INSTALLDIR.'/scripts/commandline.inc.php';
+
+function tableDefs()
+{
+       $schema = array();
+       require INSTALLDIR.'/db/core.php';
+       return $schema;
+}
+
+$schema = Schema::get();
+$schemaUpdater = new SchemaUpdater($schema);
+foreach (tableDefs() as $table => $def) {
+       $schemaUpdater->register($table, $def);
+}
+$schemaUpdater->checkSchema();
+
+if (have_option('x', 'extensions')) {
+    $ext = trim(get_option_value('x', 'extensions'));
+    $exts = explode(',', $ext);
+    foreach ($exts as $plugin) {
+        try {
+            addPlugin($plugin);
+        } catch (Exception $e) {
+            print $e->getMessage()."\n";
+            exit(1);
+        }
+    }
+}
 
 Event::handle('CheckSchema');