'UTF-8', 'server_type' => 'production', // 'production' | 'test' 'permissions_for_new_directories' => '0770', 'permissions_for_new_files' => '0660', 'stylesheets' => 'chamilo' ]; // Determination of the language during the installation procedure. if (!empty($_POST['language_list'])) { $search = ['../', '\\0']; $install_language = str_replace($search, '', urldecode($_POST['language_list'])); Session::write('install_language', $install_language); } elseif (isset($_SESSION['install_language']) && $_SESSION['install_language']) { $install_language = $_SESSION['install_language']; } else { // Trying to switch to the browser's language, it is covenient for most of the cases. $install_language = detect_browser_language(); } // Language validation. if (!array_key_exists($install_language, get_language_folder_list())) { $install_language = 'english'; } $installationGuideLink = '../../documentation/installation_guide.html'; // Loading language files. require api_get_path(SYS_LANG_PATH).'english/trad4all.inc.php'; if ($install_language != 'english') { include_once api_get_path(SYS_LANG_PATH).$install_language.'/trad4all.inc.php'; switch ($install_language) { case 'french': $installationGuideLink = '../../documentation/installation_guide_fr_FR.html'; break; case 'spanish': $installationGuideLink = '../../documentation/installation_guide_es_ES.html'; break; case 'italian': $installationGuideLink = '../../documentation/installation_guide_it_IT.html'; break; default: break; } } // These global variables must be set for proper working of the function get_lang(...) during the installation. $language_interface = $install_language; $language_interface_initial_value = $install_language; // Character set during the installation, it is always to be 'UTF-8'. $charset = 'UTF-8'; // Enables the portablity layer and configures PHP for UTF-8 \Patchwork\Utf8\Bootup::initAll(); // Page encoding initialization. header('Content-Type: text/html; charset='.$charset); // Setting the error reporting levels. error_reporting(E_ALL); // Overriding the timelimit (for large campusses that have to be migrated). @set_time_limit(0); // Upgrading from any subversion of 1.9 $update_from_version_8 = [ '1.9.0', '1.9.2', '1.9.4', '1.9.6', '1.9.6.1', '1.9.8', '1.9.8.1', '1.9.8.2', '1.9.10', '1.9.10.2', '1.9.10.4', '1.9.10.6', '1.10.0', '1.10.2', '1.10.4', '1.10.6', '1.10.8', '1.11.0', '1.11.1', '1.11.2', '1.11.4', '1.11.6', '1.11.8', '1.11.10', ]; $my_old_version = ''; if (empty($tmp_version)) { $tmp_version = get_config_param('system_version'); } if (!empty($_POST['old_version'])) { $my_old_version = $_POST['old_version']; } elseif (!empty($tmp_version)) { $my_old_version = $tmp_version; } require_once __DIR__.'/version.php'; // Try to delete old symfony folder (generates conflicts with composer) $oldSymfonyFolder = '../inc/lib/symfony'; if (is_dir($oldSymfonyFolder)) { @rmdir($oldSymfonyFolder); } // A protection measure for already installed systems. if (isAlreadyInstalledSystem()) { // The system has already been installed, so block re-installation. $global_error_code = 6; require '../inc/global_error_message.inc.php'; exit; } /* STEP 1 : INITIALIZES FORM VARIABLES IF IT IS THE FIRST VISIT */ // Is valid request $is_valid_request = isset($_REQUEST['is_executable']) ? $_REQUEST['is_executable'] : null; $badUpdatePath = false; $emptyUpdatePath = true; $proposedUpdatePath = ''; if (!empty($_POST['updatePath'])) { $proposedUpdatePath = $_POST['updatePath']; } if (@$_POST['step2_install'] || @$_POST['step2_update_8'] || @$_POST['step2_update_6']) { if (@$_POST['step2_install']) { $installType = 'new'; $_POST['step2'] = 1; } else { $installType = 'update'; if (@$_POST['step2_update_8']) { $emptyUpdatePath = false; $proposedUpdatePath = api_add_trailing_slash(empty($_POST['updatePath']) ? api_get_path(SYS_PATH) : $_POST['updatePath']); if (file_exists($proposedUpdatePath)) { if (in_array($my_old_version, $update_from_version_8)) { $_POST['step2'] = 1; } else { $badUpdatePath = true; } } else { $badUpdatePath = true; } } } } elseif (@$_POST['step1']) { $_POST['updatePath'] = ''; $installType = ''; $updateFromConfigFile = ''; unset($_GET['running']); } else { $installType = isset($_GET['installType']) ? $_GET['installType'] : null; $updateFromConfigFile = isset($_GET['updateFromConfigFile']) ? $_GET['updateFromConfigFile'] : false; } if ($installType == 'update' && in_array($my_old_version, $update_from_version_8)) { // This is the main configuration file of the system before the upgrade. // Old configuration file. // Don't change to include_once $oldConfigPath = api_get_path(SYS_CODE_PATH).'inc/conf/configuration.php'; if (file_exists($oldConfigPath)) { include $oldConfigPath; } } $session_lifetime = 360000; if (!isset($_GET['running'])) { $dbHostForm = 'localhost'; $dbUsernameForm = 'root'; $dbPassForm = ''; $dbNameForm = 'chamilo'; $dbPortForm = 3306; // Extract the path to append to the url if Chamilo is not installed on the web root directory. $urlAppendPath = api_remove_trailing_slash(api_get_path(REL_PATH)); $urlForm = api_get_path(WEB_PATH); $pathForm = api_get_path(SYS_PATH); $emailForm = 'webmaster@localhost'; if (!empty($_SERVER['SERVER_ADMIN'])) { $emailForm = $_SERVER['SERVER_ADMIN']; } $email_parts = explode('@', $emailForm); if (isset($email_parts[1]) && $email_parts[1] == 'localhost') { $emailForm .= '.localdomain'; } $adminLastName = get_lang('DefaultInstallAdminLastname'); $adminFirstName = get_lang('DefaultInstallAdminFirstname'); $loginForm = 'admin'; $passForm = api_generate_password(); $campusForm = 'My campus'; $educationForm = 'Albert Einstein'; $adminPhoneForm = '(000) 001 02 03'; $institutionForm = 'My Organisation'; $institutionUrlForm = 'http://www.chamilo.org'; $languageForm = api_get_interface_language(); $checkEmailByHashSent = 0; $ShowEmailNotCheckedToStudent = 1; $userMailCanBeEmpty = 1; $allowSelfReg = 'approval'; $allowSelfRegProf = 1; //by default, a user can register as teacher (but moderation might be in place) $encryptPassForm = 'bcrypt'; if (!empty($_GET['profile'])) { $installationProfile = api_htmlentities($_GET['profile'], ENT_QUOTES); } } else { foreach ($_POST as $key => $val) { $magic_quotes_gpc = ini_get('magic_quotes_gpc'); if (is_string($val)) { if ($magic_quotes_gpc) { $val = stripslashes($val); } $val = trim($val); $_POST[$key] = $val; } elseif (is_array($val)) { foreach ($val as $key2 => $val2) { if ($magic_quotes_gpc) { $val2 = stripslashes($val2); } $val2 = trim($val2); $_POST[$key][$key2] = $val2; } } $GLOBALS[$key] = $_POST[$key]; } } /* NEXT STEPS IMPLEMENTATION */ $total_steps = 7; if (!$_POST) { $current_step = 1; } elseif (!empty($_POST['language_list']) or !empty($_POST['step1']) or ((!empty($_POST['step2_update_8']) or (!empty($_POST['step2_update_6']))) && ($emptyUpdatePath or $badUpdatePath))) { $current_step = 2; } elseif (!empty($_POST['step2']) or (!empty($_POST['step2_update_8']) or (!empty($_POST['step2_update_6'])))) { $current_step = 3; } elseif (!empty($_POST['step3'])) { $current_step = 4; } elseif (!empty($_POST['step4'])) { $current_step = 5; } elseif (!empty($_POST['step5'])) { $current_step = 6; } elseif (@$_POST['step6']) { $current_step = 7; } // Managing the $encryptPassForm if ($encryptPassForm == '1') { $encryptPassForm = 'bcrypt'; } elseif ($encryptPassForm == '0') { $encryptPassForm = 'none'; } ?> — <?php echo get_lang('ChamiloInstallation').' — '.get_lang('Version_').' '.$new_version; ?>

