thomascube
2010-12-17 db1a87cd6c506f2afbd1a37c64cb56ae11120b49
bin/update.sh
@@ -1,6 +1,8 @@
#!/usr/bin/php
#!/usr/bin/env php
<?php
if (php_sapi_name() != 'cli') {
    die('Not on the "shell" (php-cli).');
}
define('INSTALL_PATH', realpath(dirname(__FILE__) . '/..') . '/' );
require_once INSTALL_PATH . 'program/include/iniset.php';
@@ -10,7 +12,10 @@
$RCI->load_config();
if ($RCI->configured) {
  $success = true;
  if ($messages = $RCI->check_config()) {
    $success = false;
    $err = 0;
    // list missing config options
@@ -19,7 +24,7 @@
      echo "(These config options should be present in the current configuration)\n";
      foreach ($messages['missing'] as $msg) {
        echo '- ' . $msg['prop'] . ($msg['name'] ? ': ' . $msg['name'] : '') . "\n";
        echo "- '" . $msg['prop'] . ($msg['name'] ? "': " . $msg['name'] : "'") . "\n";
        $err++;
      }
      echo "\n";
@@ -31,7 +36,7 @@
      echo "(These config options have been replaced or renamed)\n";
      foreach ($messages['replaced'] as $msg) {
        echo "- " . $msg['prop'] . "\t\t was replaced by " . $msg['replacement'] . "\n";
        echo "- '" . $msg['prop'] . "' was replaced by '" . $msg['replacement'] . "'\n";
        $err++;
      }
      echo "\n";
@@ -43,7 +48,7 @@
      echo "(You still have some obsolete or inexistent properties set. This isn't a problem but should be noticed)\n";
      foreach ($messages['obsolete'] as $msg) {
        echo "- " . $msg['prop'] . ($msg['name'] ? ': ' . $msg['name'] : '') . "\n";
        echo "- '" . $msg['prop'] . ($msg['name'] ? "': " . $msg['name'] : "'") . "\n";
        $err++;
      }
      echo "\n";
@@ -75,7 +80,7 @@
        // Success!
        if ($write1 && $write2) {
          echo "Done.\n";
          echo "Your configuration files are now up-tp-date!\n";
          echo "Your configuration files are now up-to-date!\n";
        }
        else {
          echo "Failed to write config files!\n";
@@ -98,18 +103,36 @@
      echo "Please fix your config files and run this script again!\n";
      echo "See ya.\n";
    }
  }
  else {
    echo "This instance of RoundCube is up-to-date.\n";
  // 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 ($RCI->db_schema_check($DB, false)) {
      $db_map = array('pgsql' => 'postgres', 'mysqli' => 'mysql', 'sqlsrv' => 'mssql');
      $updatefile = INSTALL_PATH . 'SQL/' . (isset($db_map[$DB->db_provider]) ? $db_map[$DB->db_provider] : $DB->db_provider) . '.update.sql';
      echo "WARNING: Database schema needs to be updated!\n";
      echo "Open $updatefile and execute all queries that are superscribed with the currently installed version number\n";
      $success = false;
    }
  }
  if ($success) {
    echo "This instance of Roundcube is up-to-date.\n";
    echo "Have fun!\n";
  }
}
else {
  echo "This instance of RoundCube is not yet configured!\n";
  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";
?>
?>