From e7fa2ce56d0c9e3d791f3c145febbb9ab16be838 Mon Sep 17 00:00:00 2001
From: Aleksander Machniak <alec@alec.pl>
Date: Tue, 18 Jun 2013 07:54:26 -0400
Subject: [PATCH] Fix so install do not fail when one of DB driver checks fails but other drivers exist (#1489178)

---
 CHANGELOG                   |    1 +
 installer/rcube_install.php |    7 +++++--
 installer/check.php         |    6 +++++-
 3 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index bac9ee1..66db420 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,7 @@
 CHANGELOG Roundcube Webmail
 ===========================
 
+- Fix so install do not fail when one of DB driver checks fails but other drivers exist (#1489178)
 - Fix so exported vCard specifies encoding in v3-compatible format (#1489183)
 - Fix session issues when local and database time differs (#1486132)
 - Fix thread cache syncronization/validation (#1489028)
diff --git a/installer/check.php b/installer/check.php
index fcf3502..bea8c42 100644
--- a/installer/check.php
+++ b/installer/check.php
@@ -139,10 +139,11 @@
     if (extension_loaded($ext)) {
         // MySQL driver requires PHP >= 5.3 (#1488875)
         if ($ext == 'pdo_mysql' && version_compare(PHP_VERSION, '5.3.0', '<')) {
-            $RCI->fail($database, 'PHP >= 5.3 required');
+            $RCI->fail($database, 'PHP >= 5.3 required', null, true);
         }
         else {
             $RCI->pass($database);
+            $found_db_driver = true;
         }
     }
     else {
@@ -152,6 +153,9 @@
     }
     echo '<br />';
 }
+if (empty($found_db_driver)) {
+  $RCI->failures++;
+}
 
 ?>
 
diff --git a/installer/rcube_install.php b/installer/rcube_install.php
index c95d936..473fd26 100644
--- a/installer/rcube_install.php
+++ b/installer/rcube_install.php
@@ -496,10 +496,13 @@
    * @param string Test name
    * @param string Error message
    * @param string URL for details
+   * @param bool   Do not count this failure
    */
-  function fail($name, $message = '', $url = '')
+  function fail($name, $message = '', $url = '', $optional=false)
   {
-    $this->failures++;
+    if (!$optional) {
+      $this->failures++;
+    }
 
     echo Q($name) . ':&nbsp; <span class="fail">NOT OK</span>';
     $this->_showhint($message, $url);

--
Gitblit v1.9.1