addLoader('po', new PoFileLoader()); $translator->addResource('po', "../../translations/installation.$installationLanguage.po", $installationLanguage); Container::$translator = $translator; // The function api_get_setting() might be called within the installation scripts. // We need to provide some limited support for it through initialization of the // global array-type variable $_setting. $_setting = [ 'platform_charset' => 'UTF-8', 'server_type' => 'production', // 'production' | 'test' 'permissions_for_new_directories' => '0770', 'permissions_for_new_files' => '0660', 'stylesheets' => 'chamilo', ]; $encryptPassForm = 'bcrypt'; $urlAppendPath = ''; $urlForm = ''; $pathForm = ''; $emailForm = ''; $dbHostForm = 'localhost'; $dbUsernameForm = 'root'; $dbPassForm = ''; $dbNameForm = 'chamilo'; $dbPortForm = 3306; $allowSelfReg = 'approval'; $allowSelfRegProf = 1; $adminLastName = get_lang('Doe'); $adminFirstName = get_lang('John'); $loginForm = 'admin'; $passForm = ''; $institutionUrlForm = 'http://www.chamilo.org'; $languageForm = ''; $campusForm = 'My campus'; $educationForm = 'Albert Einstein'; $adminPhoneForm = '(000) 001 02 03'; $institutionForm = 'My Organisation'; $session_lifetime = 360000; //$installLanguage = isset($_SESSION['install_language']) ? $_SESSION['install_language'] : 'english'; $installLanguage = ''; $installationGuideLink = '../../documentation/installation_guide.html'; // Enables the portability layer and configures PHP for UTF-8 \Patchwork\Utf8\Bootup::initAll(); // Setting the error reporting levels. error_reporting(E_ALL); // 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', '1.11.11', '1.11.12', '1.11.14', ]; $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'; // 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 */ $badUpdatePath = false; $emptyUpdatePath = true; $proposedUpdatePath = ''; if (!empty($_POST['updatePath'])) { $proposedUpdatePath = $_POST['updatePath']; } if (isset($_POST['step2_install']) || isset($_POST['step2_update_8']) || isset($_POST['step2_update_6'])) { if (isset($_POST['step2_install'])) { $installType = 'new'; $_POST['step2'] = 1; } else { $installType = 'update'; if (isset($_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 (isset($_POST['step1'])) { $_POST['updatePath'] = ''; $installType = ''; $updateFromConfigFile = ''; unset($_GET['running']); } else { $installType = isset($_GET['installType']) ? $_GET['installType'] : ''; $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; } } $showEmailNotCheckedToStudent = 1; if (!isset($_GET['running'])) { // 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'; } $loginForm = 'admin'; $passForm = api_generate_password(); $institutionUrlForm = 'http://www.chamilo.org'; $languageForm = api_get_interface_language(); $checkEmailByHashSent = 0; $userMailCanBeEmpty = 1; $allowSelfReg = 'approval'; $allowSelfRegProf = 1; //by default, a user can register as teacher (but moderation might be in place) if (!empty($_GET['profile'])) { $installationProfile = api_htmlentities($_GET['profile'], ENT_QUOTES); } } else { foreach ($_POST as $key => $val) { if (is_string($val)) { $val = trim($val); $_POST[$key] = $val; } elseif (is_array($val)) { foreach ($val as $key2 => $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']) || ((!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 (isset($_POST['step6'])) { $current_step = 7; } // Managing the $encryptPassForm if ($encryptPassForm == '1') { $encryptPassForm = 'bcrypt'; } elseif ($encryptPassForm == '0') { $encryptPassForm = 'none'; } $form = ''; $instalation_type_label = ''; if ($installType == 'new') { $instalation_type_label = get_lang('New installation'); } elseif ($installType == 'update') { $update_from_version = isset($update_from_version) ? $update_from_version : null; $instalation_type_label = get_lang('Update from Chamilo').(is_array($update_from_version) ? implode('|', $update_from_version) : ''); } if (!empty($instalation_type_label) && empty($_POST['step6'])) { $form .= ''; } if (empty($installationProfile)) { $installationProfile = ''; if (!empty($_POST['installationProfile'])) { $installationProfile = api_htmlentities($_POST['installationProfile']); } } $institutionUrlFormResult = api_stristr($institutionUrlForm, 'http://', false) ? api_htmlentities($institutionUrlForm, ENT_QUOTES) : api_stristr($institutionUrlForm, 'https://', false) ? api_htmlentities($institutionUrlForm, ENT_QUOTES) : 'http://'.api_htmlentities($institutionUrlForm, ENT_QUOTES); $form .= ''; $form .= ''; $form .= ''; $form .= ''; $form .= ''; $form .= ''; $form .= ''; $form .= ''; $form .= ''; $form .= ''; $form .= ''; $form .= ''; $form .= ''; $form .= ''; $form .= ''; $form .= ''; $form .= ''; $form .= ''; $form .= ''; $form .= ''; $form .= ''; $form .= ''; $form .= ''; $form .= ''; $form .= ''; $form .= ''; $form .= ''; $form .= ''; $form .= ''; $form .= ''; if (isset($_POST['step2'])) { // STEP 3 : LICENSE ob_start(); display_license_agreement(); $form .= ob_get_contents(); ob_end_clean(); } elseif (isset($_POST['step3'])) { // STEP 4 : MYSQL DATABASE SETTINGS ob_start(); display_database_settings_form( $installType, $dbHostForm, $dbUsernameForm, $dbPassForm, $dbNameForm, $dbPortForm, $installationProfile ); $form .= ob_get_contents(); ob_end_clean(); } elseif (isset($_POST['step4'])) { //STEP 5 : CONFIGURATION SETTINGS //if update, try getting settings from the database... if ($installType === 'update') { $db_name = $dbNameForm; $database = connectToDatabase( $dbHostForm, $dbUsernameForm, $dbPassForm, $dbNameForm, $dbPortForm ); $manager = $database->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 $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; } } ob_start(); display_configuration_settings_form( $installType, $urlForm, $languageForm, $emailForm, $adminFirstName, $adminLastName, $adminPhoneForm, $campusForm, $institutionForm, $institutionUrlForm, $encryptPassForm, $allowSelfReg, $allowSelfRegProf, $loginForm, $passForm ); $form .= ob_get_contents(); ob_end_clean(); } elseif (isset($_POST['step5'])) { ob_start(); //STEP 6 : LAST CHECK BEFORE INSTALL?>

