From a3db45b67a4ea8d8f3a2db43905e5ddabb800f0e Mon Sep 17 00:00:00 2001 From: Eric Marguin Date: Wed, 1 Aug 2007 10:42:54 +0200 Subject: [PATCH] [svn r12820] upgrade from 1.8.2 to 1.8.3 ... just some changes in MAIN sections changed --- main/install/index.php | 2 +- main/install/install_functions.inc.php | 5 +- main/install/update-db-1.8.2-1.8.3.inc.php | 314 +++++++++++++++++++++ 3 files changed, 318 insertions(+), 3 deletions(-) create mode 100644 main/install/update-db-1.8.2-1.8.3.inc.php diff --git a/main/install/index.php b/main/install/index.php index cdb46ba1c5..acc0705614 100644 --- a/main/install/index.php +++ b/main/install/index.php @@ -476,7 +476,7 @@ elseif($_POST['step6']) { $_configuration['main_database'] = $dbNameForm; //$urlAppendPath = get_config_param('urlAppend'); - include('update-db-1.8.0-1.8.2.inc.php'); + include('update-db-1.8.2-1.8.3.inc.php'); //include('update-files-1.8.0-1.8.2.inc.php'); } else diff --git a/main/install/install_functions.inc.php b/main/install/install_functions.inc.php index b7df50e9ad..57ca8ea613 100644 --- a/main/install/install_functions.inc.php +++ b/main/install/install_functions.inc.php @@ -952,10 +952,11 @@ function display_configuration_settings_form($installType, $urlForm, $languageFo display_configuration_parameter($installType, get_lang("AdminPhone"), "adminPhoneForm", $adminPhoneForm); //Parameter 7: administrator's login - display_configuration_parameter($installType, get_lang("AdminLogin"), "loginForm", $loginForm, false); + display_configuration_parameter($installType, get_lang("AdminLogin"), "loginForm", $loginForm, ($installType == 'update' ? true : false)); //Parameter 8: administrator's password - display_configuration_parameter($installType, get_lang("AdminPass"), "passForm", $passForm, false); + if($installType != 'update') + display_configuration_parameter($installType, get_lang("AdminPass"), "passForm", $passForm, false); //Parameter 9: campus name display_configuration_parameter($installType, get_lang("CampusName"), "campusForm", $campusForm); diff --git a/main/install/update-db-1.8.2-1.8.3.inc.php b/main/install/update-db-1.8.2-1.8.3.inc.php new file mode 100644 index 0000000000..bc341f285a --- /dev/null +++ b/main/install/update-db-1.8.2-1.8.3.inc.php @@ -0,0 +1,314 @@ +'.get_lang('Error').' ! Dokeos '.implode('|', $updateFromVersion).' '.get_lang('HasNotBeenFound').'.

+ '.get_lang('PleasGoBackToStep1').'. +

+ '; + + exit (); + } + + //get_config_param() comes from install_functions.inc.php and + //actually gets the param from + $_configuration['db_glue'] = get_config_param('dbGlu'); + + if ($singleDbForm) + { + $_configuration['table_prefix'] = get_config_param('courseTablePrefix'); + $_configuration['main_database'] = get_config_param('mainDbName'); + $_configuration['db_prefix'] = get_config_param('dbNamePrefix'); + } + + $dbScormForm = eregi_replace('[^a-z0-9_-]', '', $dbScormForm); + + if (!empty ($dbPrefixForm) && !ereg('^'.$dbPrefixForm, $dbScormForm)) + { + $dbScormForm = $dbPrefixForm.$dbScormForm; + } + + if (empty ($dbScormForm) || $dbScormForm == 'mysql' || $dbScormForm == $dbPrefixForm) + { + $dbScormForm = $dbPrefixForm.'scorm'; + } + @mysql_connect($dbHostForm, $dbUsernameForm, $dbPassForm); + + //if error on connection to the database, show error and exit + if (mysql_errno() > 0) + { + $no = mysql_errno(); + $msg = mysql_error(); + + echo '
['.$no.'] - '.$msg.'
+ '.get_lang('DBServerDoesntWorkOrLoginPassIsWrong').'.

+ '.get_lang('PleaseCheckTheseValues').' :

+ '.get_lang('DBHost').' : '.$dbHostForm.'
+ '.get_lang('DBLogin').' : '.$dbUsernameForm.'
+ '.get_lang('DBPassword').' : '.$dbPassForm.'

+ '.get_lang('PleaseGoBackToStep').' '. (defined('DOKEOS_INSTALL') ? '3' : '1').'. +

+ '; + + exit (); + } + + + $dblistres = mysql_list_dbs(); + $dblist = array(); + while ($row = mysql_fetch_object($dblistres)) { + $dblist[] = $row->Database; + } + /* + ----------------------------------------------------------- + Normal upgrade procedure: + start by updating main, statistic, user databases + ----------------------------------------------------------- + */ + //if this script has been included by index.php, not update_courses.php, so + // that we want to change the main databases as well... + $only_test = false; + $log = 0; + if (defined('DOKEOS_INSTALL')) + { + if ($singleDbForm) + { + $dbStatsForm = $dbNameForm; + $dbScormForm = $dbNameForm; + $dbUserForm = $dbNameForm; + } + /** + * Update the databases "pre" migration + */ + include ("../lang/english/create_course.inc.php"); + + if ($languageForm != 'english') + { + //languageForm has been escaped in index.php + include ("../lang/$languageForm/create_course.inc.php"); + } + + //get the main queries list (m_q_list) + $m_q_list = get_sql_file_contents('migrate-db-1.8.2-1.8.3-pre.sql','main'); + if(count($m_q_list)>0) + { + //now use the $m_q_list + /** + * We connect to the right DB first to make sure we can use the queries + * without a database name + */ + if(strlen($dbNameForm)>40){ + error_log('Database name '.$dbNameForm.' is too long, skipping',0); + }elseif(!in_array($dbNameForm,$dblist)){ + error_log('Database '.$dbNameForm.' was not found, skipping',0); + }else{ + mysql_select_db($dbNameForm); + foreach($m_q_list as $query){ + if($only_test){ + error_log("mysql_query($dbNameForm,$query)",0); + }else{ + $res = mysql_query($query); + if($log) + { + error_log("In $dbNameForm, executed: $query",0); + } + } + } + } + } + + //get the stats queries list (s_q_list) + $s_q_list = get_sql_file_contents('migrate-db-1.8.2-1.8.3-pre.sql','stats'); + + if(count($s_q_list)>0) + { + //now use the $s_q_list + /** + * We connect to the right DB first to make sure we can use the queries + * without a database name + */ + if(strlen($dbStatsForm)>40){ + error_log('Database name '.$dbStatsForm.' is too long, skipping',0); + }elseif(!in_array($dbStatsForm,$dblist)){ + error_log('Database '.$dbStatsForm.' was not found, skipping',0); + }else{ + mysql_select_db($dbStatsForm); + foreach($s_q_list as $query){ + if($only_test){ + error_log("mysql_query($dbStatsForm,$query)",0); + }else{ + $res = mysql_query($query); + if($log) + { + error_log("In $dbStatsForm, executed: $query",0); + } + } + } + } + } + //get the user queries list (u_q_list) + $u_q_list = get_sql_file_contents('migrate-db-1.8.2-1.8.3-pre.sql','user'); + if(count($u_q_list)>0) + { + //now use the $u_q_list + /** + * We connect to the right DB first to make sure we can use the queries + * without a database name + */ + if(strlen($dbUserForm)>40){ + error_log('Database name '.$dbUserForm.' is too long, skipping',0); + }elseif(!in_array($dbUserForm,$dblist)){ + error_log('Database '.$dbUserForm.' was not found, skipping',0); + }else{ + mysql_select_db($dbUserForm); + foreach($u_q_list as $query){ + if($only_test){ + error_log("mysql_query($dbUserForm,$query)",0); + error_log("In $dbUserForm, executed: $query",0); + }else{ + $res = mysql_query($query); + } + } + } + } + //the SCORM database doesn't need a change in the pre-migrate part - ignore + } + + /* + ----------------------------------------------------------- + Update the Dokeos course databases + this part can be accessed in two ways: + - from the normal upgrade process + - from the script update_courses.php, + which is used to upgrade more than MAX_COURSE_TRANSFER courses + + Every time this script is accessed, only + MAX_COURSE_TRANSFER courses are upgraded. + ----------------------------------------------------------- + */ + + $prefix = ''; + if ($singleDbForm) + { + $prefix = $_configuration['table_prefix']; + } + //get the courses databases queries list (c_q_list) + $c_q_list = get_sql_file_contents('migrate-db-1.8.2-1.8.3-pre.sql','course'); + if(count($c_q_list)>0) + { + //get the courses list + if(strlen($dbNameForm)>40){ + error_log('Database name '.$dbNameForm.' is too long, skipping',0); + }elseif(!in_array($dbNameForm,$dblist)){ + error_log('Database '.$dbNameForm.' was not found, skipping',0); + }else{ + mysql_select_db($dbNameForm); + $res = mysql_query("SELECT code,db_name,directory,course_language FROM course WHERE target_course_code IS NULL"); + if($res===false){die('Error while querying the courses list in update_db.inc.php');} + if(mysql_num_rows($res)>0) + { + $i=0; + //while( ($i < MAX_COURSE_TRANSFER) && ($row = mysql_fetch_array($res))) + while($row = mysql_fetch_array($res)) + { + $list[] = $row; + $i++; + } + foreach($list as $row_course) + { + //now use the $c_q_list + /** + * We connect to the right DB first to make sure we can use the queries + * without a database name + */ + if (!$singleDbForm) //otherwise just use the main one + { + mysql_select_db($row_course['db_name']); + } + + foreach($c_q_list as $query) + { + if ($singleDbForm) //otherwise just use the main one + { + $query = preg_replace('/^(UPDATE|ALTER TABLE|CREATE TABLE|DROP TABLE|INSERT INTO|DELETE FROM)\s+(\w*)(.*)$/',"$1 $prefix{$row_course['db_name']}_$2$3",$query); + } + + if($only_test) + { + error_log("mysql_query(".$row_course['db_name'].",$query)",0); + }else{ + $res = mysql_query($query); + if($log) + { + error_log("In ".$row_course['db_name'].", executed: $query",0); + } + } + } + } + } + } + } +} +else +{ + echo 'You are not allowed here !'; +} +?> \ No newline at end of file