'.$instalation_type_label.'

'; } if (empty($installationProfile)) { $installationProfile = ''; if (!empty($_POST['installationProfile'])) { $installationProfile = api_htmlentities($_POST['installationProfile']); } } ?> getManager(); $tmp = get_config_param_from_db('platformLanguage'); if (!empty($tmp)) { $languageForm = $tmp; } $tmp = get_config_param_from_db('emailAdministrator'); if (!empty($tmp)) { $emailForm = $tmp; } $tmp = get_config_param_from_db('administratorName'); if (!empty($tmp)) { $adminFirstName = $tmp; } $tmp = get_config_param_from_db('administratorSurname'); if (!empty($tmp)) { $adminLastName = $tmp; } $tmp = get_config_param_from_db('administratorTelephone'); if (!empty($tmp)) { $adminPhoneForm = $tmp; } $tmp = get_config_param_from_db('siteName'); if (!empty($tmp)) { $campusForm = $tmp; } $tmp = get_config_param_from_db('Institution'); if (!empty($tmp)) { $institutionForm = $tmp; } $tmp = get_config_param_from_db('InstitutionUrl'); if (!empty($tmp)) { $institutionUrlForm = $tmp; } // For version 1.9 $urlForm = $_configuration['root_web']; $encryptPassForm = get_config_param('password_encryption'); // Managing the $encryptPassForm if ($encryptPassForm == '1') { $encryptPassForm = 'sha1'; } elseif ($encryptPassForm == '0') { $encryptPassForm = 'none'; } $allowSelfReg = 'approval'; $tmp = get_config_param_from_db('allow_registration'); if (!empty($tmp)) { $allowSelfReg = $tmp; } $allowSelfRegProf = false; $tmp = get_config_param_from_db('allow_registration_as_teacher'); if (!empty($tmp)) { $allowSelfRegProf = $tmp; } } display_configuration_settings_form( $installType, $urlForm, $languageForm, $emailForm, $adminFirstName, $adminLastName, $adminPhoneForm, $campusForm, $institutionForm, $institutionUrlForm, $encryptPassForm, $allowSelfReg, $allowSelfRegProf, $loginForm, $passForm ); } elseif (@$_POST['step5']) { //STEP 6 : LAST CHECK BEFORE INSTALL?>

