update-files-1.6.x-1.8.0.inc.php 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. <?php
  2. /* For licensing terms, see /license.txt */
  3. /**
  4. * Chamilo LMS
  5. *
  6. * Updates the Dokeos files from version 1.6.x to version 1.8.0
  7. * IMPORTANT: This script has to be included by install/index.php or
  8. * update_courses.php (deprecated)
  9. *
  10. * SYSTEM_INSTALLATION is defined in the install/index.php (means that we are in
  11. * the regular upgrade process)
  12. *
  13. * When SYSTEM_INSTALLATION is defined, do for every course:
  14. * - create a new set of directories that reflect the new tools offered by 1.8
  15. * - record an item_property for each directory added
  16. *
  17. * @package chamilo.install
  18. */
  19. /**
  20. * Init
  21. */
  22. Log::notice('Entering file');
  23. function insert_db($db_name, $folder_name, $text)
  24. {
  25. // TODO: The (global?) variable $_course has not been declared/initialized.
  26. $_course['dbName'] = $db_name;
  27. $doc_id = add_document_180($_course, '/' . $folder_name, 'folder', 0, api_ucfirst($text));
  28. api_item_property_update($_course, TOOL_DOCUMENT, $doc_id, 'invisible', 1);
  29. }
  30. if (defined('SYSTEM_INSTALLATION')) {
  31. $sys_course_path = $pathForm . 'courses/';
  32. //$tbl_course = Database :: get_main_table(TABLE_MAIN_COURSE);
  33. Database::select_db($dbNameForm);
  34. $db_name = $dbNameForm;
  35. $sql = "SELECT * FROM course";
  36. Log::notice('Getting courses for files updates: ' . $sql);
  37. $result = Database::query($sql);
  38. while ($courses_directories = Database::fetch_array($result)) {
  39. $currentCourseRepositorySys = $sys_course_path . $courses_directories["directory"] . "/";
  40. $db_name = $courses_directories["db_name"];
  41. $origCRS = $updatePath . 'courses/' . $courses_directories["directory"];
  42. if (!is_dir($origCRS)) {
  43. Log::error('Directory ' . $origCRS . ' does not exist. Skipping.');
  44. continue;
  45. }
  46. // Move everything to the new hierarchy (from old path to new path)
  47. Log::notice('Renaming ' . $origCRS . ' to ' . $sys_course_path . $courses_directories["directory"]);
  48. rename($origCRS, $sys_course_path . $courses_directories["directory"]);
  49. Log::notice('Creating dirs in ' . $currentCourseRepositorySys);
  50. // FOLDER DOCUMENT
  51. // document > audio
  52. if (!is_dir($currentCourseRepositorySys . "document/audio")) {
  53. mkdir($currentCourseRepositorySys . "document/audio", $perm);
  54. insert_db($db_name, "audio", get_lang('Audio'));
  55. }
  56. // document > flash
  57. if (!is_dir($currentCourseRepositorySys . "document/flash")) {
  58. mkdir($currentCourseRepositorySys . "document/flash", $perm);
  59. insert_db($db_name, "flash", get_lang('Flash'));
  60. }
  61. // document > images
  62. if (!is_dir($currentCourseRepositorySys . "document/images")) {
  63. mkdir($currentCourseRepositorySys . "document/images", $perm);
  64. insert_db($db_name, "images", get_lang('Images'));
  65. }
  66. // document > video
  67. if (!is_dir($currentCourseRepositorySys . "document/video")) {
  68. mkdir($currentCourseRepositorySys . "document/video", $perm);
  69. insert_db($db_name, "video", get_lang('Video'));
  70. }
  71. // document > video > flv
  72. if (!is_dir($currentCourseRepositorySys . "document/video/flv")) {
  73. mkdir($currentCourseRepositorySys . "document/video/flv", $perm);
  74. insert_db($db_name, "video", get_lang('Video') . " (flv)");
  75. }
  76. // FOLDER UPLOAD
  77. // upload
  78. if (!is_dir($currentCourseRepositorySys . "upload")) {
  79. mkdir($currentCourseRepositorySys . "upload", $perm);
  80. }
  81. // upload > blog
  82. if (!is_dir($currentCourseRepositorySys . "upload/blog")) {
  83. mkdir($currentCourseRepositorySys . "upload/blog", $perm);
  84. }
  85. // upload > forum
  86. if (!is_dir($currentCourseRepositorySys . "upload/forum")) {
  87. mkdir($currentCourseRepositorySys . "upload/forum", $perm);
  88. }
  89. // upload > test
  90. if (!is_dir($currentCourseRepositorySys . "upload/test")) {
  91. mkdir($currentCourseRepositorySys . "upload/test", $perm);
  92. }
  93. // Updating index file in courses directories to change claroline/ into main/
  94. $content = '<?php' . "\n" .
  95. '$cidReq="' . $courses_directories['code'] . '";' . "\n" .
  96. '$dbname="' . $courses_directories['db_name'] . '";' . "\n" .
  97. 'include("../../main/course_home/course_home.php");' . "\n" .
  98. '?>';
  99. unlink($currentCourseRepositorySys . 'index.php');
  100. $fp = @ fopen($currentCourseRepositorySys . 'index.php', 'w');
  101. if ($fp) {
  102. Log::error('Writing redirection file in ' . $currentCourseRepositorySys . 'index.php');
  103. fwrite($fp, $content);
  104. fclose($fp);
  105. } else {
  106. Log::error('Could not open file ' . $currentCourseRepositorySys . 'index.php');
  107. }
  108. }
  109. // Write the config file
  110. write_system_config_file(api_get_path(CONFIGURATION_PATH) . 'configuration.php');
  111. // Write a distribution file with the config as a backup for the admin
  112. write_system_config_file(api_get_path(CONFIGURATION_PATH) . 'configuration.dist.php');
  113. // Write a .htaccess file in the course repository
  114. write_courses_htaccess_file($urlAppendPath);
  115. copy($updatePath . 'claroline/inc/conf/add_course.conf.php', $pathForm . 'main/inc/conf/add_course.conf.php');
  116. copy($updatePath . 'claroline/inc/conf/course_info.conf.php', $pathForm . 'main/inc/conf/course_info.conf.php');
  117. copy($updatePath . 'claroline/inc/conf/mail.conf.php', $pathForm . 'main/inc/conf/mail.conf.php');
  118. copy($updatePath . 'claroline/inc/conf/profile.conf.inc.php', $pathForm . 'main/inc/conf/profile.conf.php');
  119. Log::notice('Renaming ' . $updatePath . 'claroline/upload/users to ' . $pathForm . 'main/upload/users');
  120. rename($updatePath . 'claroline/upload/users', $pathForm . 'main/upload/users');
  121. Log::notice('Renaming ' . $updatePath . 'claroline/upload/audio to ' . $pathForm . 'main/upload/audio');
  122. rename($updatePath . 'claroline/upload/audio', $pathForm . 'main/upload/audio');
  123. Log::notice('Renaming ' . $updatePath . 'claroline/upload/images to ' . $pathForm . 'main/upload/images');
  124. rename($updatePath . 'claroline/upload/images', $pathForm . 'main/upload/images');
  125. Log::notice('Renaming ' . $updatePath . 'claroline/upload/linked_files to ' . $pathForm . 'main/upload/linked_files');
  126. rename($updatePath . 'claroline/upload/linked_files', $pathForm . 'main/upload/linked_files');
  127. Log::notice('Renaming ' . $updatePath . 'claroline/upload/video to ' . $pathForm . 'main/upload/video');
  128. rename($updatePath . 'claroline/upload/video', $pathForm . 'main/upload/video');
  129. } else {
  130. echo 'You are not allowed here !' . __FILE__;
  131. }