index.php 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843
  1. <?php //$id: $
  2. /* For licensing terms, see /dokeos_license.txt */
  3. /**
  4. ==============================================================================
  5. * GOAL : Dokeos installation
  6. * As seen from the user, the installation proceeds in 6 steps.
  7. * The user is presented with several webpages where he/she has to make choices
  8. * and/or fill in data.
  9. *
  10. * The aim is, as always, to have good default settings and suggestions.
  11. *
  12. * @todo reduce high level of duplication in this code
  13. * @todo (busy) organise code into functions
  14. * @package dokeos.install
  15. ==============================================================================
  16. */
  17. /*
  18. ==============================================================================
  19. PHP VERSION CHECK & MBSTRING EXTENSION CHECK
  20. ==============================================================================
  21. */
  22. if ( !function_exists('version_compare') || version_compare( phpversion(), '5', '<' ) )
  23. {
  24. $error_message_php_version = <<<EOM
  25. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  26. <html>
  27. <head>
  28. <title>Wrong PHP version!</title>
  29. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  30. <style type="text/css" media="screen, projection">
  31. /*<![CDATA[*/
  32. @import "../css/public_admin/default.css";
  33. /*]]>*/
  34. </style>
  35. </head>
  36. <body>
  37. <div id="header">
  38. <div id="header1"><a href="http://www.dokeos.com" target="_blank">Dokeos Homepage</a></div>
  39. <div class="clear"></div>
  40. <div id="header2">&nbsp;</div>
  41. <div id="header3">&nbsp;</div>
  42. </div>
  43. <div style="text-align: center;"><br /><br />
  44. The version of scripting language on your server is wrong. Your server has to support PHP 5.x.x .<br />
  45. <a href="../../documentation/installation_guide.html" target="_blank">Read the installation guide.</a><br /><br />
  46. </div>
  47. <div id="footer">
  48. <div class="copyright">Platform <a href="http://www.dokeos.com" target="_blank"> Dokeos </a> &copy; 2009 </div>
  49. &nbsp;
  50. </div>
  51. </body>
  52. </html>
  53. EOM;
  54. header('Content-Type: text/html; charset=UTF-8');
  55. die($error_message_php_version);
  56. }
  57. if (!function_exists('mb_strlen'))
  58. {
  59. $error_message_mbstring = <<<EOM
  60. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  61. <html>
  62. <head>
  63. <title>PHP extension "mbstring" has not been installed!</title>
  64. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  65. <style type="text/css" media="screen, projection">
  66. /*<![CDATA[*/
  67. @import "../css/public_admin/default.css";
  68. /*]]>*/
  69. </style>
  70. </head>
  71. <body>
  72. <div id="header">
  73. <div id="header1"><a href="http://www.dokeos.com" target="_blank">Dokeos Homepage</a></div>
  74. <div class="clear"></div>
  75. <div id="header2">&nbsp;</div>
  76. <div id="header3">&nbsp;</div>
  77. </div>
  78. <div style="text-align: center;"><br /><br />
  79. The Dokeos system needs PHP extension <strong>mbstring</strong> to be installed.<br />
  80. See <a href="http://php.net/manual/en/mbstring.installation.php" target="_blank">http://php.net/manual/en/book.mbstring.php</a> for more information<br /><br />
  81. </div>
  82. <div id="footer">
  83. <div class="copyright">Platform <a href="http://www.dokeos.com" target="_blank"> Dokeos </a> &copy; 2009 </div>
  84. &nbsp;
  85. </div>
  86. </body>
  87. </html>
  88. EOM;
  89. header('Content-Type: text/html; charset=UTF-8');
  90. die($error_message_mbstring);
  91. }
  92. /*
  93. ==============================================================================
  94. INIT SECTION
  95. ==============================================================================
  96. */
  97. session_start();
  98. // Including necessary files
  99. @include '../inc/installedVersion.inc.php';
  100. require '../inc/lib/main_api.lib.php';
  101. require '../lang/english/trad4all.inc.php';
  102. require '../lang/english/install.inc.php';
  103. if (!empty($_POST['language_list']))
  104. {
  105. $search = array('../','\\0');
  106. $install_language = str_replace($search,'',urldecode($_POST['language_list']));
  107. if(!is_dir('../lang/'.$install_language)){$install_language = 'english';}
  108. include_once "../lang/$install_language/trad4all.inc.php";
  109. include_once "../lang/$install_language/install.inc.php";
  110. api_session_register('install_language');
  111. }
  112. elseif ( isset($_SESSION['install_language']) && $_SESSION['install_language'] )
  113. {
  114. $install_language = $_SESSION['install_language'];
  115. include_once "../lang/$install_language/trad4all.inc.php";
  116. include_once "../lang/$install_language/install.inc.php";
  117. }
  118. // These global variables must be set for proper working of the function get_lang(...) during the installation.
  119. $language_interface = $install_language;
  120. $language_interface_initial_value = $install_language;
  121. /* TODO: Obsolete logic, to be removed.
  122. $charset = '';
  123. //force ISO-8859-15 for European languages. Leave Apache determine the encoding for others (HTML declaring UTF-8)
  124. $euro_langs = array('english','french','french_KM','french_corporate','french_org','dutch','spanish','german','italian','greek','danish','swedish','norwegian','polish','galician','catalan','czech','finnish');
  125. if (isset($install_language))
  126. {
  127. if(in_array($install_language,$euro_langs))
  128. {
  129. $charset = 'ISO-8859-15'; // TODO: This should be UTF-8 for some languages.
  130. header('Content-Type: text/html; charset='. $charset);
  131. }
  132. }
  133. */
  134. // Character set during installation: ISO-8859-15 for Latin 1 languages, UTF-8 for other languages.
  135. $charset = 'UTF-8';
  136. if (isset($install_language))
  137. {
  138. if (strpos($install_language, 'unicode') === false && api_is_latin1_compatible($install_language))
  139. {
  140. // TODO: This is for backward compatibility. Actually, all the languages may use UTF-8.
  141. $charset = 'ISO-8859-15';
  142. }
  143. }
  144. header('Content-Type: text/html; charset='. $charset);
  145. api_set_default_encoding($charset); // Initialization of the default encoding that will be used by the string routines.
  146. require_once 'install_upgrade.lib.php'; //also defines constants
  147. require_once 'install_functions.inc.php';
  148. // Some constants
  149. define('DOKEOS_INSTALL',1);
  150. define('MAX_COURSE_TRANSFER',100);
  151. define('INSTALL_TYPE_UPDATE', 'update');
  152. define('FORM_FIELD_DISPLAY_LENGTH', 40);
  153. define('DATABASE_FORM_FIELD_DISPLAY_LENGTH', 25);
  154. define('MAX_FORM_FIELD_LENGTH', 80);
  155. define('DEFAULT_LANGUAGE', 'english');
  156. // setting the error reporting
  157. error_reporting(E_COMPILE_ERROR | E_ERROR | E_CORE_ERROR);
  158. // overriding the timelimit (for large campusses that have to be migrated)
  159. @set_time_limit(0);
  160. //upgrading from any subversion of 1.6 is just like upgrading from 1.6.5
  161. $update_from_version_6=array('1.6','1.6.1','1.6.2','1.6.3','1.6.4','1.6.5');
  162. //upgrading from any subversion of 1.8 avoids the additional step of upgrading from 1.6
  163. $update_from_version_8=array('1.8','1.8.2','1.8.3','1.8.4','1.8.5','1.8.6');
  164. $my_old_version = '';
  165. $tmp_version = get_config_param('dokeos_version');
  166. if(!empty($_POST['old_version']))
  167. {
  168. $my_old_version = $_POST['old_version'];
  169. }
  170. elseif(!empty($tmp_version))
  171. {
  172. $my_old_version = $tmp_version;
  173. }
  174. elseif(!empty($dokeos_version)) //variable coming from installedVersion, normally
  175. {
  176. $my_old_version = $dokeos_version;
  177. }
  178. $new_version = '1.8.6.1';
  179. $new_version_stable = false;
  180. $new_version_major = false;
  181. /*
  182. ==============================================================================
  183. STEP 1 : INITIALIZES FORM VARIABLES IF IT IS THE FIRST VISIT
  184. ==============================================================================
  185. */
  186. //Is valid request
  187. $is_valid_request=$_REQUEST['is_executable'];
  188. foreach ($_POST as $request_index=>$request_value) {
  189. if (substr($request_index,0,4)=='step') {
  190. if ($request_index<>$is_valid_request) {
  191. unset($_POST[$request_index]);
  192. }
  193. }
  194. }
  195. $badUpdatePath=false;
  196. $emptyUpdatePath=true;
  197. $proposedUpdatePath = '';
  198. if(!empty($_POST['updatePath']))
  199. {
  200. $proposedUpdatePath = $_POST['updatePath'];
  201. }
  202. if($_POST['step2_install'] || $_POST['step2_update_8'] || $_POST['step2_update_6'])
  203. {
  204. if($_POST['step2_install'])
  205. {
  206. $installType='new';
  207. $_POST['step2']=1;
  208. }
  209. else
  210. {
  211. $installType='update';
  212. if($_POST['step2_update_8'])
  213. {
  214. $emptyUpdatePath = false;
  215. if(empty($_POST['updatePath']))
  216. {
  217. $proposedUpdatePath = $_SERVER['DOCUMENT_ROOT'];
  218. }
  219. else
  220. {
  221. $proposedUpdatePath = $_POST['updatePath'];
  222. }
  223. if(substr($proposedUpdatePath,-1) != '/')
  224. {
  225. $proposedUpdatePath.='/';
  226. }
  227. if(file_exists($proposedUpdatePath))
  228. {
  229. if(in_array($my_old_version,$update_from_version_8))
  230. {
  231. $_POST['step2']=1;
  232. }
  233. else
  234. {
  235. $badUpdatePath=true;
  236. }
  237. }
  238. else
  239. {
  240. $badUpdatePath=true;
  241. }
  242. }
  243. else //step2_update_6, presumably
  244. {
  245. if(empty($_POST['updatePath']))
  246. {
  247. $_POST['step1']=1;
  248. }
  249. else
  250. {
  251. $emptyUpdatePath = false;
  252. if(substr($_POST['updatePath'],-1) != '/')
  253. {
  254. $_POST['updatePath'].='/';
  255. }
  256. if(file_exists($_POST['updatePath']))
  257. {
  258. //1.6.x
  259. $my_old_version = get_config_param('clarolineVersion',$_POST['updatePath']);
  260. if(in_array($my_old_version,$update_from_version_6))
  261. {
  262. $_POST['step2']=1;
  263. $proposedUpdatePath = $_POST['updatePath'];
  264. }
  265. else
  266. {
  267. $badUpdatePath=true;
  268. }
  269. }
  270. else
  271. {
  272. $badUpdatePath=true;
  273. }
  274. }
  275. }
  276. }
  277. }
  278. elseif($_POST['step1'])
  279. {
  280. $_POST['updatePath']='';
  281. $installType='';
  282. $updateFromConfigFile='';
  283. unset($_GET['running']);
  284. }
  285. else
  286. {
  287. $installType=$_GET['installType'];
  288. $updateFromConfigFile=$_GET['updateFromConfigFile'];
  289. }
  290. if($installType=='update' && in_array($my_old_version,$update_from_version_8))
  291. {
  292. include_once '../inc/conf/configuration.php';
  293. }
  294. if(!isset($_GET['running']))
  295. {
  296. $dbHostForm='localhost';
  297. $dbUsernameForm='root';
  298. $dbPassForm='';
  299. $dbPrefixForm='';
  300. $dbNameForm='dokeos_main';
  301. $dbStatsForm='dokeos_stats';
  302. $dbScormForm='dokeos_scorm';
  303. $dbUserForm='dokeos_user';
  304. // extract the path to append to the url if Dokeos is not installed on the web root directory
  305. $urlAppendPath=str_replace('/main/install/index.php','',api_get_self());
  306. $urlForm='http://'.$_SERVER['HTTP_HOST'].$urlAppendPath.'/';
  307. $pathForm=str_replace('\\','/',realpath('../..')).'/';
  308. $emailForm=$_SERVER['SERVER_ADMIN'];
  309. $email_parts = explode('@',$emailForm);
  310. if($email_parts[1] == 'localhost')
  311. {
  312. $emailForm .= '.localdomain';
  313. }
  314. $adminLastName='Doe';
  315. $adminFirstName='John';
  316. $loginForm='admin';
  317. $passForm=api_generate_password();
  318. $campusForm='My campus';
  319. $educationForm='Albert Einstein';
  320. $adminPhoneForm='(000) 001 02 03';
  321. $institutionForm='My Organisation';
  322. $institutionUrlForm='http://www.dokeos.com';
  323. $languageForm='english';
  324. $checkEmailByHashSent=0;
  325. $ShowEmailnotcheckedToStudent=1;
  326. $userMailCanBeEmpty=1;
  327. $allowSelfReg=1;
  328. $allowSelfRegProf=1;
  329. $enableTrackingForm=1;
  330. $singleDbForm=0;
  331. $encryptPassForm='md5';
  332. $session_lifetime=360000;
  333. }
  334. else
  335. {
  336. foreach($_POST as $key=>$val)
  337. {
  338. $magic_quotes_gpc=ini_get('magic_quotes_gpc')?true:false;
  339. if(is_string($val))
  340. {
  341. if($magic_quotes_gpc)
  342. {
  343. $val=stripslashes($val);
  344. }
  345. $val=trim($val);
  346. $_POST[$key]=$val;
  347. }
  348. elseif(is_array($val))
  349. {
  350. foreach($val as $key2=>$val2)
  351. {
  352. if($magic_quotes_gpc)
  353. {
  354. $val2=stripslashes($val2);
  355. }
  356. $val2=trim($val2);
  357. $_POST[$key][$key2]=$val2;
  358. }
  359. }
  360. $GLOBALS[$key]=$_POST[$key];
  361. }
  362. }
  363. // The Steps
  364. $total_steps=7;
  365. if (!$_POST)
  366. {
  367. $current_step=1;
  368. }
  369. elseif (!empty($_POST['language_list']) or !empty($_POST['step1']) or ((!empty($_POST['step2_update_8']) or (!empty($_POST['step2_update_6']))) && ($emptyUpdatePath or $badUpdatePath)))
  370. {
  371. $current_step=2;
  372. }
  373. elseif (!empty($_POST['step2']) or (!empty($_POST['step2_update_8']) or (!empty($_POST['step2_update_6'])) ))
  374. {
  375. $current_step=3;
  376. }
  377. elseif (!empty($_POST['step3']))
  378. {
  379. $current_step=4;
  380. }
  381. elseif (!empty($_POST['step4']))
  382. {
  383. $current_step=5;
  384. }
  385. elseif (!empty($_POST['step5']))
  386. {
  387. $current_step=6;
  388. }
  389. // Managing the $encryptPassForm
  390. if ($encryptPassForm=='1' ) {
  391. $encryptPassForm = 'md5';
  392. } elseif ($encryptPassForm=='0') {
  393. $encryptPassForm = 'none';
  394. }
  395. ?>
  396. <!DOCTYPE html
  397. PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  398. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  399. <html xmlns="http://www.w3.org/1999/xhtml">
  400. <head>
  401. <title>&mdash; <?php echo get_lang('DokeosInstallation').' &mdash; '.get_lang('Version_').' '.$new_version; ?></title>
  402. <style type="text/css" media="screen, projection">
  403. /*<![CDATA[*/
  404. @import "../css/public_admin/default.css";
  405. /*]]>*/
  406. </style>
  407. <script type="text/javascript" src="../inc/lib/javascript/jquery.js"></script>
  408. <script type="text/javascript" >
  409. $(document).ready( function() {
  410. //checked
  411. if ($('#singleDb1').attr('checked')==false) {
  412. $('#dbStatsForm').removeAttr('disabled');
  413. $('#dbUserForm').removeAttr('disabled');
  414. $('#dbStatsForm').attr('value','dokeos_stats');
  415. $('#dbUserForm').attr('value','dokeos_user');
  416. } else if($('#singleDb1').attr('checked')==true){
  417. $('#dbStatsForm').attr('disabled','disabled');
  418. $('#dbUserForm').attr('disabled','disabled');
  419. $('#dbStatsForm').attr('value','dokeos_main');
  420. $('#dbUserForm').attr('value','dokeos_main');
  421. }
  422. //Allow dokeos install in IE
  423. $("button").click(function() {
  424. $("#is_executable").attr("value",$(this).attr("name"));
  425. });
  426. } );
  427. </script>
  428. <script type="text/javascript">
  429. function show_hide_tracking_and_user_db (my_option) {
  430. if (my_option=='singleDb1') {
  431. $('#dbStatsForm').attr('disabled','true');
  432. $('#dbUserForm').attr('disabled','true');
  433. $('#dbStatsForm').attr('value','dokeos_main');
  434. $('#dbUserForm').attr('value','dokeos_main');
  435. } else if (my_option=='singleDb0') {
  436. $('#dbStatsForm').removeAttr('disabled');
  437. $('#dbUserForm').removeAttr('disabled');
  438. $('#dbStatsForm').attr('value','dokeos_stats');
  439. $('#dbUserForm').attr('value','dokeos_user');
  440. }
  441. }
  442. </script>
  443. <script language="javascript">
  444. init_visibility=0;
  445. function show_hide_option() {
  446. if(init_visibility == 0) {
  447. document.getElementById('optional_param1').style.display = '';
  448. document.getElementById('optional_param2').style.display = '';
  449. if(document.getElementById('optional_param3'))
  450. {
  451. document.getElementById('optional_param3').style.display = '';
  452. }
  453. document.getElementById('optional_param4').style.display = '';
  454. document.getElementById('optional_param5').style.display = '';
  455. document.getElementById('optional_param6').style.display = '';
  456. init_visibility = 1;
  457. document.getElementById('optionalparameters').innerHTML='<img src="../img/div_show.gif" alt="" /> <?php echo get_lang('OptionalParameters'); ?>';
  458. } else {
  459. document.getElementById('optional_param1').style.display = 'none';
  460. document.getElementById('optional_param2').style.display = 'none';
  461. if(document.getElementById('optional_param3')) {
  462. document.getElementById('optional_param3').style.display = 'none';
  463. }
  464. document.getElementById('optional_param4').style.display = 'none';
  465. document.getElementById('optional_param5').style.display = 'none';
  466. document.getElementById('optional_param6').style.display = 'none';
  467. document.getElementById('optionalparameters').innerHTML='<img src="../img/div_hide.gif" alt="" /> <?php echo get_lang('OptionalParameters'); ?>';
  468. init_visibility = 0;
  469. }
  470. }
  471. </script>
  472. <?php if(!empty($charset)){ ?>
  473. <meta http-equiv="Content-Type" content="text/html; charset=<?php echo $charset ?>" />
  474. <?php } ?>
  475. </head>
  476. <body dir="<?php echo $text_dir ?>">
  477. <div id="header">
  478. <div id="header1"><?php echo get_lang('DokeosInstallation').' &mdash; '.get_lang('Version_').' '.$new_version; ?><?php if($installType == 'new') echo ' &ndash; '.get_lang('NewInstallation'); else if($installType == 'update') echo ' &ndash; '.get_lang('UpdateFromDokeosVersion').(is_array($update_from_version)?implode('|',$update_from_version):''); ?></div>
  479. <div id="header2">&nbsp;</div>
  480. <div id="header3">
  481. <ul>
  482. <li id="current"><a href="#"><span>Installation</span></a></li>
  483. </ul>
  484. </div>
  485. </div>
  486. <form style="padding: 0px; margin: 0px;" method="post" action="<?php echo api_get_self(); ?>?running=1&amp;installType=<?php echo $installType; ?>&amp;updateFromConfigFile=<?php echo urlencode($updateFromConfigFile); ?>">
  487. <div id="installation_steps">
  488. <img src="../img/bluelogo.gif" hspace="10" vspace="10" alt="Dokeos logo" />
  489. <ol>
  490. <li <?php step_active('1'); ?>><?php echo get_lang('InstallationLanguage'); ?></li>
  491. <li <?php step_active('2'); ?>><?php echo get_lang('Requirements'); ?></li>
  492. <li <?php step_active('3'); ?>><?php echo get_lang('Licence'); ?></li>
  493. <li <?php step_active('4'); ?>><?php echo get_lang('DBSetting'); ?></li>
  494. <li <?php step_active('5'); ?>><?php echo get_lang('CfgSetting'); ?></li>
  495. <li <?php step_active('6'); ?>><?php echo get_lang('PrintOverview'); ?></li>
  496. <li <?php step_active('7'); ?>><?php echo get_lang('Installing'); ?></li>
  497. </ol>
  498. </div>
  499. <table cellpadding="6" cellspacing="0" border="0" width="75%" align="center">
  500. <tr>
  501. <td>
  502. <input type="hidden" name="updatePath" value="<?php if(!$badUpdatePath) echo api_htmlentities($proposedUpdatePath, ENT_QUOTES, $charset); ?>" />
  503. <input type="hidden" name="urlAppendPath" value="<?php echo api_htmlentities($urlAppendPath, ENT_QUOTES, $charset); ?>" />
  504. <input type="hidden" name="pathForm" value="<?php echo api_htmlentities($pathForm, ENT_QUOTES, $charset); ?>" />
  505. <input type="hidden" name="urlForm" value="<?php echo api_htmlentities($urlForm, ENT_QUOTES, $charset); ?>" />
  506. <input type="hidden" name="dbHostForm" value="<?php echo api_htmlentities($dbHostForm, ENT_QUOTES, $charset); ?>" />
  507. <input type="hidden" name="dbUsernameForm" value="<?php echo api_htmlentities($dbUsernameForm, ENT_QUOTES, $charset); ?>" />
  508. <input type="hidden" name="dbPassForm" value="<?php echo api_htmlentities($dbPassForm, ENT_QUOTES, $charset); ?>" />
  509. <input type="hidden" name="singleDbForm" value="<?php echo api_htmlentities($singleDbForm, ENT_QUOTES, $charset); ?>" />
  510. <input type="hidden" name="dbPrefixForm" value="<?php echo api_htmlentities($dbPrefixForm, ENT_QUOTES, $charset); ?>" />
  511. <input type="hidden" name="dbNameForm" value="<?php echo api_htmlentities($dbNameForm, ENT_QUOTES, $charset); ?>" />
  512. <?php
  513. if($installType == 'update' OR $singleDbForm == 0)
  514. {
  515. ?>
  516. <input type="hidden" name="dbStatsForm" value="<?php echo api_htmlentities($dbStatsForm, ENT_QUOTES, $charset); ?>" />
  517. <input type="hidden" name="dbScormForm" value="<?php echo api_htmlentities($dbScormForm, ENT_QUOTES, $charset); ?>" />
  518. <input type="hidden" name="dbUserForm" value="<?php echo api_htmlentities($dbUserForm, ENT_QUOTES, $charset); ?>" />
  519. <?php
  520. }
  521. else
  522. {
  523. ?>
  524. <input type="hidden" name="dbStatsForm" value="<?php echo api_htmlentities($dbNameForm, ENT_QUOTES, $charset); ?>" />
  525. <input type="hidden" name="dbUserForm" value="<?php echo api_htmlentities($dbNameForm, ENT_QUOTES, $charset); ?>" />
  526. <?php
  527. }
  528. ?>
  529. <input type="hidden" name="enableTrackingForm" value="<?php echo api_htmlentities($enableTrackingForm, ENT_QUOTES, $charset); ?>" />
  530. <input type="hidden" name="allowSelfReg" value="<?php echo api_htmlentities($allowSelfReg, ENT_QUOTES, $charset); ?>" />
  531. <input type="hidden" name="allowSelfRegProf" value="<?php echo api_htmlentities($allowSelfRegProf, ENT_QUOTES, $charset); ?>" />
  532. <input type="hidden" name="emailForm" value="<?php echo api_htmlentities($emailForm, ENT_QUOTES, $charset); ?>" />
  533. <input type="hidden" name="adminLastName" value="<?php echo api_htmlentities($adminLastName, ENT_QUOTES, $charset); ?>" />
  534. <input type="hidden" name="adminFirstName" value="<?php echo api_htmlentities($adminFirstName, ENT_QUOTES, $charset); ?>" />
  535. <input type="hidden" name="adminPhoneForm" value="<?php echo api_htmlentities($adminPhoneForm, ENT_QUOTES, $charset); ?>" />
  536. <input type="hidden" name="loginForm" value="<?php echo api_htmlentities($loginForm, ENT_QUOTES, $charset); ?>" />
  537. <input type="hidden" name="passForm" value="<?php echo api_htmlentities($passForm, ENT_QUOTES, $charset); ?>" />
  538. <input type="hidden" name="languageForm" value="<?php echo api_htmlentities($languageForm, ENT_QUOTES, $charset); ?>" />
  539. <input type="hidden" name="campusForm" value="<?php echo api_htmlentities($campusForm, ENT_QUOTES, $charset); ?>" />
  540. <input type="hidden" name="educationForm" value="<?php echo api_htmlentities($educationForm, ENT_QUOTES, $charset); ?>" />
  541. <input type="hidden" name="institutionForm" value="<?php echo api_htmlentities($institutionForm, ENT_QUOTES, $charset); ?>" />
  542. <input type="hidden" name="institutionUrlForm" value="<?php echo api_stristr($institutionUrlForm, 'http://', false, $charset) ? api_htmlentities($institutionUrlForm, ENT_QUOTES, $charset) : api_stristr($institutionUrlForm, 'https://', false, $charset) ? api_htmlentities($institutionUrlForm, ENT_QUOTES, $charset) : 'http://'.api_htmlentities($institutionUrlForm, ENT_QUOTES, $charset); ?>" />
  543. <input type="hidden" name="checkEmailByHashSent" value="<?php echo api_htmlentities($checkEmailByHashSent, ENT_QUOTES, $charset); ?>" />
  544. <input type="hidden" name="ShowEmailnotcheckedToStudent" value="<?php echo api_htmlentities($ShowEmailnotcheckedToStudent, ENT_QUOTES, $charset); ?>" />
  545. <input type="hidden" name="userMailCanBeEmpty" value="<?php echo api_htmlentities($userMailCanBeEmpty, ENT_QUOTES, $charset); ?>" />
  546. <input type="hidden" name="encryptPassForm" value="<?php echo api_htmlentities($encryptPassForm, ENT_QUOTES, $charset); ?>" />
  547. <input type="hidden" name="session_lifetime" value="<?php echo api_htmlentities($session_lifetime, ENT_QUOTES, $charset); ?>" />
  548. <input type="hidden" name="old_version" value="<?php echo api_htmlentities($my_old_version, ENT_QUOTES, $charset); ?>" />
  549. <input type="hidden" name="new_version" value="<?php echo api_htmlentities($new_version, ENT_QUOTES, $charset); ?>" />
  550. <?php
  551. if($_POST['step2'])
  552. {
  553. //STEP 3 : LICENSE
  554. display_license_agreement();
  555. }
  556. elseif($_POST['step3'])
  557. {
  558. //STEP 4 : MYSQL DATABASE SETTINGS
  559. display_database_settings_form($installType, $dbHostForm, $dbUsernameForm, $dbPassForm, $dbPrefixForm, $enableTrackingForm, $singleDbForm, $dbNameForm, $dbStatsForm, $dbScormForm, $dbUserForm);
  560. }
  561. elseif($_POST['step4'])
  562. {
  563. //STEP 5 : CONFIGURATION SETTINGS
  564. //if update, try getting settings from the database...
  565. if($installType == 'update')
  566. {
  567. $db_name = $dbNameForm;
  568. $tmp = get_config_param_from_db($dbHostForm,$dbUsernameForm,$dbPassForm,$db_name,'platformLanguage');
  569. if(!empty($tmp)) $languageForm = $tmp;
  570. $tmp = get_config_param_from_db($dbHostForm,$dbUsernameForm,$dbPassForm,$db_name,'emailAdministrator');
  571. if(!empty($tmp)) $emailForm = $tmp;
  572. $tmp = get_config_param_from_db($dbHostForm,$dbUsernameForm,$dbPassForm,$db_name,'administratorName');
  573. if(!empty($tmp)) $adminFirstName = $tmp;
  574. $tmp = get_config_param_from_db($dbHostForm,$dbUsernameForm,$dbPassForm,$db_name,'administratorSurname');
  575. if(!empty($tmp)) $adminLastName = $tmp;
  576. $tmp = get_config_param_from_db($dbHostForm,$dbUsernameForm,$dbPassForm,$db_name,'administratorTelephone');
  577. if(!empty($tmp)) $adminPhoneForm = $tmp;
  578. $tmp = get_config_param_from_db($dbHostForm,$dbUsernameForm,$dbPassForm,$db_name,'siteName');
  579. if(!empty($tmp)) $campusForm = $tmp;
  580. $tmp = get_config_param_from_db($dbHostForm,$dbUsernameForm,$dbPassForm,$db_name,'Institution');
  581. if(!empty($tmp)) $institutionForm = $tmp;
  582. $tmp = get_config_param_from_db($dbHostForm,$dbUsernameForm,$dbPassForm,$db_name,'InstitutionUrl');
  583. if(!empty($tmp)) $institutionUrlForm = $tmp;
  584. if(in_array($my_old_version,$update_from_version_6))
  585. { //for version 1.6
  586. $urlForm = get_config_param('rootWeb');
  587. $encryptPassForm = get_config_param('userPasswordCrypted');
  588. // Managing the $encryptPassForm
  589. if ($encryptPassForm=='1' ) {
  590. $encryptPassForm = 'md5';
  591. } elseif ($encryptPassForm=='0') {
  592. $encryptPassForm = 'none';
  593. }
  594. $allowSelfReg = get_config_param('allowSelfReg');
  595. $allowSelfRegProf = get_config_param('allowSelfRegProf');
  596. }
  597. else
  598. { //for version 1.8
  599. $urlForm = $_configuration['root_web'];
  600. $encryptPassForm = get_config_param('userPasswordCrypted');
  601. // Managing the $encryptPassForm
  602. if ($encryptPassForm=='1' ) {
  603. $encryptPassForm = 'md5';
  604. } elseif ($encryptPassForm=='0') {
  605. $encryptPassForm = 'none';
  606. }
  607. $allowSelfReg = false;
  608. $tmp = get_config_param_from_db($dbHostForm,$dbUsernameForm,$dbPassForm,$db_name,'allow_registration');
  609. if(!empty($tmp)) $allowSelfReg = $tmp;
  610. $allowSelfRegProf = false;
  611. $tmp = get_config_param_from_db($dbHostForm,$dbUsernameForm,$dbPassForm,$db_name,'allow_registration_as_teacher');
  612. if(!empty($tmp)) $allowSelfRegProf = $tmp;
  613. }
  614. }
  615. display_configuration_settings_form($installType, $urlForm, $languageForm, $emailForm, $adminFirstName, $adminLastName, $adminPhoneForm, $campusForm, $institutionForm, $institutionUrlForm, $encryptPassForm, $allowSelfReg, $allowSelfRegProf, $loginForm, $passForm);
  616. }
  617. elseif($_POST['step5'])
  618. {
  619. //STEP 6 : LAST CHECK BEFORE INSTALL
  620. ?>
  621. <h2><?php echo display_step_sequence().get_lang('LastCheck'); ?></h2>
  622. <?php echo get_lang('HereAreTheValuesYouEntered');?>
  623. <br />
  624. <b><?php echo get_lang('PrintThisPageToRememberPassAndOthers');?></b>
  625. <blockquote>
  626. <?php echo get_lang('MainLang').' : '.$languageForm; ?><br /><br />
  627. <?php echo get_lang('DBHost').' : '.$dbHostForm; ?><br />
  628. <?php echo get_lang('DBLogin').' : '.$dbUsernameForm; ?><br />
  629. <?php echo get_lang('DBPassword').' : '.str_repeat('*',strlen($dbPassForm)); ?><br />
  630. <?php if(!empty($dbPrefixForm)) echo get_lang('DbPrefixForm').' : '.$dbPrefixForm.'<br />'; ?>
  631. <?php echo get_lang('MainDB').' : <b>'.$dbNameForm; ?></b><?php if($installType == 'new') echo ' (<font color="#cc0033">'.get_lang('ReadWarningBelow').'</font>)'; ?><br />
  632. <?php
  633. if(!$singleDbForm)
  634. {
  635. echo get_lang('StatDB').' : <b>'.$dbStatsForm.'</b>';
  636. if($installType == 'new')
  637. {
  638. echo ' (<font color="#cc0033">'.get_lang('ReadWarningBelow').'</font>)';
  639. }
  640. echo '<br />';
  641. echo get_lang('UserDB').' : <b>'.$dbUserForm.'</b>';
  642. if($installType == 'new')
  643. {
  644. echo ' (<font color="#cc0033">'.get_lang('ReadWarningBelow').'</font>)';
  645. }
  646. echo '<br />';
  647. }
  648. ?>
  649. <?php echo get_lang('EnableTracking').' : '.($enableTrackingForm?get_lang('Yes'):get_lang('No')); ?><br />
  650. <?php echo get_lang('SingleDb').' : '.($singleDbForm?get_lang('One'):get_lang('Several')); ?><br /><br />
  651. <?php echo get_lang('AllowSelfReg').' : '.($allowSelfReg?get_lang('Yes'):get_lang('No')); ?><br />
  652. <?php echo get_lang('EncryptMethodUserPass').' : ';
  653. echo $encryptPassForm;
  654. ?><br /><br/>
  655. <?php echo get_lang('AdminEmail').' : '.$emailForm; ?><br />
  656. <?php echo get_lang('AdminFirstName').' : '.$adminFirstName; ?><br />
  657. <?php echo get_lang('AdminLastName').' : '.$adminLastName; ?><br />
  658. <?php echo get_lang('AdminPhone').' : '.$adminPhoneForm; ?><br />
  659. <?php if($installType == 'new'): ?>
  660. <?php echo get_lang('AdminLogin').' : <b>'.$loginForm; ?></b><br />
  661. <?php echo get_lang('AdminPass').' : <b>'.$passForm; ?></b><br /><br />
  662. <?php else: ?>
  663. <br />
  664. <?php endif; ?>
  665. <?php echo get_lang('CampusName').' : '.$campusForm; ?><br />
  666. <?php echo get_lang('InstituteShortName').' : '.$institutionForm; ?><br />
  667. <?php echo get_lang('InstituteURL').' : '.$institutionUrlForm; ?><br />
  668. <?php echo get_lang('DokeosURL').' : '.$urlForm; ?><br />
  669. </blockquote>
  670. <?php if($installType == 'new'): ?>
  671. <div style="background-color:#FFFFFF">
  672. <p align="center"><b><font color="red">
  673. <?php echo get_lang('Warning');?> !<br />
  674. <?php echo get_lang('TheInstallScriptWillEraseAllTables');?>
  675. </font></b></p>
  676. </div>
  677. <?php endif; ?>
  678. <table width="100%">
  679. <tr>
  680. <td><button type="submit" class="back" name="step4" value="&lt; <?php echo get_lang('Previous'); ?>" /><?php echo get_lang('Previous'); ?></button></td>
  681. <td align="right"><input type="hidden" name="is_executable" id="is_executable" value="-" /><button class="save" type="submit" name="step6" value="<?php echo get_lang('InstallDokeos'); ?> &gt;" onclick="javascript:if(this.value == '<?php $msg = get_lang('PleaseWait');?>...') return false; else this.value='<?php $msg = get_lang('InstallDokeos');?>...';" ><?php echo $msg; ?></button></td>
  682. </tr>
  683. </table>
  684. <?php
  685. }
  686. elseif($_POST['step6'])
  687. {
  688. //STEP 6 : INSTALLATION PROCESS
  689. if($installType == 'update')
  690. {
  691. if(empty($my_old_version)){$my_old_version='1.8.6';} //we guess
  692. $_configuration['main_database'] = $dbNameForm;
  693. //$urlAppendPath = get_config_param('urlAppend');
  694. error_log('Starting migration process from '.$my_old_version.' ('.time().')',0);
  695. if ($userPasswordCrypted=='1' ) {
  696. $userPasswordCrypted = 'md5';
  697. } elseif ($userPasswordCrypted=='0') {
  698. $userPasswordCrypted = 'none';
  699. }
  700. switch($my_old_version)
  701. {
  702. case '1.6':
  703. case '1.6.0':
  704. case '1.6.1':
  705. case '1.6.2':
  706. case '1.6.3':
  707. case '1.6.4':
  708. case '1.6.5':
  709. include('update-db-1.6.x-1.8.0.inc.php');
  710. include('update-files-1.6.x-1.8.0.inc.php');
  711. //intentionally no break to continue processing
  712. case '1.8':
  713. case '1.8.0':
  714. include('update-db-1.8.0-1.8.2.inc.php');
  715. //intentionally no break to continue processing
  716. case '1.8.2':
  717. include('update-db-1.8.2-1.8.3.inc.php');
  718. //intentionally no break to continue processing
  719. case '1.8.3':
  720. include('update-db-1.8.3-1.8.4.inc.php');
  721. include('update-files-1.8.3-1.8.4.inc.php');
  722. case '1.8.4':
  723. include('update-db-1.8.4-1.8.5.inc.php');
  724. include('update-files-1.8.4-1.8.5.inc.php');
  725. case '1.8.5':
  726. include('update-db-1.8.5-1.8.6.inc.php');
  727. include('update-files-1.8.5-1.8.6.inc.php');
  728. case '1.8.6':
  729. include('update-db-1.8.6-1.8.6.1.inc.php');
  730. include('update-files-1.8.6-1.8.6.1.inc.php');
  731. default:
  732. break;
  733. }
  734. }
  735. else
  736. {
  737. include('install_db.inc.php');
  738. include('install_files.inc.php');
  739. }
  740. display_after_install_message($installType, $nbr_courses);
  741. }
  742. elseif($_POST['step1'] || $badUpdatePath)
  743. {
  744. //STEP 1 : REQUIREMENTS
  745. //make sure that proposed path is set, shouldn't be necessary but...
  746. if(empty($proposedUpdatePath)){$proposedUpdatePath = $_POST['updatePath'];}
  747. display_requirements($installType, $badUpdatePath, $proposedUpdatePath, $update_from_version_8, $update_from_version_6);
  748. }
  749. else
  750. {
  751. //start screen
  752. display_language_selection();
  753. }
  754. ?>
  755. </td>
  756. </tr>
  757. </table>
  758. </form>
  759. <br style="clear:both;" />
  760. <div id="footer">
  761. <div class="copyright"><?php echo get_lang('Platform');?> <a href="http://www.dokeos.com" target="_blank"> Dokeos <?php echo $new_version ?></a> &copy; <?php echo date('Y'); ?> </div>
  762. &nbsp;
  763. </div>
  764. </body>
  765. </html>