'.$loginForm.'
'; echo get_lang('Administrator password (you may want to change this)').' : '.$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('Administrator first name').' : '.$adminFirstName, '
', get_lang('Administrator last name').' : '.$adminLastName, '
'; echo get_lang('Administrator e-mail').' : '.$emailForm; ?>







'.$dbNameForm; ?>








'.get_lang( 'Warning' ).''.get_lang('The install script will erase all tables of the selected database. We heavily recommend you do a full backup of them before confirming this last install step.'), 'warning', false ); } ?>

'.display_step_sequence().$msg.'

'; if (!empty($installationProfile)) { $form .= '

('.$installationProfile.')

'; } $form .= '
'.get_lang('Please wait. This could take a while...').'
100% Complete
'; 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); // Create .env.local file $envFile = api_get_path(SYS_PATH).'.env.local'; $distFile = 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, '{{APP_URL_APPEND}}' => $urlAppendPath, ]; error_log('Update env file'); updateEnvFile($distFile, $envFile, $params); (new Dotenv())->load($envFile); // Load Symfony Kernel $kernel = new Kernel('dev', true); $application = new Application($kernel); error_log('Set Kernel'); session_unset(); $_SESSION = []; session_destroy(); // No errors //if ($result == 0) { // Boot kernel and get the doctrine from Symfony container $kernel->boot(); error_log('Boot'); $containerDatabase = $kernel->getContainer(); upgradeWithContainer($containerDatabase); error_log('Set upgradeWithContainer'); } 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(); // Create .env.local file $envFile = api_get_path(SYS_PATH).'.env.local'; $distFile = 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, '{{APP_URL_APPEND}}' => $urlAppendPath, ]; updateEnvFile($distFile, $envFile, $params); (new Dotenv())->load($envFile); // Load Symfony Kernel $kernel = new Kernel('dev', true); $application = new Application($kernel); // Create database $input = new ArrayInput([]); $command = $application->find('doctrine:schema:create'); $result = $command->run($input, new ConsoleOutput()); // No errors if ($result == 0) { session_unset(); $_SESSION = []; session_destroy(); // Boot kernel and get the doctrine from Symfony container $kernel->boot(); $containerDatabase = $kernel->getContainer(); $sysPath = api_get_path(SYS_PATH); finishInstallationWithContainer( $containerDatabase, $sysPath, $encryptPassForm, $passForm, $adminLastName, $adminFirstName, $loginForm, $emailForm, $adminPhoneForm, $languageForm, $institutionForm, $institutionUrlForm, $campusForm, $allowSelfReg, $allowSelfRegProf, $installationProfile ); include 'install_files.inc.php'; } } $form .= display_after_install_message(); // Hide the "please wait" message sent previously $form .= ''; $form .= ob_get_contents(); ob_end_clean(); } elseif (isset($_POST['step1']) || $badUpdatePath) { //STEP 1 : REQUIREMENTS //make sure that proposed path is set, shouldn't be necessary but... if (empty($proposedUpdatePath)) { $proposedUpdatePath = $_POST['updatePath']; } ob_start(); display_requirements($installType, $badUpdatePath, $proposedUpdatePath, $update_from_version_8); $form .= ob_get_contents(); ob_end_clean(); } else { ob_start(); // This is the start screen. display_language_selection(); if (!empty($_GET['profile'])) { $installationProfile = api_htmlentities($_GET['profile'], ENT_QUOTES); } echo ''; $form .= ob_get_contents(); ob_end_clean(); } $poweredBy = 'Powered by Chamilo © '.date('Y'); ?> — <?php echo $translator->trans('Chamilo installation').' — '.$translator->trans('Version').' '.$new_version; ?>
Chamilo
  1. 1 trans('Installation language'); ?>
  2. 2 trans('Requirements'); ?>
  3. 3 trans('Licence'); ?>
  4. 4 trans('MySQL database settings'); ?>
  5. 5 trans('Config settings'); ?>
  6. 6 trans('Show Overview'); ?>
  7. 7 trans('Install'); ?>