From b29ca9b5d49eab543ceac4c76e16fbd096432a8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20S=CC=8Ckoda?= Date: Sat, 15 Jun 2013 14:35:02 +0200 Subject: [PATCH 1/2] MDL-26455 add custom DB port and socket to web installer --- install.php | 23 ++++++++++++++++------- lang/en/install.php | 1 + 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/install.php b/install.php index 7acf6d5d9e7..d71e7a58463 100644 --- a/install.php +++ b/install.php @@ -129,7 +129,12 @@ if (!empty($_POST)) { $config->dbpass = trim($_POST['dbpass']); $config->dbname = trim($_POST['dbname']); $config->prefix = trim($_POST['prefix']); - $config->dbsocket = (int)(!empty($_POST['dbsocket'])); + $config->dbport = (int)trim($_POST['dbport']); + $config->dbsocket = trim($_POST['dbsocket']); + + if ($config->dbport <= 0) { + $config->dbport = ''; + } $config->admin = empty($_POST['admin']) ? 'admin' : trim($_POST['admin']); @@ -144,7 +149,8 @@ if (!empty($_POST)) { $config->dbpass = ''; $config->dbname = 'moodle'; $config->prefix = 'mdl_'; - $config->dbsocket = 0; + $config->dbport = empty($distro->dbport) ? '' : $distro->dbport; + $config->dbsocket = empty($distro->dbsocket) ? '' : $distro->dbsocket; $config->admin = 'admin'; @@ -263,9 +269,9 @@ if ($config->stage == INSTALL_SAVE) { $config->stage = INSTALL_DATABASETYPE; } else { if (function_exists('distro_pre_create_db')) { // Hook for distros needing to do something before DB creation - $distro = distro_pre_create_db($database, $config->dbhost, $config->dbuser, $config->dbpass, $config->dbname, $config->prefix, array('dbpersist'=>0, 'dbsocket'=>$config->dbsocket), $distro); + $distro = distro_pre_create_db($database, $config->dbhost, $config->dbuser, $config->dbpass, $config->dbname, $config->prefix, array('dbpersist'=>0, 'dbport'=>$config->dbport, 'dbsocket'=>$config->dbsocket), $distro); } - $hint_database = install_db_validate($database, $config->dbhost, $config->dbuser, $config->dbpass, $config->dbname, $config->prefix, array('dbpersist'=>0, 'dbsocket'=>$config->dbsocket)); + $hint_database = install_db_validate($database, $config->dbhost, $config->dbuser, $config->dbpass, $config->dbname, $config->prefix, array('dbpersist'=>0, 'dbport'=>$config->dbport, 'dbsocket'=>$config->dbsocket)); if ($hint_database === '') { $configphp = install_generate_configphp($database, $CFG); @@ -405,6 +411,7 @@ if ($config->stage == INSTALL_DATABASE) { $strdbuser = get_string('databaseuser', 'install'); $strdbpass = get_string('databasepass', 'install'); $strprefix = get_string('dbprefix', 'install'); + $strdbport = get_string('databaseport', 'install'); $strdbsocket = get_string('databasesocket', 'install'); echo '
'; @@ -432,11 +439,13 @@ if ($config->stage == INSTALL_DATABASE) { echo ''; echo '
'; + echo '
'; + echo ''; + echo '
'; + if (!(stristr(PHP_OS, 'win') && !stristr(PHP_OS, 'darwin'))) { - $checked = $config->dbsocket ? 'checked="checked' : ''; echo '
'; - echo ''; - echo ''; + echo ''; echo '
'; } diff --git a/lang/en/install.php b/lang/en/install.php index e936e0d06e2..f744ec593c6 100644 --- a/lang/en/install.php +++ b/lang/en/install.php @@ -86,6 +86,7 @@ $string['databasehead'] = 'Database settings'; $string['databasehost'] = 'Database host'; $string['databasename'] = 'Database name'; $string['databasepass'] = 'Database password'; +$string['databaseport'] = 'Database port'; $string['databasesettings'] = 'Now you need to configure the database where most Moodle data will be stored. This database must already have been created and a username and password created to access it.
From 1826d0ead68343d5ae61d06f689d6ca308006ae0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20S=CC=8Ckoda?= Date: Sat, 15 Jun 2013 15:07:28 +0200 Subject: [PATCH 2/2] MDL-26455 add support for custom DB port and socket in CLI installer --- admin/cli/install.php | 41 ++++++++++++++++++++++++++++++++++++----- 1 file changed, 36 insertions(+), 5 deletions(-) diff --git a/admin/cli/install.php b/admin/cli/install.php index a84d5562588..5578213dc21 100644 --- a/admin/cli/install.php +++ b/admin/cli/install.php @@ -58,7 +58,8 @@ Options: --dbname=NAME Database name. Default is moodle --dbuser=USERNAME Database user. Default is root --dbpass=PASSWORD Database password. Default is blank ---dbsocket Use database sockets. Available for some databases only. +--dbport=NUMBER Use database port. +--dbsocket=PATH Use database socket, 1 means default. Available for some databases only. --prefix=STRING Table prefix for above database tables. Default is mdl_ --fullname=STRING The fullname of the site --shortname=STRING The shortname of the site @@ -150,6 +151,7 @@ $CFG->docroot = 'http://docs.moodle.org'; $CFG->running_installer = true; $CFG->early_install_lang = true; $CFG->ostype = (stristr(PHP_OS, 'win') && !stristr(PHP_OS, 'darwin')) ? 'WINDOWS' : 'UNIX'; +$CFG->dboptions = array(); $parts = explode('/', str_replace('\\', '/', dirname(dirname(__FILE__)))); $CFG->admin = array_pop($parts); @@ -204,7 +206,8 @@ list($options, $unrecognized) = cli_get_params( 'dbname' => 'moodle', 'dbuser' => empty($distro->dbuser) ? 'root' : $distro->dbuser, // let distros set dbuser 'dbpass' => '', - 'dbsocket' => false, + 'dbport' => '', + 'dbsocket' => '', 'prefix' => 'mdl_', 'fullname' => '', 'shortname' => '', @@ -497,6 +500,34 @@ if ($interactive) { $CFG->prefix = $options['prefix']; } +// ask for db port +if ($interactive) { + cli_separator(); + cli_heading(get_string('databaseport', 'install')); + $prompt = get_string('clitypevaluedefault', 'admin', $options['dbport']); + $CFG->dboptions['dbport'] = (int)cli_input($prompt, $options['dbport']); + +} else { + $CFG->dboptions['dbport'] = (int)$options['dbport']; +} +if ($CFG->dboptions['dbport'] <= 0) { + $CFG->dboptions['dbport'] = ''; +} + +// ask for db socket +if ($CFG->ostype === 'WINDOWS') { + $CFG->dboptions['dbsocket'] = ''; + +} else if ($interactive and empty($CFG->dboptions['dbport'])) { + cli_separator(); + cli_heading(get_string('databasesocket', 'install')); + $prompt = get_string('clitypevaluedefault', 'admin', $options['dbsocket']); + $CFG->dboptions['dbsocket'] = cli_input($prompt, $options['dbsocket']); + +} else { + $CFG->dboptions['dbsocket'] = $options['dbsocket']; +} + // ask for db user if ($interactive) { cli_separator(); @@ -525,14 +556,14 @@ if ($interactive) { $CFG->dbpass = cli_input($prompt, $options['dbpass']); if (function_exists('distro_pre_create_db')) { // Hook for distros needing to do something before DB creation - $distro = distro_pre_create_db($database, $CFG->dbhost, $CFG->dbuser, $CFG->dbpass, $CFG->dbname, $CFG->prefix, array('dbpersist'=>0, 'dbsocket'=>$options['dbsocket']), $distro); + $distro = distro_pre_create_db($database, $CFG->dbhost, $CFG->dbuser, $CFG->dbpass, $CFG->dbname, $CFG->prefix, array('dbpersist'=>0, 'dbport'=>$CFG->dboptions['dbport'], 'dbsocket'=>$CFG->dboptions['dbsocket']), $distro); } - $hint_database = install_db_validate($database, $CFG->dbhost, $CFG->dbuser, $CFG->dbpass, $CFG->dbname, $CFG->prefix, array('dbpersist'=>0, 'dbsocket'=>$options['dbsocket'])); + $hint_database = install_db_validate($database, $CFG->dbhost, $CFG->dbuser, $CFG->dbpass, $CFG->dbname, $CFG->prefix, array('dbpersist'=>0, 'dbport'=>$CFG->dboptions['dbport'], 'dbsocket'=>$CFG->dboptions['dbsocket'])); } while ($hint_database !== ''); } else { $CFG->dbpass = $options['dbpass']; - $hint_database = install_db_validate($database, $CFG->dbhost, $CFG->dbuser, $CFG->dbpass, $CFG->dbname, $CFG->prefix, array('dbpersist'=>0, 'dbsocket'=>$options['dbsocket'])); + $hint_database = install_db_validate($database, $CFG->dbhost, $CFG->dbuser, $CFG->dbpass, $CFG->dbname, $CFG->prefix, array('dbpersist'=>0, 'dbport'=>$CFG->dboptions['dbport'], 'dbsocket'=>$CFG->dboptions['dbsocket'])); if ($hint_database !== '') { cli_error(get_string('dbconnectionerror', 'install')); }