'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 = array('../', '\\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 = array( '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' ); $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'; die(); } /* 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; /*foreach ($_POST as $request_index => $request_value) { if (substr($request_index, 0, 4) == 'step') { if ($request_index != $is_valid_request) { unset($_POST[$request_index]); } } }*/ $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; } } if (!isset($_GET['running'])) { $dbHostForm = 'localhost'; $dbUsernameForm = 'root'; $dbPassForm = ''; $dbNameForm = 'chamilo'; // 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 = 1; $allowSelfRegProf = 1; $encryptPassForm = 'sha1'; $session_lifetime = 360000; 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 = 'sha1'; } elseif ($encryptPassForm == '0') { $encryptPassForm = 'none'; } ?> — <?php echo get_lang('ChamiloInstallation').' — '.get_lang('Version_').' '.$new_version; ?>
'.get_lang('ChamiloInstallation').' – '.get_lang('Version_').' '.$new_version.''; ?>
  1. >
  2. >
  3. >
  4. >
  5. >
  6. >
  7. >

'.$instalation_type_label.'

'; } if (empty($installationProfile)) { $installationProfile = ''; if (!empty($_POST['installationProfile'])) { $installationProfile = api_htmlentities($_POST['installationProfile']); } } ?>

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

'; /* TODO: Maybe this password should be hidden too? */ } echo get_lang('AdminFirstName').' : '.$adminFirstName, '
', get_lang('AdminLastName').' : '.$adminLastName, '
'; echo get_lang('AdminEmail').' : '.$emailForm; ?>






'.$dbNameForm; ?>








'.get_lang( 'Warning' ).''.get_lang('TheInstallScriptWillEraseAllTables'), 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') { remove_memory_and_time_limits(); $manager = connectToDatabase( $dbHostForm, $dbUsernameForm, $dbPassForm, $dbNameForm ); $perm = api_get_permissions_for_new_directories(); $perm_file = api_get_permissions_for_new_files(); Log::notice('Starting migration process from '.$my_old_version.' ('.time().')'); switch ($my_old_version) { case '1.9.0': case '1.9.2': case '1.9.4': case '1.9.6': case '1.9.6.1': case '1.9.8': case '1.9.8.1': case '1.9.8.2': case '1.9.10': case '1.9.10.2': // Fix type "enum" before running the migration with Doctrine Database::query("ALTER TABLE course_category MODIFY COLUMN auth_course_child VARCHAR(40) DEFAULT 'TRUE'"); Database::query("ALTER TABLE course_category MODIFY COLUMN auth_cat_child VARCHAR(40) DEFAULT 'TRUE'"); Database::query("ALTER TABLE c_quiz_answer MODIFY COLUMN hotspot_type varchar(40) default NULL"); Database::query("ALTER TABLE c_tool MODIFY COLUMN target varchar(20) NOT NULL default '_self'"); Database::query("ALTER TABLE c_link MODIFY COLUMN on_homepage char(10) NOT NULL default '0'"); Database::query("ALTER TABLE c_blog_rating MODIFY COLUMN rating_type char(40) NOT NULL default 'post'"); Database::query("ALTER TABLE c_survey MODIFY COLUMN anonymous char(10) NOT NULL default '0'"); Database::query("ALTER TABLE c_document MODIFY COLUMN filetype char(10) NOT NULL default 'file'"); Database::query("ALTER TABLE c_student_publication MODIFY COLUMN filetype char(10) NOT NULL default 'file'"); // Migrate using the migration files located in: // src/Chamilo/CoreBundle/Migrations/Schema/V110 migrate( 110, $manager ); fixIds($manager); include 'update-files-1.9.0-1.10.0.inc.php'; // Only updates the configuration.inc.php with the new version include 'update-configuration.inc.php'; $configurationFiles = array( 'mail.conf.php', 'profile.conf.php', 'course_info.conf.php', 'add_course.conf.php', 'events.conf.php', 'auth.conf.php', 'portfolio.conf.php' ); foreach ($configurationFiles as $file) { if (file_exists(api_get_path(SYS_CODE_PATH) . 'inc/conf/'.$file)) { copy( api_get_path(SYS_CODE_PATH).'inc/conf/'.$file, api_get_path(CONFIGURATION_PATH).$file ); } } break; default: break; } } else { set_file_folder_permissions(); $manager = connectToDatabase( $dbHostForm, $dbUsernameForm, $dbPassForm, null ); $dbNameForm = preg_replace('/[^a-zA-Z0-9_\-]/', '', $dbNameForm); // Drop and create the database anyways $manager->getConnection()->getSchemaManager()->dropAndCreateDatabase($dbNameForm); $manager = connectToDatabase( $dbHostForm, $dbUsernameForm, $dbPassForm, $dbNameForm ); $metadataList = $manager->getMetadataFactory()->getAllMetadata(); $schema = $manager->getConnection()->getSchemaManager()->createSchema(); // Create database schema $tool = new \Doctrine\ORM\Tools\SchemaTool($manager); $tool->createSchema($metadataList); $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'); ?>