Remove 1.6/1.8 code use Doctrine to query the DB.

1.10.x
Julio Montoya 10 years ago
parent 6f9a275ca5
commit 588d847e00
  1. 83
      main/install/index.php
  2. 242
      main/install/install.lib.php
  3. 18
      main/install/install_db.inc.php

@ -103,7 +103,6 @@ error_reporting(E_ALL);
// Overriding the timelimit (for large campusses that have to be migrated). // Overriding the timelimit (for large campusses that have to be migrated).
@set_time_limit(0); @set_time_limit(0);
$update_from_version_6 = array();
// Upgrading from any subversion of 1.9 // 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'); $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');
@ -168,25 +167,6 @@ if (@$_POST['step2_install'] || @$_POST['step2_update_8'] || @$_POST['step2_upda
} else { } else {
$badUpdatePath = true; $badUpdatePath = true;
} }
} else { //step2_update_6, presumably
if (empty($_POST['updatePath'])) {
$_POST['step1'] = 1;
} else {
$emptyUpdatePath = false;
$_POST['updatePath'] = api_add_trailing_slash($_POST['updatePath']);
if (file_exists($_POST['updatePath'])) {
//1.6.x
$my_old_version = get_config_param('clarolineVersion', $_POST['updatePath']);
if (in_array($my_old_version, $update_from_version_6)) {
$_POST['step2'] = 1;
$proposedUpdatePath = $_POST['updatePath'];
} else {
$badUpdatePath = true;
}
} else {
$badUpdatePath = true;
}
}
} }
} }
} elseif (@$_POST['step1']) { } elseif (@$_POST['step1']) {
@ -606,40 +586,23 @@ if (@$_POST['step2']) {
$tmp = get_config_param_from_db($dbHostForm, $dbUsernameForm, $dbPassForm, $db_name, 'InstitutionUrl'); $tmp = get_config_param_from_db($dbHostForm, $dbUsernameForm, $dbPassForm, $db_name, 'InstitutionUrl');
if (!empty($tmp)) $institutionUrlForm = $tmp; if (!empty($tmp)) $institutionUrlForm = $tmp;
if (in_array($my_old_version, $update_from_version_6)) { //for version 1.6 // For version 1.9
$urlForm = get_config_param('rootWeb'); $urlForm = $_configuration['root_web'];
$encryptPassForm = get_config_param('userPasswordCrypted'); $encryptPassForm = get_config_param('userPasswordCrypted');
if (empty($encryptPassForm)) { // Managing the $encryptPassForm
$encryptPassForm = get_config_param('password_encryption'); if ($encryptPassForm == '1') {
} $encryptPassForm = 'sha1';
// Managing the $encryptPassForm } elseif ($encryptPassForm == '0') {
if ($encryptPassForm == '1') { $encryptPassForm = 'none';
$encryptPassForm = 'sha1'; }
} elseif ($encryptPassForm == '0') {
$encryptPassForm = 'none';
}
$allowSelfReg = get_config_param('allowSelfReg');
$allowSelfRegProf = get_config_param('allowSelfRegProf');
} else { //for version 1.8
$urlForm = $_configuration['root_web'];
$encryptPassForm = get_config_param('userPasswordCrypted');
// Managing the $encryptPassForm
if ($encryptPassForm == '1') {
$encryptPassForm = 'sha1';
} elseif ($encryptPassForm == '0') {
$encryptPassForm = 'none';
}
$allowSelfReg = false; $allowSelfReg = false;
$tmp = get_config_param_from_db($dbHostForm, $dbUsernameForm, $dbPassForm, $db_name, 'allow_registration'); $tmp = get_config_param_from_db($dbHostForm, $dbUsernameForm, $dbPassForm, $db_name, 'allow_registration');
if (!empty($tmp)) $allowSelfReg = $tmp; if (!empty($tmp)) $allowSelfReg = $tmp;
$allowSelfRegProf = false; $allowSelfRegProf = false;
$tmp = get_config_param_from_db($dbHostForm, $dbUsernameForm, $dbPassForm, $db_name, 'allow_registration_as_teacher'); $tmp = get_config_param_from_db($dbHostForm, $dbUsernameForm, $dbPassForm, $db_name, 'allow_registration_as_teacher');
if (!empty($tmp)) $allowSelfRegProf = $tmp; if (!empty($tmp)) $allowSelfRegProf = $tmp;
}
} }
display_configuration_settings_form( display_configuration_settings_form(
@ -774,7 +737,6 @@ if (@$_POST['step2']) {
if (empty($my_old_version)) { $my_old_version = '1.8.6.2'; } //we guess if (empty($my_old_version)) { $my_old_version = '1.8.6.2'; } //we guess
$_configuration['main_database'] = $dbNameForm; $_configuration['main_database'] = $dbNameForm;
//$urlAppendPath = get_config_param('urlAppend');
Log::notice('Starting migration process from '.$my_old_version.' ('.time().')'); Log::notice('Starting migration process from '.$my_old_version.' ('.time().')');
if ($userPasswordCrypted == '1') { if ($userPasswordCrypted == '1') {
@ -813,7 +775,6 @@ if (@$_POST['step2']) {
} else { } else {
set_file_folder_permissions(); set_file_folder_permissions();
//database_server_connect();
$manager = testDbConnect( $manager = testDbConnect(
$dbHostForm, $dbHostForm,
$dbUsernameForm, $dbUsernameForm,
@ -822,11 +783,11 @@ if (@$_POST['step2']) {
); );
// Initialization of the database encoding to be used. // Initialization of the database encoding to be used.
Database::query("SET storage_engine = MYISAM;"); Database::query("SET storage_engine = INNODB;");
Database::query("SET SESSION character_set_server='utf8';"); //Database::query("SET SESSION character_set_server='utf8';");
Database::query("SET SESSION collation_server='utf8_general_ci';"); //Database::query("SET SESSION collation_server='utf8_general_ci';");
//Database::query("SET CHARACTER SET 'utf8';"); // See task #1802. //Database::query("SET CHARACTER SET 'utf8';"); // See task #1802.
Database::query("SET NAMES 'utf8';"); //Database::query("SET NAMES 'utf8';");
include 'install_db.inc.php'; include 'install_db.inc.php';
include 'install_files.inc.php'; include 'install_files.inc.php';
@ -839,8 +800,10 @@ if (@$_POST['step2']) {
} elseif (@$_POST['step1'] || $badUpdatePath) { } elseif (@$_POST['step1'] || $badUpdatePath) {
//STEP 1 : REQUIREMENTS //STEP 1 : REQUIREMENTS
//make sure that proposed path is set, shouldn't be necessary but... //make sure that proposed path is set, shouldn't be necessary but...
if (empty($proposedUpdatePath)) { $proposedUpdatePath = $_POST['updatePath']; } if (empty($proposedUpdatePath)) {
display_requirements($installType, $badUpdatePath, $proposedUpdatePath, $update_from_version_8, $update_from_version_6); $proposedUpdatePath = $_POST['updatePath'];
}
display_requirements($installType, $badUpdatePath, $proposedUpdatePath, $update_from_version_8);
} else { } else {
// This is the start screen. // This is the start screen.
display_language_selection(); display_language_selection();

@ -690,6 +690,7 @@ function fill_track_countries_table($trackCountriesTable)
*/ */
function load_main_database($installation_settings, $dbScript = '') function load_main_database($installation_settings, $dbScript = '')
{ {
$sql_text = null;
if (!empty($dbScript)) { if (!empty($dbScript)) {
if (file_exists($dbScript)) { if (file_exists($dbScript)) {
$sql_text = file_get_contents($dbScript); $sql_text = file_get_contents($dbScript);
@ -708,168 +709,10 @@ function load_main_database($installation_settings, $dbScript = '')
} }
global $manager; global $manager;
$manager->getConnection()->prepare($sql_text); $result = $manager->getConnection()->prepare($sql_text);
//parse_sql_queries($sql_text); $result->execute();
} }
/**
* Creates the structure of the stats database
* @param string $dbScript Name of the file containing the SQL script inside the install directory
*/
function load_database_script($dbScript)
{
$dbScript = api_get_path(SYS_CODE_PATH).'install/'.$dbScript;
if (file_exists($dbScript)) {
$sql_text = file_get_contents($dbScript);
}
parse_sql_queries($sql_text);
}
/**
* Parse SQL queries
* @param string $sql_text SQL code
*/
function parse_sql_queries($sql_text)
{
//split in array of sql strings
$sql_instructions = array();
split_sql_file($sql_instructions, $sql_text);
//execute the sql instructions
$count = count($sql_instructions);
for ($i = 0; $i < $count; $i++) {
$this_sql_query = $sql_instructions[$i]['query'];
Database::query($this_sql_query);
//UTF8 fix see #5678
/*
if (strpos(strtolower($this_sql_query), 'create table') === false) {
Database::query($this_sql_query);
} else {
//$this_sql_query .= substr($this_sql_query, strlen($this_sql_query), strlen($this_sql_query)-1);
$this_sql_query .= ' DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci ';
Database::query($this_sql_query);
}*/
}
}
/**
* Function copied and adapted from phpMyAdmin 2.6.0 PMA_splitSqlFile (also GNU GPL)
* Removes comment lines and splits up large sql files into individual queries
* Last revision: September 23, 2001 - gandon
* @param array $ret the split sql commands
* @param string $sql the sql commands
* @return boolean always true
*/
function split_sql_file(&$ret, $sql)
{
// do not trim, see bug #1030644
//$sql = trim($sql);
$sql = rtrim($sql, "\n\r");
$sql_len = strlen($sql);
$char = '';
$string_start = '';
$in_string = false;
$nothing = true;
$time0 = time();
for ($i = 0; $i < $sql_len; ++$i) {
$char = $sql[$i];
// We are in a string, check for not escaped end of strings except for
// back-quotes that can't be escaped
if ($in_string) {
for (;;) {
$i = strpos($sql, $string_start, $i);
// No end of string found -> add the current substring to the
// returned array
if (!$i) {
$ret[] = $sql;
return true;
} elseif ($string_start == '`' || $sql[$i - 1] != '\\') {
// Back-quotes or no backslashes before quotes: it's indeed the
// end of the string -> exit the loop
$string_start = '';
$in_string = false;
break;
} else { // one or more Backslashes before the presumed end of string...
// ... first checks for escaped backslashes
$j = 2;
$escaped_backslash = false;
while ($i - $j > 0 && $sql[$i - $j] == '\\') {
$escaped_backslash = !$escaped_backslash;
$j++;
}
// ... if escaped backslashes: it's really the end of the
// string -> exit the loop
if ($escaped_backslash) {
$string_start = '';
$in_string = false;
break;
} else { // ... else loop
$i++;
}
} // end if...elseif...else
} // end for
// end if (in string)
// lets skip comments (/*, -- and #)
} elseif (($char == '-' && $sql_len > $i + 2 && $sql[$i + 1] == '-' && $sql[$i + 2] <= ' ') ||
$char == '#' ||
($char == '/' && $sql_len > $i + 1 && $sql[$i + 1] == '*')
) {
$i = strpos($sql, $char == '/' ? '*/' : "\n", $i);
// didn't we hit end of string?
if ($i === false) {
break;
}
if ($char == '/') {
$i++;
}
// We are not in a string, first check for delimiter...
} elseif ($char == ';') {
// if delimiter found, add the parsed part to the returned array
$ret[] = array('query' => substr($sql, 0, $i), 'empty' => $nothing);
$nothing = true;
$sql = ltrim(substr($sql, min($i + 1, $sql_len)));
$sql_len = strlen($sql);
if ($sql_len) {
$i = -1;
} else {
// The submitted statement(s) end(s) here
return true;
}
// end elseif (is delimiter)
// ... then check for start of a string,...
} elseif (($char == '"') || ($char == '\'') || ($char == '`')) {
$in_string = true;
$nothing = false;
$string_start = $char;
// end elseif (is start of string)
} elseif ($nothing) {
$nothing = false;
}
// Send a fake header each 30 sec. to bypass browser timeout
$time1 = time();
if ($time1 >= $time0 + 30) {
$time0 = $time1;
header('X-pmaPing: Pong');
} // end if
} // end for
// add any rest to the returned array
if (!empty($sql) && preg_match('@[^[:space:]]+@', $sql)) {
$ret[] = array('query' => $sql, 'empty' => $nothing);
}
return true;
} // end of the 'split_sql_file()' function
/** /**
* Get an SQL file's contents * Get an SQL file's contents
* *
@ -1085,8 +928,7 @@ function display_language_selection()
* @param string $installType * @param string $installType
* @param boolean $badUpdatePath * @param boolean $badUpdatePath
* @param string The updatePath given (if given) * @param string The updatePath given (if given)
* @param array $update_from_version_8 The different subversions from version 1.8 * @param array $update_from_version_8 The different subversions from version 1.9
* @param array $update_from_version_6 The different subversions from version 1.6
* *
* @author unknow * @author unknow
* @author Patrick Cool <patrick.cool@UGent.be>, Ghent University * @author Patrick Cool <patrick.cool@UGent.be>, Ghent University
@ -1095,8 +937,7 @@ function display_requirements(
$installType, $installType,
$badUpdatePath, $badUpdatePath,
$updatePath = '', $updatePath = '',
$update_from_version_8 = array(), $update_from_version_8 = array()
$update_from_version_6 = array()
) { ) {
global $_setting; global $_setting;
echo '<div class="RequirementHeading"><h2>'.display_step_sequence().get_lang('Requirements')."</h2></div>"; echo '<div class="RequirementHeading"><h2>'.display_step_sequence().get_lang('Requirements')."</h2></div>";
@ -1418,7 +1259,7 @@ function display_requirements(
if ($badUpdatePath) { ?> if ($badUpdatePath) { ?>
<div class="error-message"> <div class="error-message">
<?php echo get_lang('Error'); ?>!<br /> <?php echo get_lang('Error'); ?>!<br />
Chamilo <?php echo (isset($_POST['step2_update_6']) ? implode('|', $update_from_version_6) : implode('|', $update_from_version_8)).' '.get_lang('HasNotBeenFoundInThatDir'); ?>. Chamilo <?php echo implode('|', $update_from_version_8).' '.get_lang('HasNotBeenFoundInThatDir'); ?>.
</div> </div>
<?php } <?php }
else { else {
@ -1544,16 +1385,10 @@ function display_requirements(
<input type="hidden" name="is_executable" id="is_executable" value="-" /> <input type="hidden" name="is_executable" id="is_executable" value="-" />
<?php <?php
// Real code // Real code
echo '<button type="submit" class="btn btn-default" name="step2_update_8" value="Upgrade from Chamilo 1.8.x"'; echo '<button type="submit" class="btn btn-default" name="step2_update_8" value="Upgrade from Chamilo 1.9.x"';
if ($error) echo ' disabled="disabled"'; if ($error) echo ' disabled="disabled"';
// Temporary code for alpha version, disabling upgrade echo ' ><i class="fa fa-forward"> </i> '.get_lang('UpgradeFromLMS19x').'</button>';
//echo '<input type="submit" name="step2_update" value="Upgrading is not possible in this beta version"';
//echo ' disabled="disabled"';
//end temp code
echo ' ><i class="fa fa-forward"> </i> '.get_lang('UpgradeFromLMS18x').'</button>';
echo ' <button type="submit" class="btn btn-default" name="step2_update_6" value="Upgrade from Chamilo 1.6.x"';
if ($error) echo ' disabled="disabled"';
echo ' ><i class="fa fa-forward"> </i> '.get_lang('UpgradeFromLMS16x').'</button>';
echo '</p>'; echo '</p>';
} }
} }
@ -1814,9 +1649,6 @@ function display_database_settings_form(
echo get_lang('DBSettingUpgradeIntro'); echo get_lang('DBSettingUpgradeIntro');
echo '</div>'; echo '</div>';
} else { } else {
if (empty($dbPrefixForm)) { //make sure there is a default value for db prefix
$dbPrefixForm = '';
}
echo '<div class="RequirementHeading"><h2>' . display_step_sequence() .get_lang('DBSetting') . '</h2></div>'; echo '<div class="RequirementHeading"><h2>' . display_step_sequence() .get_lang('DBSetting') . '</h2></div>';
echo '<div class="RequirementContent">'; echo '<div class="RequirementContent">';
echo get_lang('DBSettingIntro'); echo get_lang('DBSettingIntro');
@ -1848,13 +1680,6 @@ function display_database_settings_form(
$example_password = get_lang('EG').' '.api_generate_password(); $example_password = get_lang('EG').' '.api_generate_password();
displayDatabaseParameter($installType, get_lang('DBPassword'), 'dbPassForm', $dbPassForm, $example_password); displayDatabaseParameter($installType, get_lang('DBPassword'), 'dbPassForm', $dbPassForm, $example_password);
echo '<input type="hidden" name="enableTrackingForm" value="1" />';
$style = '';
if ($installType == INSTALL_TYPE_UPDATE) {
$style = '';
}
//Database Name fix replace weird chars //Database Name fix replace weird chars
if ($installType != INSTALL_TYPE_UPDATE) { if ($installType != INSTALL_TYPE_UPDATE) {
$dbNameForm = str_replace(array('-','*', '$', ' ', '.'), '', $dbNameForm); $dbNameForm = str_replace(array('-','*', '$', ' ', '.'), '', $dbNameForm);
@ -1868,7 +1693,7 @@ function display_database_settings_form(
$dbNameForm, $dbNameForm,
'&nbsp;', '&nbsp;',
null, null,
'id="optional_param1" '.$style 'id="optional_param1"'
); );
?> ?>
@ -1886,53 +1711,34 @@ function display_database_settings_form(
<?php <?php
$database_exists_text = ''; $database_exists_text = '';
$manager = null;
try { try {
$manager = testDbConnect( $manager = testDbConnect(
$dbHostForm, $dbHostForm,
$dbUsernameForm, $dbUsernameForm,
$dbPassForm, $dbPassForm,
$dbNameForm null
); );
} catch (Exception $e) { $databases = $manager->getConnection()->getSchemaManager()->listDatabases();
$database_exists_text = $e->getMessage();
}
$databases = $manager->getConnection()->getSchemaManager()->listDatabases();
if (in_array($dbNameForm, $databases)) { if (in_array($dbNameForm, $databases)) {
$database_exists_text = '<div class="warning-message">'.get_lang('ADatabaseWithTheSameNameAlreadyExists').'</div>'; $database_exists_text = '<div class="warning-message">'.get_lang('ADatabaseWithTheSameNameAlreadyExists').'</div>';
} else {
if ($dbConnect == -1) {
$database_exists_text = '<div class="warning-message">'.sprintf(get_lang('UserXCantHaveAccessInTheDatabaseX'), $dbUsernameForm, $dbNameForm).'</div>';
} else { } else {
$manager->getConnection()->getSchemaManager()->createDatabase($dbNameForm); $manager->getConnection()->getSchemaManager()->createDatabase(
/* $dbNameForm
//Try to create the database );
$user_can_create_databases = false;
$multipleDbCheck = @Database::query("CREATE DATABASE ".mysql_real_escape_string($dbNameForm));
if ($multipleDbCheck !== false) {
$multipleDbCheck = @Database::query("DROP DATABASE IF EXISTS ".mysql_real_escape_string($dbNameForm));
$user_can_create_databases = true;
}
if ($user_can_create_databases) {
$database_exists_text = '<div class="normal-message">'.sprintf(get_lang('DatabaseXWillBeCreated'), $dbNameForm, $dbUsernameForm).'</div>';
} else {
$dbConnect = 0;
$database_exists_text = '<div class="warning-message">'.sprintf(get_lang('DatabaseXCantBeCreatedUserXDoestHaveEnoughPermissions'), $dbNameForm, $dbUsernameForm).'</div>';
}*/
} }
} catch (Exception $e) {
$database_exists_text = $e->getMessage();
} }
if ($manager): ?> if ($manager->getConnection()->isConnected()): ?>
<td colspan="2"> <td colspan="2">
<?php echo $database_exists_text ?> <?php echo $database_exists_text ?>
<div id="db_status" class="confirmation-message"> <div id="db_status" class="confirmation-message">
Database host: <strong><?php echo $manager->getConnection()->getHost(); ?></strong><br /> Database host: <strong><?php echo $manager->getConnection()->getHost(); ?></strong><br />
Database port: <strong><?php echo $manager->getConnection()->getPort(); ?></strong><br /> Database driver: <strong><?php echo $manager->getConnection()->getDriver()->getName(); ?></strong><br />
Database platform: <strong><?php echo $manager->getConnection()->getDatabasePlatform()->getName(); ?></strong><br />
<div style="clear:both;"></div> <div style="clear:both;"></div>
</div> </div>
</td> </td>
@ -2235,7 +2041,7 @@ function get_countries_list_from_array($combo = false)
} }
/** /**
* Lockis settings that can't be changed in other portals * Lock settings that can't be changed in other portals
*/ */
function locking_settings() function locking_settings()
{ {

@ -9,6 +9,7 @@
/* This page is called only during a NEW chamilo installation */ /* This page is called only during a NEW chamilo installation */
/* This page can only be access through including from the install script. */ /* This page can only be access through including from the install script. */
/** /**
* Init checks * Init checks
*/ */
@ -53,16 +54,6 @@ if (empty($mysqlMainDb) || $mysqlMainDb == 'mysql' || $mysqlMainDb == $dbPrefixF
$mysqlMainDb = $dbPrefixForm . 'main'; $mysqlMainDb = $dbPrefixForm . 'main';
} }
$mysqlStatsDb = $dbStatsForm;
if (empty($mysqlStatsDb) || $mysqlStatsDb == 'mysql' || $mysqlStatsDb == $dbPrefixForm) {
$mysqlStatsDb = $dbPrefixForm . 'stats';
}
$mysqlUserDb = $dbUserForm;
if (empty($mysqlUserDb) || $mysqlUserDb == 'mysql' || $mysqlUserDb == $dbPrefixForm) {
$mysqlUserDb = $dbPrefixForm . 'user';
}
//This parameter is needed to run a command line to install Chamilo using BNPanel + ISPConfig see #1799 //This parameter is needed to run a command line to install Chamilo using BNPanel + ISPConfig see #1799
if (!defined('CLI_INSTALLATION')) { if (!defined('CLI_INSTALLATION')) {
@ -80,7 +71,6 @@ if (!defined('CLI_INSTALLATION')) {
$create_database = false; $create_database = false;
} }
// Create database // Create database
if ($create_database) { if ($create_database) {
$manager->getConnection()->getSchemaManager()->createDatabase($mysqlMainDb); $manager->getConnection()->getSchemaManager()->createDatabase($mysqlMainDb);
@ -89,9 +79,6 @@ if (!defined('CLI_INSTALLATION')) {
} }
} }
$mysqlStatsDb = $mysqlMainDb;
$mysqlUserDb = $mysqlMainDb;
// This parameter is needed to run a command line install of Chamilo (needed for Phing) // This parameter is needed to run a command line install of Chamilo (needed for Phing)
if (!defined('CLI_INSTALLATION')) { if (!defined('CLI_INSTALLATION')) {
include_once api_get_path(SYS_LANG_PATH) . 'english/trad4all.inc.php'; include_once api_get_path(SYS_LANG_PATH) . 'english/trad4all.inc.php';
@ -122,9 +109,6 @@ AddCourse::drop_course_tables();
load_main_database($installation_settings); load_main_database($installation_settings);
$track_countries_table = "track_c_countries";
fill_track_countries_table($track_countries_table);
locking_settings(); locking_settings();
update_dir_and_files_permissions(); update_dir_and_files_permissions();

Loading…
Cancel
Save