From 52fa0fed5e4a63c63464d4f630db97a0a2e024a1 Mon Sep 17 00:00:00 2001 From: plegall Date: Mon, 2 Jul 2012 22:28:50 +0000 Subject: merge r16312 from branch 2.4 to trunk bug 2677 fixed: smarter check of the database version and manage partial upgrade. git-svn-id: http://piwigo.org/svn/trunk@16313 68402e56-0260-453c-a942-63ccdbb3a9ee --- install/upgrade_2.3.0.php | 13 ++++++++++--- upgrade.php | 25 ++++++++++++++++++++----- 2 files changed, 30 insertions(+), 8 deletions(-) diff --git a/install/upgrade_2.3.0.php b/install/upgrade_2.3.0.php index c1aa07df7..0dc5c139c 100644 --- a/install/upgrade_2.3.0.php +++ b/install/upgrade_2.3.0.php @@ -52,7 +52,7 @@ $to_apply = array_diff($existing, $applied); $inserts = array(); foreach ($to_apply as $upgrade_id) { - if ($upgrade_id >= 98) + if ($upgrade_id >= 112) // TODO change on each release { break; } @@ -83,11 +83,18 @@ if (!empty($inserts)) ob_start(); echo '
';
 
-for ($upgrade_id = 112; $upgrade_id <= 127; $upgrade_id++)
+for ($upgrade_id = 112; $upgrade_id <= 127; $upgrade_id++) // TODO change on each release
 {
   if (!file_exists(UPGRADES_PATH.'/'.$upgrade_id.'-database.php'))
   {
-    break;
+    continue;
+  }
+
+  // maybe the upgrade task has already been applied in a previous and
+  // incomplete upgrade
+  if (in_array($upgrade_id, $applied))
+  {
+    continue;
   }
   
   unset($upgrade_description);
diff --git a/upgrade.php b/upgrade.php
index b0edd7609..8a7471b94 100644
--- a/upgrade.php
+++ b/upgrade.php
@@ -322,13 +322,28 @@ else if (!in_array('rating_score', $columns_of[PREFIX_TABLE.'images']))
 {
   $current_release = '2.2.0';
 }
-else if (!in_array('coi', $columns_of[PREFIX_TABLE.'images']))
-{
-  $current_release = '2.3.0';
-}
 else
 {
-  die('No upgrade required, the database structure is up to date');
+  // retrieve already applied upgrades
+  $query = '
+SELECT id
+  FROM '.PREFIX_TABLE.'upgrade
+;';
+  $applied_upgrades = array_from_query($query, 'id');
+
+  if (!in_array(127, $applied_upgrades))
+  {
+    $current_release = '2.3.0';
+  }
+  else
+  {
+    // confirm that the database is in the same version as source code files
+    conf_update_param('piwigo_db_version', get_branch_from_version(PHPWG_VERSION));
+    
+    echo 'No upgrade required, the database structure is up to date';
+    echo '
← back to gallery'; + exit(); + } } // +-----------------------------------------------------------------------+ -- cgit v1.2.3