Aleksander Machniak
2012-12-20 a079269166d120bcbcb33d34f4b1c8f60d102e32
Fix version comparisons with -stable suffix (#1488876)
6 files modified
37 ■■■■ changed files
CHANGELOG 1 ●●●● patch | view | raw | blame | history
bin/installto.sh 2 ●●● patch | view | raw | blame | history
bin/update.sh 4 ●●●● patch | view | raw | blame | history
installer/rcube_install.php 6 ●●●● patch | view | raw | blame | history
program/lib/Roundcube/bootstrap.php 16 ●●●●● patch | view | raw | blame | history
tests/Framework/Bootstrap.php 8 ●●●●● patch | view | raw | blame | history
CHANGELOG
@@ -1,6 +1,7 @@
CHANGELOG Roundcube Webmail
===========================
- Fix version comparisons with -stable suffix (#1488876)
- Add unsupported alternative parts to attachments list (#1488870)
- Add Compose button on message view page (#1488747)
- Display 'Sender' header in message preview
bin/installto.sh
@@ -35,7 +35,7 @@
$oldversion = $m[1];
if (version_compare($oldversion, RCMAIL_VERSION, '>='))
if (version_compare(version_parse($oldversion), version_parse(RCMAIL_VERSION), '>='))
  die("Installation at target location is up-to-date!\n");
echo "Upgrading from $oldversion. Do you want to continue? (y/N)\n";
bin/update.sh
@@ -34,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");
@@ -169,7 +169,7 @@
  }
  
  // index contacts for fulltext searching
  if (version_compare($opts['version'], '0.6', '<')) {
  if (version_compare(version_parse($opts['version']), '0.6.0', '<')) {
    system(INSTALL_PATH . 'bin/indexcontacts.sh');
  }
  
installer/rcube_install.php
@@ -633,8 +633,8 @@
   */
  function update_db($DB, $version)
  {
    $version = strtolower($version);
    $engine = isset($this->db_map[$DB->db_provider]) ? $this->db_map[$DB->db_provider] : $DB->db_provider;
    $version = version_parse(strtolower($version));
    $engine  = isset($this->db_map[$DB->db_provider]) ? $this->db_map[$DB->db_provider] : $DB->db_provider;
    // read schema file from /SQL/*
    $fname = INSTALL_PATH . "SQL/$engine.update.sql";
@@ -643,7 +643,7 @@
      foreach ($lines as $line) {
        $is_comment = preg_match('/^--/', $line);
        if (!$from && $is_comment && preg_match('/from version\s([0-9.]+[a-z-]*)/', $line, $m)) {
          $v = strtolower($m[1]);
          $v = version_parse(strtolower($m[1]));
          if ($v == $version || version_compare($version, $v, '<='))
            $from = true;
        }
program/lib/Roundcube/bootstrap.php
@@ -358,6 +358,22 @@
/**
 * Fix version number so it can be used correctly in version_compare()
 *
 * @param string $version Version number string
 *
 * @param return Version number string
 */
function version_parse($version)
{
    return str_replace(
        array('-stable', '-git'),
        array('.0', '.99'),
        $version);
}
/**
 * mbstring replacement functions
 */
if (!extension_loaded('mbstring'))
tests/Framework/Bootstrap.php
@@ -207,4 +207,12 @@
        $this->assertFalse($result, "Invalid ASCII (UTF-8 character [2])");
    }
    /**
     * bootstrap.php: version_parse()
     */
    function test_version_parse()
    {
        $this->assertEquals('0.9.0', version_parse('0.9-stable'));
        $this->assertEquals('0.9.99', version_parse('0.9-git'));
    }
}