'.$loginForm.'
'; echo get_lang('AdminPass').' : '.$passForm.'

'; /* TODO: Maybe this password should be hidden too? */ } $allowSelfRegistrationLiteral = ($allowSelfReg == 'true') ? get_lang('Yes') : ($allowSelfReg == 'approval' ? get_lang('Approval') : get_lang('No')); echo get_lang('AdminFirstName').' : '.$adminFirstName, '
', get_lang('AdminLastName').' : '.$adminLastName, '
'; echo get_lang('AdminEmail').' : '.$emailForm; ?>







'.$dbNameForm; ?>








'.get_lang( 'Warning' ).''.get_lang('TheInstallScriptWillEraseAllTables'), 'warning', false ); } ?>

'.display_step_sequence().$msg.'

'; if (!empty($installationProfile)) { echo '

('.$installationProfile.')

'; } echo '
'.get_lang('PleaseWaitThisCouldTakeAWhile').'
100% Complete
'; // Push the web server to send these strings before we start the real // installation process flush(); $f = ob_get_contents(); if (!empty($f)) { ob_flush(); //#5565 } if ($installType == 'update') { $database = connectToDatabase( $dbHostForm, $dbUsernameForm, $dbPassForm, $dbNameForm, $dbPortForm ); $manager = $database->getManager(); $perm = api_get_permissions_for_new_directories(); $perm_file = api_get_permissions_for_new_files(); migrateSwitch($my_old_version, $manager); } else { set_file_folder_permissions(); $database = connectToDatabase( $dbHostForm, $dbUsernameForm, $dbPassForm, null, $dbPortForm ); $manager = $database->getManager(); $dbNameForm = preg_replace('/[^a-zA-Z0-9_\-]/', '', $dbNameForm); // Drop and create the database anyways $manager->getConnection()->getSchemaManager()->dropAndCreateDatabase($dbNameForm); $database = connectToDatabase( $dbHostForm, $dbUsernameForm, $dbPassForm, $dbNameForm, $dbPortForm ); $manager = $database->getManager(); $sql = getVersionTable(); $manager->getConnection()->executeQuery($sql); $envFile = api_get_path(SYS_PATH).'.env'; $params = [ '{{DATABASE_HOST}}' => $dbHostForm, '{{DATABASE_PORT}}' => $dbPortForm, '{{DATABASE_NAME}}' => $dbNameForm, '{{DATABASE_USER}}' => $dbUsernameForm, '{{DATABASE_PASSWORD}}' => $dbPassForm, '{{APP_INSTALLED}}' => 1, '{{APP_ENCRYPT_METHOD}}' => $encryptPassForm ]; updateEnvFile($envFile, $params); (new Dotenv())->load($envFile); $kernel = new Kernel('dev', true); $application = new Application($kernel); $input = new \Symfony\Component\Console\Input\ArrayInput([]); $command = $application->find('doctrine:schema:create'); $result = $command->run($input, new ConsoleOutput()); // No errors if ($result == 0) { $kernel->boot(); $doctrine = $kernel->getContainer()->get('doctrine'); $manager = $doctrine->getManager(); $sysPath = api_get_path(SYS_PATH); finishInstallation( $manager, $sysPath, $encryptPassForm, $passForm, $adminLastName, $adminFirstName, $loginForm, $emailForm, $adminPhoneForm, $languageForm, $institutionForm, $institutionUrlForm, $campusForm, $allowSelfReg, $allowSelfRegProf, $installationProfile ); include 'install_files.inc.php'; } } display_after_install_message($installType); // Hide the "please wait" message sent previously echo ''; } elseif (@$_POST['step1'] || $badUpdatePath) { //STEP 1 : REQUIREMENTS //make sure that proposed path is set, shouldn't be necessary but... if (empty($proposedUpdatePath)) { $proposedUpdatePath = $_POST['updatePath']; } display_requirements($installType, $badUpdatePath, $proposedUpdatePath, $update_from_version_8); } else { // This is the start screen. display_language_selection(); if (!empty($_GET['profile'])) { $installationProfile = api_htmlentities($_GET['profile'], ENT_QUOTES); } echo ''; } $poweredBy = 'Powered by Chamilo © '.date('Y'); ?>
Chamilo
  1. >
  2. >
  3. >
  4. >
  5. >
  6. >
  7. >