lang = $lang; if (!empty($_POST)) { if (install_ini_get_bool('magic_quotes_gpc')) { $_POST = array_map('stripslashes', $_POST); } $config->stage = (int)$_POST['stage']; if (isset($_POST['previous'])) { $config->stage--; if (INSTALL_DATABASETYPE and !empty($distro->dbtype)) { $config->stage--; } if ($config->stage == INSTALL_ENVIRONMENT or $config->stage == INSTALL_DOWNLOADLANG) { $config->stage--; } if (INSTALL_DISTRIBUTION and empty($distro)) { $config->stage--; } } else if (isset($_POST['next'])) { $config->stage++; } $config->dbtype = trim($_POST['dbtype']); $config->dbhost = trim($_POST['dbhost']); $config->dbuser = trim($_POST['dbuser']); $config->dbpass = trim($_POST['dbpass']); $config->dbname = trim($_POST['dbname']); $config->prefix = trim($_POST['prefix']); $config->dbsocket = (int)(!empty($_POST['dbsocket'])); $config->dirroot = trim($_POST['dirroot']); $config->admin = empty($_POST['admin']) ? 'admin' : trim($_POST['admin']); $config->dataroot = trim($_POST['dataroot']); } else { $config->stage = INSTALL_WELCOME; $config->dbtype = empty($distro->dbtype) ? '' : $distro->dbtype; // let distro skip dbtype selection $config->dbhost = 'localhost'; $config->dbuser = ''; $config->dbpass = ''; $config->dbname = 'moodle'; $config->prefix = 'mdl_'; $config->dbsocket = 0; $config->dirroot = dirname(__FILE__); $config->admin = 'admin'; $config->dataroot = empty($distro->dataroot) ? null : $distro->dataroot; // initialised later after including libs or by distro } /// Fake some settings so that we can use selected functions from moodlelib.php and weblib.php $CFG = new stdClass(); $CFG->lang = $config->lang; $CFG->dirroot = dirname(__FILE__); $CFG->libdir = "$CFG->dirroot/lib"; $CFG->wwwroot = install_guess_wwwroot(); // can not be changed - ppl must use the real address when installing $CFG->httpswwwroot = $CFG->wwwroot; $CFG->httpsthemewww = $CFG->wwwroot; $CFG->dataroot = $config->dataroot; $CFG->admin = $config->admin; $CFG->docroot = 'http://docs.moodle.org'; $CFG->directorypermissions = 00777; $CFG->running_installer = true; /// Require all needed libs require_once($CFG->libdir.'/setuplib.php'); require_once($CFG->libdir.'/textlib.class.php'); require_once($CFG->libdir.'/weblib.php'); require_once($CFG->libdir.'/dmllib.php'); require_once($CFG->libdir.'/moodlelib.php'); require_once($CFG->libdir.'/deprecatedlib.php'); require_once($CFG->libdir.'/adminlib.php'); require_once($CFG->libdir.'/environmentlib.php'); require_once($CFG->libdir.'/xmlize.php'); require_once($CFG->libdir.'/componentlib.class.php'); require('version.php'); $CFG->release = $release; $SESSION = new object(); $SESSION->lang = $CFG->lang; $USER = new object(); $USER->id = 0; $COURSE = new object(); $COURSE->id = 0; $SITE = $COURSE; define('SITEID', 0); $hint_dataroot = ''; $hint_dirroot = ''; $hint_admindir = ''; $hint_database = ''; /// Are we in help mode? if (isset($_GET['help'])) { install_print_help_page($_GET['help']); } /// send css? if (isset($_GET['css'])) { install_css_styles(); } ///first time here? find out suitable dataroot if (is_null($CFG->dataroot)) { $CFG->dataroot = str_replace('\\', '/', dirname(dirname(__FILE__)).'/moodledata'); $i = 0; //safety check - dirname might return some unexpected results while(is_dataroot_insecure()) { $parrent = dirname($CFG->dataroot); $i++; if ($parrent == '/' or $parrent == '.' or preg_match('/^[a-z]:\\\?$/i', $parrent) or ($i > 100)) { $CFG->dataroot = ''; //can not find secure location for dataroot break; } $CFG->dataroot = dirname($parrent).'/moodledata'; } $config->dataroot = $CFG->dataroot; $config->stage = INSTALL_WELCOME; } // now let's do the stage work if ($config->stage < INSTALL_WELCOME) { $config->stage = INSTALL_WELCOME; } if ($config->stage > INSTALL_SAVE) { $config->stage = INSTALL_SAVE; } if ($config->stage == INSTALL_SAVE) { $database = moodle_database::get_driver_instance($config->dbtype, 'native'); if (!$database->driver_installed()) { $config->stage = INSTALL_DATABASETYPE; } else { $hint_database = install_db_validate($database, $config->dbhost, $config->dbuser, $config->dbpass, $config->dbname, $config->prefix, array('dbpersit'=>0, 'dbsocket'=>$config->dbsocket)); if ($hint_database === '') { $configphp = 'export_dbconfig(); foreach ($dbconfig as $key=>$value) { $key = str_pad($key, 9); $configphp .= '$CFG->'.$key.' = '.var_export($value, true).";\r\n"; } $configphp .= "\r\n"; $configphp .= '$CFG->wwwroot = '.var_export($CFG->wwwroot, true).";\r\n"; if ($CFG->dirroot !== $config->dirroot) { $configphp .= '$CFG->dirroot = realpath('.var_export($config->dirroot, true).");\r\n"; // fix for sym links } else { $dirroot = str_replace('\\', '/', $CFG->dirroot); // win32 fix $dirroot = rtrim($dirroot, '/'); // no trailing / $configphp .= '$CFG->dirroot = '.var_export($dirroot, true).";\r\n"; } $dataroot = str_replace('\\', '/', $config->dataroot); // win32 fix $dataroot = rtrim($dataroot, '/'); // no trailing / $configphp .= '$CFG->dataroot = '.var_export($dataroot, true).";\r\n"; $configphp .= '$CFG->admin = '.var_export($config->admin, true).";\r\n\r\n"; $configphp .= '$CFG->directorypermissions = 00777; // try 02777 on a server in Safe Mode'."\r\n"; $configphp .= "\r\n"; $configphp .= 'require_once("$CFG->dirroot/lib/setup.php");'."\r\n\r\n"; $configphp .= '// There is no php closing tag in this file,'."\r\n"; $configphp .= '// it is intentional because it prevents trailing whitespace problems!'."\r\n"; umask(0137); if (($fh = @fopen($configfile, 'w')) !== false) { fwrite($fh, $configphp); fclose($fh); } if (file_exists($configfile)) { // config created, let's continue! redirect("$CFG->wwwroot/$config->admin/index.php?lang=$config->lang"); } install_print_header($config, 'config.php', get_string('configurationcompletehead', 'install'), get_string('configurationcompletesub', 'install').get_string('configfilenotwritten', 'install')); echo '
'; echo p($configphp); echo '