From 393618dacb75c55fbf482e9ee5e368b852bfc6e7 Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Thu, 17 Jan 2013 02:35:35 -0500
Subject: [PATCH] Merge branch 'schema_upgrades'

---
 bin/update.sh |   61 ++++++++++++------------------
 1 files changed, 24 insertions(+), 37 deletions(-)

diff --git a/bin/update.sh b/bin/update.sh
index 094e5b7..536bad9 100755
--- a/bin/update.sh
+++ b/bin/update.sh
@@ -6,7 +6,10 @@
  |                                                                       |
  | This file is part of the Roundcube Webmail client                     |
  | Copyright (C) 2010-2011, The Roundcube Dev Team                       |
- | Licensed under the GNU GPL                                            |
+ |                                                                       |
+ | Licensed under the GNU General Public License version 3 or            |
+ | any later version with exceptions for skins & plugins.                |
+ | See the README file for a full license statement.                     |
  |                                                                       |
  | PURPOSE:                                                              |
  |   Check local configuration and database schema after upgrading       |
@@ -14,21 +17,15 @@
  +-----------------------------------------------------------------------+
  | Author: Thomas Bruederli <roundcube@gmail.com>                        |
  +-----------------------------------------------------------------------+
-
- $Id$
-
 */
 
-if (php_sapi_name() != 'cli') {
-    die('Not on the "shell" (php-cli).');
-}
 define('INSTALL_PATH', realpath(dirname(__FILE__) . '/..') . '/' );
 
 require_once INSTALL_PATH . 'program/include/clisetup.php';
 require_once INSTALL_PATH . 'installer/rcube_install.php';
 
 // get arguments
-$opts = get_opt(array('v' => 'version'));
+$opts = rcube_utils::get_opt(array('v' => 'version'));
 
 // ask user if no version is specified
 if (!$opts['version']) {
@@ -37,7 +34,7 @@
     $opts['version'] = $input;
 }
 
-if ($opts['version'] && version_compare($opts['version'], RCMAIL_VERSION, '>'))
+if ($opts['version'] && version_compare(version_parse($opts['version']), version_parse(RCMAIL_VERSION), '>'))
   die("Nothing to be done here. Bye!\n");
 
 
@@ -114,6 +111,12 @@
         if ($write1 && $write2) {
           echo "Done.\n";
           echo "Your configuration files are now up-to-date!\n";
+
+          if ($messages['missing']) {
+            echo "But you still need to add the following missing options:\n";
+            foreach ($messages['missing'] as $msg)
+              echo "- '" . $msg['prop'] . ($msg['name'] ? "': " . $msg['name'] : "'") . "\n";
+          }
         }
         else {
           echo "Failed to write config files!\n";
@@ -121,7 +124,7 @@
         }
       }
       else {
-        echo "Please update your config files manually according to the above messages.\n\n";
+        echo "Please update your config files manually according to the above messages.\n";
       }
     }
 
@@ -140,32 +143,18 @@
 
   // check database schema
   if ($RCI->config['db_dsnw']) {
-    $DB = new rcube_mdb2($RCI->config['db_dsnw'], '', false);
-    $DB->db_connect('w');
-    if ($db_error_msg = $DB->is_error()) {
-      echo "Error connecting to database: $db_error_msg\n";
-      $success = false;
-    }
-    else if ($err = $RCI->db_schema_check($DB, false)) {
-      $updatefile = INSTALL_PATH . 'SQL/' . (isset($RCI->db_map[$DB->db_provider]) ? $RCI->db_map[$DB->db_provider] : $DB->db_provider) . '.update.sql';
-      echo "WARNING: Database schema needs to be updated!\n";
-      echo join("\n", $err) . "\n\n";
-      $success = false;
-      
-      if ($opts['version']) {
-        echo "Do you want to run the update queries to get the schmea fixed? (y/N)\n";
-        $input = trim(fgets(STDIN));
-        if (strtolower($input) == 'y') {
-          $success = $RCI->update_db($DB, $opts['version']);
-        }
-      }
-      
-      if (!$success)
-        echo "Open $updatefile and execute all queries below the comment with the currently installed version number.\n";
-    }
+    echo "Executing database schema update.\n";
+    system(INSTALL_PATH . "bin/updatedb.sh --package=roundcube --version=" . $ops['version']
+      . " --dir=" . INSTALL_PATH . DIRECTORY_SEPARATOR . "SQL", $res);
+
+    $success = !$res;
   }
-  
-  
+
+  // index contacts for fulltext searching
+  if (version_compare(version_parse($opts['version']), '0.6.0', '<')) {
+    system(INSTALL_PATH . 'bin/indexcontacts.sh');
+  }
+
   if ($success) {
     echo "This instance of Roundcube is up-to-date.\n";
     echo "Have fun!\n";
@@ -175,7 +164,5 @@
   echo "This instance of Roundcube is not yet configured!\n";
   echo "Open http://url-to-roundcube/installer/ in your browser and follow the instuctions.\n";
 }
-
-echo "\n";
 
 ?>

--
Gitblit v1.9.1