install/includes/stages/database_postgresql.php
changeset 857 f3a5a276208c
parent 801 eb8b23f11744
child 1022 06debbf8dd75
--- a/install/includes/stages/database_postgresql.php	Fri Mar 06 11:19:55 2009 -0500
+++ b/install/includes/stages/database_postgresql.php	Sat Mar 14 14:06:02 2009 -0400
@@ -21,7 +21,7 @@
 {
   $allow_go = true;
   // Do we have everything? If so, continue with installation.
-  foreach ( array('db_host', 'db_name', 'db_user', 'db_pass') as $field )
+  foreach ( array('db_host', 'db_name', 'db_user', 'db_pass', 'db_port') as $field )
   {
     if ( empty($_POST[$field]) )
     {
@@ -73,9 +73,18 @@
       )));
   }
   
+  if ( !is_int($info['db_port']) )
+  {
+    $return['host_good'] = false;
+    echo enano_json_encode($return);
+    exit;
+  }
+  
+  $port = $info['db_port'] ? $info['db_port'] : 5432;
+  
   // Try to connect as the normal user
   // generate connection string
-  $conn_string = "dbname = '" . addslashes($info['db_name']) . "' port = '5432' host = '" . addslashes($info['db_host']) . "' " . 
+  $conn_string = "dbname = '" . addslashes($info['db_name']) . "' port = '$port' host = '" . addslashes($info['db_host']) . "' " . 
                  "user= '" . addslashes($info['db_user']) . "' password = '" . addslashes($info['db_pass']) . "'";
   $test = @pg_connect($conn_string);
   if ( !$test )
@@ -85,7 +94,7 @@
     $return['creating_user'] = true;
     if ( !empty($info['db_root_user']) && !empty($info['db_root_pass']) )
     {
-      $conn_string_root = "dbname = '" . addslashes($info['db_name']) . "' port = '5432' host = '" . addslashes($info['db_host']) . "' " . 
+      $conn_string_root = "dbname = '" . addslashes($info['db_name']) . "' port = '$port' host = '" . addslashes($info['db_host']) . "' " . 
                           "user= '" . addslashes($info['db_root_user']) . "' password = '" . addslashes($info['db_root_pass']) . "'";
       // Attempt connection as root
       $test_root = @pg_connect($conn_string_root);
@@ -181,6 +190,7 @@
     // List of fields
     var fields = {
       db_host: frm.db_host,
+      db_port: frm.db_port,
       db_name: frm.db_name,
       db_user: frm.db_user,
       db_pass: frm.db_pass,
@@ -197,6 +207,13 @@
       if ( !matches )
         passed = false;
     }
+    if ( field == fields.db_port || !field )
+    {
+      var matches = fields.db_port.value.match(/^[0-9]+$/);
+      document.getElementById('s_db_port').src = ( matches ) ? img_neu : img_bad;
+      if ( !matches )
+        passed = false;
+    }
     if ( field == fields.db_name || !field )
     {
       var matches = fields.db_name.value.match(/^[A-z0-9_-]+$/);
@@ -243,6 +260,7 @@
     var frm = document.forms.database_info;
     var connection_info = 'info=' + ajaxEscape(toJSONString({
         db_host: frm.db_host.value,
+        db_port: parseInt(frm.db_port.value),
         db_name: frm.db_name.value,
         db_user: frm.db_user.value,
         db_pass: frm.db_pass.value,
@@ -309,7 +327,10 @@
             }
             if ( !response.version.good )
             {
-              document.getElementById('e_pgsql_version').innerHTML = $lang.get('dbpgsql_msg_err_version', { pg_version: response.version.version });
+              if ( response.version.version == 'indeterminate' )
+                document.getElementById('e_pgsql_version').innerHTML = $lang.get('dbpgsql_msg_warn_pg_version');
+              else
+                document.getElementById('e_pgsql_version').innerHTML = $lang.get('dbpgsql_msg_err_version', { pg_version: response.version.version });
               document.getElementById('s_pgsql_version').src = img_bad;
             }
           }
@@ -344,6 +365,19 @@
   </tr>
   <tr>
     <td>
+      <b><?php echo $lang->get('dbpgsql_field_port_title'); ?></b>
+      <br /><?php echo $lang->get('dbpgsql_field_port_body'); ?>
+      <br /><span style="color: #993300" id="e_db_port"></span>
+    </td>
+    <td>
+      <input onkeyup="verify(this);" tabindex="2" name="db_port" size="5" type="text" value="5432" />
+    </td>
+    <td>
+      <img id="s_db_port" alt="Good/bad icon" src="../images/checkbad.png" />
+    </td>
+  </tr>
+  <tr>
+    <td>
       <b><?php echo $lang->get('dbpgsql_field_dbname_title'); ?></b><br />
       <?php echo $lang->get('dbpgsql_field_dbname_body'); ?><br />
       <span style="color: #993300" id="e_db_name"></span>