* Write conf file: * ----------------------------------------------------------------------------------- */ display_locale_selector(); param('conf_db_user', 'string', true); param('conf_db_password', 'raw', true); param('conf_db_name', 'string', true); param('conf_db_host', 'string', true); param('conf_db_tableprefix', 'string', $tableprefix); param('conf_baseurl', 'string', true); $conf_baseurl = preg_replace('#(/)?$#', '', $conf_baseurl) . '/'; // force trailing slash param('conf_admin_email', 'string', true); // Try to create/update basic config file: $basic_config_params = array('db_user' => $conf_db_user, 'db_password' => $conf_db_password, 'db_name' => $conf_db_name, 'db_host' => $conf_db_host, 'db_tableprefix' => $conf_db_tableprefix, 'baseurl' => $conf_baseurl, 'admin_email' => $conf_admin_email); if (!update_basic_config_file($basic_config_params)) { // Break here if some error on creating/updating basic config file break; } // ATTENTION: we continue here... // ATTENTION: we continue here... case 'start': case 'default': /* * ----------------------------------------------------------------------------------- * Start of install procedure: * ----------------------------------------------------------------------------------- */ if (!$install_memory_limit_allow) { // Don't allow any action when minimum memory limit is not enough for using: // Display only a locale selector:
/** * Check request for quick installation * Update basic config file from url params * * @return boolean|string TRUE on success, OR error messages */ function check_quick_install_request() { global $config_is_done, $db_config, $install_login, $install_password, $Messages; $admin_login = param('admin_login', 'string', ''); $admin_password = param('admin_password', 'string', ''); if (!empty($admin_login)) { // Try to use an admin login from request: if (param_check_valid_login('admin_login')) { // We can use this login name $install_login = $admin_login; } else { // Display an error message for impossible login name: $Messages->add(sprintf('ERROR: Impossible to use "%s" for the admin account. Using "admin" instead.', $admin_login)); } } if (!empty($admin_password) && param_check_passwords('admin_password', 'admin_password', false, 5)) { // Set admin password from request: $install_password = $admin_password; } if ($config_is_done) { // Config is already done, Don't use url params to update basic config file return true; } // DB Access: $db_user = param('db_user', 'string', ''); $db_password = param('db_password', 'raw', ''); $db_name = param('db_name', 'string', ''); $db_host = param('db_host', 'string', ''); $db_tableprefix = param('db_tableprefix', 'string', ''); // Admin e-mail: global $admin_email; $default_admin_email = $admin_email; $conf_admin_email = param('admin_email', 'string', '', false, true); if (!empty($conf_admin_email) || !empty($db_user) || !empty($db_password) || !empty($db_name) || !empty($db_host) || !empty($db_tableprefix)) { // Try to update basic config file ONLY when at least one of these params are defined if (empty($conf_admin_email) || !param_check_email('admin_email')) { // Use default admin email if it is empty from request $conf_admin_email = $default_admin_email; } // Base URL: global $baseurl, $admin_url, $dispatcher, $tableprefix; $baseurl = param('baseurl', 'string', '', false, true); if (empty($baseurl) || !preg_match('~https?://~', $baseurl)) { // Try to autogenerate base url if it is empty or wrong from request: $baseurl = 'http://' . (isset($_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : 'yourserver.com'); if (isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] != '80') { $baseurl .= ':' . $_SERVER['SERVER_PORT']; } list($ReqPath, $ReqURI) = get_ReqURI(); $baseurl .= preg_replace('#/install(/(index.php)?)?$#', '', $ReqPath) . '/'; } // Add a slash at the end if it is missed: $baseurl = trim($baseurl, '/') . '/'; // Update $admin_url to new value because it depends on $baseurl: $admin_url = $baseurl . $dispatcher; // Update $tableprefix to new from request: $tableprefix = $db_tableprefix; // Try to create basic config file: $basic_config_params = array('db_user' => $db_user, 'db_password' => $db_password, 'db_name' => $db_name, 'db_host' => $db_host, 'db_tableprefix' => $db_tableprefix, 'baseurl' => $baseurl, 'admin_email' => $conf_admin_email, 'print_messages' => false, 'quick_install' => true); if (update_basic_config_file($basic_config_params)) { // Basic config file has been created successfully // Update DB config to connect to DB correctly $db_config['user'] = $db_user; $db_config['password'] = $db_password; $db_config['name'] = $db_name; $db_config['host'] = $db_host; } else { // Failed on createing of basic config file return false; } } // Revert config admin email to original value: $admin_email = $default_admin_email; return true; }