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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  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. Log::notice('Entering file');
  20. function insert_db($db_name, $folder_name, $text)
  21. {
  22. // TODO: The (global?) variable $_course has not been declared/initialized.
  23. $_course['dbName'] = $db_name;
  24. $doc_id = add_document_180($_course, '/' . $folder_name, 'folder', 0, api_ucfirst($text));
  25. api_item_property_update($_course, TOOL_DOCUMENT, $doc_id, 'invisible', 1);
  26. }
  27. if (defined('SYSTEM_INSTALLATION')) {
  28. $sys_course_path = $pathForm . 'courses/';
  29. //$tbl_course = Database :: get_main_table(TABLE_MAIN_COURSE);
  30. Database::select_db($dbNameForm);
  31. $db_name = $dbNameForm;
  32. $sql = "SELECT * FROM course";
  33. Log::notice('Getting courses for files updates: ' . $sql);
  34. $result = Database::query($sql);
  35. while ($courses_directories = Database::fetch_array($result)) {
  36. $currentCourseRepositorySys = $sys_course_path . $courses_directories["directory"] . "/";
  37. $db_name = $courses_directories["db_name"];
  38. $origCRS = $updatePath . 'courses/' . $courses_directories["directory"];
  39. if (!is_dir($origCRS)) {
  40. Log::error('Directory ' . $origCRS . ' does not exist. Skipping.');
  41. continue;
  42. }
  43. // Move everything to the new hierarchy (from old path to new path)
  44. Log::notice('Renaming ' . $origCRS . ' to ' . $sys_course_path . $courses_directories["directory"]);
  45. rename($origCRS, $sys_course_path . $courses_directories["directory"]);
  46. Log::notice('Creating dirs in ' . $currentCourseRepositorySys);
  47. // FOLDER DOCUMENT
  48. // document > audio
  49. if (!is_dir($currentCourseRepositorySys . "document/audio")) {
  50. mkdir($currentCourseRepositorySys . "document/audio", $perm);
  51. insert_db($db_name, "audio", get_lang('Audio'));
  52. }
  53. // document > flash
  54. if (!is_dir($currentCourseRepositorySys . "document/flash")) {
  55. mkdir($currentCourseRepositorySys . "document/flash", $perm);
  56. insert_db($db_name, "flash", get_lang('Flash'));
  57. }
  58. // document > images
  59. if (!is_dir($currentCourseRepositorySys . "document/images")) {
  60. mkdir($currentCourseRepositorySys . "document/images", $perm);
  61. insert_db($db_name, "images", get_lang('Images'));
  62. }
  63. // document > video
  64. if (!is_dir($currentCourseRepositorySys . "document/video")) {
  65. mkdir($currentCourseRepositorySys . "document/video", $perm);
  66. insert_db($db_name, "video", get_lang('Video'));
  67. }
  68. // document > video > flv
  69. if (!is_dir($currentCourseRepositorySys . "document/video/flv")) {
  70. mkdir($currentCourseRepositorySys . "document/video/flv", $perm);
  71. insert_db($db_name, "video", get_lang('Video') . " (flv)");
  72. }
  73. // FOLDER UPLOAD
  74. // upload
  75. if (!is_dir($currentCourseRepositorySys . "upload")) {
  76. mkdir($currentCourseRepositorySys . "upload", $perm);
  77. }
  78. // upload > blog
  79. if (!is_dir($currentCourseRepositorySys . "upload/blog")) {
  80. mkdir($currentCourseRepositorySys . "upload/blog", $perm);
  81. }
  82. // upload > forum
  83. if (!is_dir($currentCourseRepositorySys . "upload/forum")) {
  84. mkdir($currentCourseRepositorySys . "upload/forum", $perm);
  85. }
  86. // upload > test
  87. if (!is_dir($currentCourseRepositorySys . "upload/test")) {
  88. mkdir($currentCourseRepositorySys . "upload/test", $perm);
  89. }
  90. // Updating index file in courses directories to change claroline/ into main/
  91. $content = '<?php' . "\n" .
  92. '$cidReq="' . $courses_directories['code'] . '";' . "\n" .
  93. '$dbname="' . $courses_directories['db_name'] . '";' . "\n" .
  94. 'include("../../main/course_home/course_home.php");' . "\n" .
  95. '?>';
  96. unlink($currentCourseRepositorySys . 'index.php');
  97. $fp = @ fopen($currentCourseRepositorySys . 'index.php', 'w');
  98. if ($fp) {
  99. Log::error('Writing redirection file in ' . $currentCourseRepositorySys . 'index.php');
  100. fwrite($fp, $content);
  101. fclose($fp);
  102. } else {
  103. Log::error('Could not open file ' . $currentCourseRepositorySys . 'index.php');
  104. }
  105. }
  106. // Write the config file
  107. write_system_config_file(api_get_path(CONFIGURATION_PATH) . 'configuration.php');
  108. // Write a distribution file with the config as a backup for the admin
  109. write_system_config_file(api_get_path(CONFIGURATION_PATH) . 'configuration.dist.php');
  110. // Write a .htaccess file in the course repository
  111. write_courses_htaccess_file($urlAppendPath);
  112. copy($updatePath . 'claroline/inc/conf/add_course.conf.php', $pathForm . 'main/inc/conf/add_course.conf.php');
  113. copy($updatePath . 'claroline/inc/conf/course_info.conf.php', $pathForm . 'main/inc/conf/course_info.conf.php');
  114. copy($updatePath . 'claroline/inc/conf/mail.conf.php', $pathForm . 'main/inc/conf/mail.conf.php');
  115. copy($updatePath . 'claroline/inc/conf/profile.conf.inc.php', $pathForm . 'main/inc/conf/profile.conf.php');
  116. Log::notice('Renaming ' . $updatePath . 'claroline/upload/users to ' . $pathForm . 'main/upload/users');
  117. rename($updatePath . 'claroline/upload/users', $pathForm . 'main/upload/users');
  118. Log::notice('Renaming ' . $updatePath . 'claroline/upload/audio to ' . $pathForm . 'main/upload/audio');
  119. rename($updatePath . 'claroline/upload/audio', $pathForm . 'main/upload/audio');
  120. Log::notice('Renaming ' . $updatePath . 'claroline/upload/images to ' . $pathForm . 'main/upload/images');
  121. rename($updatePath . 'claroline/upload/images', $pathForm . 'main/upload/images');
  122. Log::notice('Renaming ' . $updatePath . 'claroline/upload/linked_files to ' . $pathForm . 'main/upload/linked_files');
  123. rename($updatePath . 'claroline/upload/linked_files', $pathForm . 'main/upload/linked_files');
  124. Log::notice('Renaming ' . $updatePath . 'claroline/upload/video to ' . $pathForm . 'main/upload/video');
  125. rename($updatePath . 'claroline/upload/video', $pathForm . 'main/upload/video');
  126. } else {
  127. echo 'You are not allowed here !' . __FILE__;
  128. }