diff -r 0b7ff06aad13 -r f3a5a276208c install/includes/stages/database_postgresql.php --- 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 @@ + get('dbpgsql_field_port_title'); ?> +
get('dbpgsql_field_port_body'); ?> +
+ + + + + + Good/bad icon + + + + get('dbpgsql_field_dbname_title'); ?>
get('dbpgsql_field_dbname_body'); ?>