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

Reply via email to