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

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