install_db.inc.php 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453
  1. <?php
  2. /*
  3. ==============================================================================
  4. Dokeos - elearning and course management software
  5. Copyright (c) 2004-2005 Dokeos S.A.
  6. Copyright (c) 2003 Ghent University (UGent)
  7. Copyright (c) 2001 Universite catholique de Louvain (UCL)
  8. Copyright (c) various contributors
  9. For a full list of contributors, see "credits.txt".
  10. The full license can be read in "license.txt".
  11. This program is free software; you can redistribute it and/or
  12. modify it under the terms of the GNU General Public License
  13. as published by the Free Software Foundation; either version 2
  14. of the License, or (at your option) any later version.
  15. See the GNU General Public License for more details.
  16. Contact address: Dokeos, 44 rue des palais, B-1030 Brussels, Belgium
  17. Mail: info@dokeos.com
  18. ==============================================================================
  19. */
  20. /**
  21. ==============================================================================
  22. * Install the Dokeos database
  23. * Notice : This script has to be included by index.php
  24. *
  25. * @package dokeos.install
  26. ==============================================================================
  27. */
  28. require_once("install_upgrade.lib.php");
  29. /*
  30. ==============================================================================
  31. MAIN CODE
  32. ==============================================================================
  33. */
  34. //this page can only be access through including from the install script.
  35. if( ! defined('DOKEOS_INSTALL'))
  36. {
  37. echo 'You are not allowed here!';
  38. exit;
  39. }
  40. set_file_folder_permissions();
  41. @mysql_connect($dbHostForm,$dbUsernameForm,$dbPassForm);
  42. if(mysql_errno() > 0)
  43. {
  44. $no=mysql_errno();
  45. $msg=mysql_error();
  46. echo '<hr />['.$no.'] &ndash; '.$msg.'<hr>
  47. The MySQL server doesn\'t work or login / pass is bad.<br /><br />
  48. Please check these values:<br /><br />
  49. <b>host</b> : '.$dbHostForm.'<br />
  50. <b>user</b> : '.$dbUsernameForm.'<br />
  51. <b>password</b> : '.$dbPassForm.'<br /><br />
  52. Please go back to step 3.
  53. <p><input type="submit" name="step3" value="&lt; Back" /></p>
  54. </td></tr></table></form></body></html>';
  55. exit();
  56. }
  57. if($urlForm[strlen($urlForm)-1] != '/')
  58. {
  59. $urlForm=$urlForm.'/';
  60. }
  61. if($encryptPassForm)
  62. {
  63. $passToStore=md5($passForm);
  64. }
  65. else
  66. {
  67. $passToStore=($passForm);
  68. }
  69. $dbPrefixForm=eregi_replace('[^a-z0-9_-]','',$dbPrefixForm);
  70. $dbNameForm=eregi_replace('[^a-z0-9_-]','',$dbNameForm);
  71. $dbStatsForm=eregi_replace('[^a-z0-9_-]','',$dbStatsForm);
  72. $dbScormForm=eregi_replace('[^a-z0-9_-]','',$dbScormForm);
  73. $dbUserForm=eregi_replace('[^a-z0-9_-]','',$dbUserForm);
  74. if(!empty($dbPrefixForm) && !ereg('^'.$dbPrefixForm,$dbNameForm))
  75. {
  76. $dbNameForm=$dbPrefixForm.$dbNameForm;
  77. }
  78. if(!empty($dbPrefixForm) && !ereg('^'.$dbPrefixForm,$dbStatsForm))
  79. {
  80. $dbStatsForm=$dbPrefixForm.$dbStatsForm;
  81. }
  82. if(!empty($dbPrefixForm) && !ereg('^'.$dbPrefixForm,$dbScormForm))
  83. {
  84. $dbScormForm=$dbPrefixForm.$dbScormForm;
  85. }
  86. if(!empty($dbPrefixForm) && !ereg('^'.$dbPrefixForm,$dbUserForm))
  87. {
  88. $dbUserForm=$dbPrefixForm.$dbUserForm;
  89. }
  90. $mysqlMainDb=$dbNameForm;
  91. $mysqlStatsDb=$dbStatsForm;
  92. $mysqlScormDb=$dbScormForm;
  93. $mysqlUserDb=$dbUserForm;
  94. if(empty($mysqlMainDb) || $mysqlMainDb == 'mysql' || $mysqlMainDb == $dbPrefixForm)
  95. {
  96. $mysqlMainDb=$dbPrefixForm.'main';
  97. }
  98. if(empty($mysqlStatsDb) || $mysqlStatsDb == 'mysql' || $mysqlStatsDb == $dbPrefixForm)
  99. {
  100. $mysqlStatsDb=$dbPrefixForm.'stats';
  101. }
  102. if(empty($mysqlScormDb) || $mysqlScormDb == 'mysql' || $mysqlScormDb == $dbPrefixForm)
  103. {
  104. $mysqlScormDb=$dbPrefixForm.'scorm';
  105. }
  106. if(empty($mysqlUserDb) || $mysqlUserDb == 'mysql' || $mysqlUserDb == $dbPrefixForm)
  107. {
  108. $mysqlUserDb=$dbPrefixForm.'user';
  109. }
  110. $result=mysql_query("SHOW VARIABLES LIKE 'datadir'") or die(mysql_error());
  111. $mysqlRepositorySys=mysql_fetch_array($result);
  112. $mysqlRepositorySys=$mysqlRepositorySys['Value'];
  113. if(!$singleDbForm)
  114. {
  115. mysql_query("DROP DATABASE IF EXISTS `$mysqlMainDb`") or die(mysql_error());
  116. }
  117. mysql_query("CREATE DATABASE IF NOT EXISTS `$mysqlMainDb`") or die(mysql_error());
  118. if($mysqlStatsDb == $mysqlMainDb && $mysqlScormDb == $mysqlMainDb && $mysqlUserDb == $mysqlMainDb)
  119. {
  120. $singleDbForm=true;
  121. }
  122. /**
  123. * CREATING THE STATISTICS DATABASE
  124. */
  125. if($mysqlStatsDb != $mysqlMainDb)
  126. {
  127. if(!$singleDbForm)
  128. {
  129. // multi DB mode AND tracking has its own DB so create it
  130. mysql_query("DROP DATABASE IF EXISTS `$mysqlStatsDb`") or die(mysql_error());
  131. mysql_query("CREATE DATABASE `$mysqlStatsDb`") or die(mysql_error());
  132. }
  133. else
  134. {
  135. // single DB mode so $mysqlStatsDb MUST BE the SAME than $mysqlMainDb
  136. $mysqlStatsDb=$mysqlMainDb;
  137. }
  138. }
  139. /**
  140. * CREATING THE SCORM DATABASE
  141. */
  142. if($mysqlScormDb != $mysqlMainDb)
  143. {
  144. if(!$singleDbForm)
  145. {
  146. // multi DB mode AND scorm has its own DB so create it
  147. mysql_query("DROP DATABASE IF EXISTS `$mysqlScormDb`") or die(mysql_error());
  148. mysql_query("CREATE DATABASE `$mysqlScormDb`") or die(mysql_error());
  149. }
  150. else
  151. {
  152. // single DB mode so $mysqlScormDb MUST BE the SAME than $mysqlMainDb
  153. $mysqlScormDb=$mysqlMainDb;
  154. }
  155. }
  156. /**
  157. * CREATING THE USER DATABASE
  158. */
  159. if($mysqlUserDb != $mysqlMainDb)
  160. {
  161. if(!$singleDbForm)
  162. {
  163. // multi DB mode AND user data has its own DB so create it
  164. mysql_query("DROP DATABASE IF EXISTS `$mysqlUserDb`") or die(mysql_error());
  165. mysql_query("CREATE DATABASE `$mysqlUserDb`") or die(mysql_error());
  166. }
  167. else
  168. {
  169. // single DB mode so $mysqlUserDb MUST BE the SAME than $mysqlMainDb
  170. $mysqlUserDb=$mysqlMainDb;
  171. }
  172. }
  173. include("../lang/english/create_course.inc.php");
  174. if($languageForm != 'english')
  175. {
  176. include("../lang/$languageForm/create_course.inc.php");
  177. }
  178. /**
  179. * creating the tables of the main database
  180. */
  181. mysql_select_db($mysqlMainDb) or die(mysql_error());
  182. $installation_settings['{ORGANISATIONNAME}'] = $institutionForm;
  183. $installation_settings['{ORGANISATIONURL}'] = $institutionUrlForm;
  184. $installation_settings['{CAMPUSNAME}'] = $campusForm;
  185. $installation_settings['{PLATFORMLANGUAGE}'] = $languageForm;
  186. $installation_settings['{ALLOWSELFREGISTRATION}'] = trueFalse($allowSelfReg);
  187. $installation_settings['{ALLOWTEACHERSELFREGISTRATION}'] = trueFalse($allowSelfRegProf);
  188. $installation_settings['{ADMINLASTNAME}'] = $adminLastName;
  189. $installation_settings['{ADMINFIRSTNAME}'] = $adminFirstName;
  190. $installation_settings['{ADMINLOGIN}'] = $loginForm;
  191. $installation_settings['{ADMINPASSWORD}'] = $passToStore;
  192. $installation_settings['{ADMINEMAIL}'] = $emailForm;
  193. $installation_settings['{ADMINPHONE}'] = $adminPhoneForm;
  194. $installation_settings['{PLATFORM_AUTH_SOURCE}'] = PLATFORM_AUTH_SOURCE;
  195. load_main_database($installation_settings);
  196. /**
  197. * creating the tables of the tracking database
  198. */
  199. mysql_select_db($mysqlStatsDb) or die(mysql_error());
  200. mysql_query("CREATE TABLE `track_c_browsers` (
  201. `id` int(11) NOT NULL auto_increment,
  202. `browser` varchar(255) NOT NULL default '',
  203. `counter` int(11) NOT NULL default '0',
  204. PRIMARY KEY (`id`)
  205. ) TYPE=MyISAM") or die(mysql_error());
  206. mysql_query("CREATE TABLE `track_c_countries` (
  207. `id` int(11) NOT NULL auto_increment,
  208. `code` varchar(40) NOT NULL default '',
  209. `country` varchar(50) NOT NULL default '',
  210. `counter` int(11) NOT NULL default '0',
  211. PRIMARY KEY (`id`)
  212. ) TYPE=MyISAM") or die(mysql_error());
  213. mysql_query("CREATE TABLE `track_c_os` (
  214. `id` int(11) NOT NULL auto_increment,
  215. `os` varchar(255) NOT NULL default '',
  216. `counter` int(11) NOT NULL default '0',
  217. PRIMARY KEY (`id`)
  218. ) TYPE=MyISAM") or die(mysql_error());
  219. mysql_query("CREATE TABLE `track_c_providers` (
  220. `id` int(11) NOT NULL auto_increment,
  221. `provider` varchar(255) NOT NULL default '',
  222. `counter` int(11) NOT NULL default '0',
  223. PRIMARY KEY (`id`)
  224. ) TYPE=MyISAM") or die(mysql_error());
  225. mysql_query("CREATE TABLE `track_c_referers` (
  226. `id` int(11) NOT NULL auto_increment,
  227. `referer` varchar(255) NOT NULL default '',
  228. `counter` int(11) NOT NULL default '0',
  229. PRIMARY KEY (`id`)
  230. ) TYPE=MyISAM") or die(mysql_error());
  231. mysql_query("CREATE TABLE `track_e_access` (
  232. `access_id` int(11) NOT NULL auto_increment,
  233. `access_user_id` int unsigned default NULL,
  234. `access_date` datetime NOT NULL default '0000-00-00 00:00:00',
  235. `access_cours_code` varchar(40) NOT NULL default '0',
  236. `access_tool` varchar(30) default NULL,
  237. PRIMARY KEY (`access_id`),
  238. KEY `access_user_id` (`access_user_id`),
  239. KEY `access_cours_code` (`access_cours_code`)
  240. ) TYPE=MyISAM") or die(mysql_error());
  241. mysql_query("CREATE TABLE `track_e_lastaccess` (
  242. `access_id` bigint(20) NOT NULL auto_increment,
  243. `access_user_id` int unsigned default NULL,
  244. `access_date` datetime NOT NULL default '0000-00-00 00:00:00',
  245. `access_cours_code` varchar(40) NOT NULL default '0',
  246. `access_tool` varchar(30) default NULL,
  247. `access_session_id` int unsigned default NULL,
  248. PRIMARY KEY (`access_id`),
  249. KEY `access_user_id` (`access_user_id`),
  250. KEY `access_cours_code` (`access_cours_code`)
  251. ) TYPE=MyISAM") or die(mysql_error());
  252. mysql_query("CREATE TABLE `track_e_default` (
  253. `default_id` int(11) NOT NULL auto_increment,
  254. `default_user_id` int unsigned NOT NULL default '0',
  255. `default_cours_code` varchar(40) NOT NULL default '',
  256. `default_date` datetime NOT NULL default '0000-00-00 00:00:00',
  257. `default_event_type` varchar(20) NOT NULL default '',
  258. `default_value_type` varchar(20) NOT NULL default '',
  259. `default_value` tinytext NOT NULL,
  260. PRIMARY KEY (`default_id`)
  261. ) TYPE=MyISAM") or die(mysql_error());
  262. mysql_query("CREATE TABLE `track_e_downloads` (
  263. `down_id` int(11) NOT NULL auto_increment,
  264. `down_user_id` int unsigned default NULL,
  265. `down_date` datetime NOT NULL default '0000-00-00 00:00:00',
  266. `down_cours_id` varchar(20) NOT NULL default '0',
  267. `down_doc_path` varchar(255) NOT NULL default '0',
  268. PRIMARY KEY (`down_id`)
  269. ) TYPE=MyISAM") or die(mysql_error());
  270. mysql_query("CREATE TABLE `track_e_exercices` (
  271. `exe_id` int(11) NOT NULL auto_increment,
  272. `exe_user_id` int unsigned default NULL,
  273. `exe_date` datetime NOT NULL default '0000-00-00 00:00:00',
  274. `exe_cours_id` varchar(40) NOT NULL default '',
  275. `exe_exo_id` mediumint unsigned NOT NULL default '0',
  276. `exe_result` smallint NOT NULL default '0',
  277. `exe_weighting` smallint NOT NULL default '0',
  278. PRIMARY KEY (`exe_id`)
  279. ) TYPE=MyISAM") or die(mysql_error());
  280. mysql_query("CREATE TABLE `track_e_attempt` (
  281. `exe_id` int(10) default NULL,
  282. `user_id` int(10) NOT NULL default '0',
  283. `question_id` int(10) NOT NULL default '0',
  284. `answer` text NOT NULL,
  285. `teacher_comment` text NOT NULL,
  286. `marks` int(10) NOT NULL default '0',
  287. `course_code` varchar(10) NOT NULL default '',
  288. `position` int(10) default '0'
  289. ) TYPE=MyISAM") or die(mysql_error());
  290. mysql_query("CREATE TABLE `track_e_hotpotatoes` (
  291. `exe_name` VARCHAR( 255 ) NOT NULL ,
  292. `exe_user_id` int unsigned DEFAULT NULL ,
  293. `exe_date` DATETIME DEFAULT '0000-00-00 00:00:00' NOT NULL ,
  294. `exe_cours_id` varchar(40) NOT NULL ,
  295. `exe_result` smallint DEFAULT '0' NOT NULL ,
  296. `exe_weighting` smallint DEFAULT '0' NOT NULL
  297. ) TYPE=MyISAM") or die(mysql_error());
  298. mysql_query("CREATE TABLE `track_e_links` (
  299. `links_id` int NOT NULL auto_increment,
  300. `links_user_id` int unsigned default NULL,
  301. `links_date` datetime NOT NULL default '0000-00-00 00:00:00',
  302. `links_cours_id` varchar(20) NOT NULL default '0',
  303. `links_link_id` int(11) NOT NULL default '0',
  304. PRIMARY KEY (`links_id`)
  305. ) TYPE=MyISAM") or die(mysql_error());
  306. mysql_query("CREATE TABLE `track_e_login` (
  307. `login_id` int NOT NULL auto_increment,
  308. `login_user_id` int unsigned NOT NULL default '0',
  309. `login_date` datetime NOT NULL default '0000-00-00 00:00:00',
  310. `login_ip` varchar(39) NOT NULL default '',
  311. PRIMARY KEY (`login_id`),
  312. KEY `login_user_id` (`login_user_id`)
  313. ) TYPE=MyISAM") or die(mysql_error());
  314. mysql_query("CREATE TABLE `track_e_online` (
  315. `login_id` int NOT NULL auto_increment,
  316. `login_user_id` int unsigned NOT NULL default '0',
  317. `login_date` datetime NOT NULL default '0000-00-00 00:00:00',
  318. `login_ip` varchar(39) NOT NULL default '',
  319. `course` varchar(40) default NULL,
  320. PRIMARY KEY (`login_id`),
  321. KEY `login_user_id` (`login_user_id`)
  322. ) TYPE=MyISAM") or die(mysql_error());
  323. mysql_query("CREATE TABLE `track_e_open` (
  324. `open_id` int(11) NOT NULL auto_increment,
  325. `open_remote_host` tinytext NOT NULL,
  326. `open_agent` tinytext NOT NULL,
  327. `open_referer` tinytext NOT NULL,
  328. `open_date` datetime NOT NULL default '0000-00-00 00:00:00',
  329. PRIMARY KEY (`open_id`)
  330. ) TYPE=MyISAM") or die(mysql_error());
  331. mysql_query("CREATE TABLE `track_e_uploads` (
  332. `upload_id` int NOT NULL auto_increment,
  333. `upload_user_id` int unsigned default NULL,
  334. `upload_date` datetime NOT NULL default '0000-00-00 00:00:00',
  335. `upload_cours_id` varchar(20) NOT NULL default '0',
  336. `upload_work_id` int(11) NOT NULL default '0',
  337. PRIMARY KEY (`upload_id`)
  338. ) TYPE=MyISAM") or die(mysql_error());
  339. $track_countries_table = "track_c_countries";
  340. fill_track_countries_table($track_countries_table);
  341. /**
  342. * creating the tables of the SCORM database
  343. */
  344. mysql_select_db($mysqlScormDb) or die(mysql_error());
  345. mysql_query("CREATE TABLE `scorm_main` (
  346. `contentId` int(5) unsigned NOT NULL auto_increment,
  347. `contentTitle` varchar(100) default NULL,
  348. `dokeosCourse` varchar(100) default NULL,
  349. PRIMARY KEY (`contentId`)
  350. ) TYPE=MyISAM") or die(mysql_error());
  351. mysql_query("CREATE TABLE `scorm_sco_data` (
  352. `contentId` int(5) default NULL,
  353. `scoId` int(5) NOT NULL auto_increment,
  354. `scoIdentifier` varchar(100) default NULL,
  355. `scoTitle` varchar(100) default NULL,
  356. `status` varchar(100) default NULL,
  357. `studentId` int(10) default NULL,
  358. `score` int(10) default NULL,
  359. `time` varchar(20) default NULL,
  360. KEY `scoId` (`scoId`)
  361. ) TYPE=MyISAM") or die(mysql_error());
  362. /**
  363. * creating the tables of the USER database
  364. * this is where the personal agenda items are storen, the user defined course categories (sorting of my courses)
  365. */
  366. mysql_select_db($mysqlUserDb) or die(mysql_error());
  367. // creating the table where the personal agenda items are stored
  368. mysql_query("CREATE TABLE `personal_agenda` (
  369. `id` int NOT NULL auto_increment,
  370. `user` int unsigned,
  371. `title` text,
  372. `text` text,
  373. `date` datetime default NULL,
  374. `enddate` datetime default NULL,
  375. `course` varchar(255),
  376. UNIQUE KEY `id` (`id`))
  377. TYPE=MyISAM") or die(mysql_error());
  378. // creating the table that is used for the user defined course categories
  379. mysql_query("CREATE TABLE `user_course_category` (
  380. `id` int unsigned NOT NULL auto_increment,
  381. `user_id` int unsigned NOT NULL default '0',
  382. `title` text NOT NULL,
  383. `sort` INT(11),
  384. PRIMARY KEY (`id`)
  385. ) TYPE=MyISAM") or die(mysql_error());
  386. ?>