From a3644638aaf0418598196a870204e0b632a4c8ad Mon Sep 17 00:00:00 2001
From: Thomas Bruederli <thomas@roundcube.net>
Date: Fri, 17 Apr 2015 06:28:40 -0400
Subject: [PATCH] Allow preference sections to define CSS class names

---
 bin/updatedb.sh |  147 ++-----------------------------------------------
 1 files changed, 6 insertions(+), 141 deletions(-)

diff --git a/bin/updatedb.sh b/bin/updatedb.sh
index d2cf1b0..7e4f0f5 100755
--- a/bin/updatedb.sh
+++ b/bin/updatedb.sh
@@ -19,7 +19,7 @@
  +-----------------------------------------------------------------------+
 */
 
-define('INSTALL_PATH', realpath(dirname(__FILE__) . '/..') . '/' );
+define('INSTALL_PATH', realpath(__DIR__ . '/..') . '/' );
 
 require_once INSTALL_PATH . 'program/include/clisetup.php';
 
@@ -27,151 +27,16 @@
 $opts = rcube_utils::get_opt(array(
     'v' => 'version',
     'd' => 'dir',
-    'l' => 'label',
+    'p' => 'package',
 ));
 
 if (empty($opts['dir'])) {
-  echo "ERROR: Database schema directory not specified (--dir).\n";
-  exit(1);
+    rcube::raise_error("Database schema directory not specified (--dir).", false, true);
 }
-if (empty($opts['label'])) {
-  echo "ERROR: Database schema label not specified (--label).\n";
-  exit(1);
+if (empty($opts['package'])) {
+    rcube::raise_error("Database schema package name not specified (--package).", false, true);
 }
 
-// Check if directory exists
-if (!file_exists($opts['dir'])) {
-  echo "ERROR: Specified database schema directory doesn't exist.\n";
-  exit(1);
-}
-
-// version is specified, use release-to-version map
-if ($opts['version']) {
-    // Map old release version string to DB schema version
-    // Note: This is for backward compat. only, do not need to be updated
-    $map = array(
-        '0.1-stable' => 1,
-        '0.1.1'      => 2008030300,
-        '0.2-alpha'  => 2008040500,
-        '0.2-beta'   => 2008060900,
-        '0.2-stable' => 2008092100,
-        '0.3-stable' => 2008092100,
-        '0.3.1'      => 2009090400,
-        '0.4-beta'   => 2009103100,
-        '0.4.2'      => 2010042300,
-        '0.5-beta'   => 2010100600,
-        '0.5'        => 2010100600,
-        '0.5.1'      => 2010100600,
-        '0.6-beta'   => 2011011200,
-        '0.6'        => 2011011200,
-        '0.7-beta'   => 2011092800,
-        '0.7'        => 2011111600,
-        '0.7.1'      => 2011111600,
-        '0.7.2'      => 2011111600,
-        '0.7.3'      => 2011111600,
-        '0.8-beta'   => 2011121400,
-        '0.8-rc'     => 2011121400,
-        '0.8.0'      => 2011121400,
-        '0.8.1'      => 2011121400,
-        '0.8.2'      => 2011121400,
-        '0.8.3'      => 2011121400,
-        '0.8.4'      => 2011121400,
-        '0.9-beta'   => 2012080700,
-    );
-
-    $version = $map[$opts['version']];
-}
-
-$RC = rcube::get_instance();
-$DB = rcube_db::factory($RC->config->get('db_dsnw'));
-
-// Connect to database
-$DB->db_connect('w');
-if (!$DB->is_connected()) {
-    echo "Error connecting to database: " . $DB->is_error() . ".\n";
-    exit(1);
-}
-
-// Read DB schema version from database
-if (empty($version)) {
-    @$DB->query("SELECT " . $DB->quote_identifier('value')
-        ." FROM " . $DB->quote_identifier('system')
-        ." WHERE name = ?",
-        $opts['label'] . '-version');
-
-    $row     = $DB->fetch_array();
-    $version = $row[0];
-}
-
-// Assume last version without the "system" table
-if (empty($version)) {
-    $version = 2012080700;
-}
-
-$dir = $opts['dir'] . DIRECTORY_SEPARATOR . $DB->db_provider;
-if (!file_exists($dir)) {
-    echo "DDL Upgrade files for " . $DB->db_provider . " driver not found.\n";
-    exit(1);
-}
-
-$dh     = opendir($dir);
-$result = array();
-
-while ($file = readdir($dh)) {
-    if (preg_match('/^([0-9]+)\.sql$/', $file, $m) && $m[1] > $version) {
-        $result[] = $m[1];
-    }
-}
-sort($result, SORT_NUMERIC);
-
-foreach ($result as $v) {
-    echo "Updating database schema ($v)... ";
-    $error = update_db_schema($opts['label'], $v, $dir . DIRECTORY_SEPARATOR . "$v.sql");
-
-    if ($error) {
-        echo "\nError in DDL upgrade $v: $error\n";
-        exit(1);
-    }
-    echo "[OK]\n";
-}
-
-exit(0);
-
-function update_db_schema($label, $version, $file)
-{
-    global $DB;
-
-    // read DDL file
-    if ($lines = file($file)) {
-        $sql = '';
-        foreach ($lines as $line) {
-            if (preg_match('/^--/', $line) || trim($line) == '')
-                continue;
-
-            $sql .= $line . "\n";
-            if (preg_match('/(;|^GO)$/', trim($line))) {
-                @$DB->query($sql);
-                $sql = '';
-                if ($error = $DB->is_error()) {
-                    return $error;
-                }
-            }
-        }
-    }
-
-    $DB->query("UPDATE " . $DB->quote_identifier('system')
-        ." SET " . $DB->quote_identifier('value') . " = ?"
-        ." WHERE " . $DB->quote_identifier('name') . " = ?",
-        $version, $opts['label'] . '-version');
-
-    if (!$DB->is_error() && !$DB->affected_rows()) {
-        $DB->query("INSERT INTO " . $DB->quote_identifier('system')
-            ." (" . $DB->quote_identifier('name') . ", " . $DB->quote_identifier('value') . ")"
-            ." VALUES (?, ?)",
-            $opts['label'] . '-version', $version);
-    }
-
-    return $DB->is_error();
-}
+rcmail_utils::db_update($opts['dir'], $opts['package'], $opts['version'], array('errors' => true));
 
 ?>

--
Gitblit v1.9.1