Revision: 1072
http://mrbs.svn.sourceforge.net/mrbs/?rev=1072&view=rev
Author: cimorrison
Date: 2009-03-25 13:30:48 +0000 (Wed, 25 Mar 2009)
Log Message:
-----------
Extended the database upgrade scheme to allow sites to add their own local
upgrades. Local upgrades are kept in upgrade/local and are executed after any
necessary global MRBS upgrades have been completed.
Modified Paths:
--------------
mrbs/trunk/web/dbsys.inc
mrbs/trunk/web/lang.en
mrbs/trunk/web/upgrade.inc
Added Paths:
-----------
mrbs/trunk/web/upgrade/local/
mrbs/trunk/web/upgrade/local/1/
mrbs/trunk/web/upgrade/local/1/mysql.sql
mrbs/trunk/web/upgrade/local/1/pgsql.sql
Modified: mrbs/trunk/web/dbsys.inc
===================================================================
--- mrbs/trunk/web/dbsys.inc 2009-03-25 09:33:26 UTC (rev 1071)
+++ mrbs/trunk/web/dbsys.inc 2009-03-25 13:30:48 UTC (rev 1072)
@@ -16,6 +16,7 @@
$db_schema_version = 3;
+$local_db_schema_version = 1;
// Include the abstraction configured to be used for the default MRBS
@@ -571,15 +572,24 @@
// Default version is 0, before we had schema versions
$current_db_schema_version = 0;
+$current_local_db_schema_version = 0;
if (sql_table_exists($tbl_variables))
{
$current_db_schema_version = sql_query1("SELECT variable_content ".
"FROM $tbl_variables ".
"WHERE variable_name =
'db_version'");
+ $current_local_db_schema_version = sql_query1("SELECT variable_content ".
+ "FROM $tbl_variables ".
+ "WHERE variable_name =
'local_db_version'");
+ if ($current_local_db_schema_version < 0)
+ {
+ $current_local_db_schema_version = 0;
+ }
}
-if ($current_db_schema_version < $db_schema_version)
+if (($current_db_schema_version < $db_schema_version) ||
+ ($current_local_db_schema_version < $local_db_schema_version))
{
// Upgrade needed
@@ -592,7 +602,16 @@
if (isset($user) && (authGetUserLevel($user) >= 2))
{
require_once "upgrade.inc";
- upgrade_database($current_db_schema_version, $db_schema_version);
+ // Do any MRBS upgrades first
+ if ($current_db_schema_version < $db_schema_version)
+ {
+ upgrade_database(FALSE, $current_db_schema_version, $db_schema_version);
+ }
+ // Then any local upgrades
+ if ($current_local_db_schema_version < $local_db_schema_version)
+ {
+ upgrade_database(TRUE, $current_local_db_schema_version,
$local_db_schema_version);
+ }
print get_vocab("upgrade_completed").
". <a href=\"./\">".
Modified: mrbs/trunk/web/lang.en
===================================================================
--- mrbs/trunk/web/lang.en 2009-03-25 09:33:26 UTC (rev 1071)
+++ mrbs/trunk/web/lang.en 2009-03-25 13:30:48 UTC (rev 1072)
@@ -133,9 +133,10 @@
$vocab["logoff"] = "Log Off";
// Database upgrade code
-$vocab["login_for_upgrade"] = "Please login as an administrator to perform a
required database upgrade";
-$vocab["upgrade_to_version"] = "Upgrading to database version";
-$vocab["upgrade_completed"] = "Database upgrade completed";
+$vocab["login_for_upgrade"] = "Please login as an administrator to
perform a required database upgrade";
+$vocab["upgrade_to_version"] = "Upgrading to database version";
+$vocab["upgrade_to_local_version"] = "Upgrading to database local version";
+$vocab["upgrade_completed"] = "Database upgrade completed";
// User access levels
$vocab["level_0"] = "none";
Added: mrbs/trunk/web/upgrade/local/1/mysql.sql
===================================================================
--- mrbs/trunk/web/upgrade/local/1/mysql.sql (rev 0)
+++ mrbs/trunk/web/upgrade/local/1/mysql.sql 2009-03-25 13:30:48 UTC (rev
1072)
@@ -0,0 +1,4 @@
+# $Id$
+
+INSERT INTO %DB_TBL_PREFIX%variables (variable_name, variable_content)
+ VALUES ( 'local_db_version', '1');
Property changes on: mrbs/trunk/web/upgrade/local/1/mysql.sql
___________________________________________________________________
Added: svn:keywords
+ Id
Added: svn:eol-style
+ native
Added: mrbs/trunk/web/upgrade/local/1/pgsql.sql
===================================================================
--- mrbs/trunk/web/upgrade/local/1/pgsql.sql (rev 0)
+++ mrbs/trunk/web/upgrade/local/1/pgsql.sql 2009-03-25 13:30:48 UTC (rev
1072)
@@ -0,0 +1,4 @@
+-- $Id$
+
+INSERT INTO %DB_TBL_PREFIX%variables (variable_name, variable_content)
+ VALUES ('local_db_version', '1');
Property changes on: mrbs/trunk/web/upgrade/local/1/pgsql.sql
___________________________________________________________________
Added: svn:keywords
+ Id
Added: svn:eol-style
+ native
Modified: mrbs/trunk/web/upgrade.inc
===================================================================
--- mrbs/trunk/web/upgrade.inc 2009-03-25 09:33:26 UTC (rev 1071)
+++ mrbs/trunk/web/upgrade.inc 2009-03-25 13:30:48 UTC (rev 1072)
@@ -4,8 +4,10 @@
//
-function upgrade_database($from, $to)
+function upgrade_database($local, $from, $to)
{
+ // $local is a boolean specifying whether the upgrades are global MRBS ones
($local == FALSE)
+ // or local upgrades ($local == TRUE);
global $dbsys;
global $db_tbl_prefix;
global $tbl_variables;
@@ -18,9 +20,20 @@
for ($ver = ($from+1); $ver <= $to; $ver++)
{
- print "<p>".get_vocab("upgrade_to_version").": $ver";
+ print "<p>" .
+ (($local) ? get_vocab("upgrade_to_local_version") :
get_vocab("upgrade_to_version")) .
+ ": $ver";
- $filename = "upgrade/$ver/$sql_type.sql";
+ if ($local)
+ {
+ $filename = "upgrade/local/$ver/$sql_type.sql";
+ $php_filename = "upgrade/local/$ver/post.inc";
+ }
+ else
+ {
+ $filename = "upgrade/$ver/$sql_type.sql";
+ $php_filename = "upgrade/$ver/post.inc";
+ }
$handle = fopen($filename, "r");
if (!$handle)
{
@@ -55,8 +68,9 @@
print "<br>".get_vocab("ok");
if ($ver > 1)
{
+ $variable_name = ($local) ? "local_db_version" : "db_version";
$res = sql_command("UPDATE $tbl_variables SET variable_content = '$ver'
".
- "WHERE variable_name = 'db_version'");
+ "WHERE variable_name = '$variable_name'");
if ($res == -1)
{
// No need to localise, should never happen
@@ -66,9 +80,9 @@
print "</p>\n";
// Now execute the PHP file if there is one
- if (file_exists("upgrade/$ver/post.inc"))
+ if (file_exists($php_filename))
{
- include "upgrade/$ver/post.inc";
+ include($php_filename);
}
}
}
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are
powering Web 2.0 with engaging, cross-platform capabilities. Quickly and
easily build your RIAs with Flex Builder, the Eclipse(TM)based development
software that enables intelligent coding and step-through debugging.
Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com
_______________________________________________
Mrbs-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mrbs-commits