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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198
  1. <?php //$Id: update-files-1.6.x-1.8.0.inc.php 17420 2008-12-22 11:50:15Z ivantcholakov $
  2. /*
  3. ==============================================================================
  4. Dokeos - elearning and course management software
  5. Copyright (c) 2004-2007 Dokeos S.A.
  6. Copyright (c) 2003 Ghent University (UGent)
  7. Copyright (c) 2001 Universite catholique de Louvain (UCL)
  8. For a full list of contributors, see "credits.txt".
  9. The full license can be read in "license.txt".
  10. This program is free software; you can redistribute it and/or
  11. modify it under the terms of the GNU General Public License
  12. as published by the Free Software Foundation; either version 2
  13. of the License, or (at your option) any later version.
  14. See the GNU General Public License for more details.
  15. Contact address: Dokeos, 44 rue des palais, B-1030 Brussels, Belgium
  16. Mail: info@dokeos.com
  17. ==============================================================================
  18. */
  19. /**
  20. ==============================================================================
  21. * Updates the Dokeos files from version 1.6.x to version 1.8.0
  22. * IMPORTANT: This script has to be included by install/index.php or
  23. * update_courses.php
  24. *
  25. * SYSTEM_INSTALLATION is defined in the install/index.php (means that we are in
  26. * the regular upgrade process)
  27. *
  28. * DOKEOS_COURSE_UPDATE is defined in update_courses.php (means we are
  29. * executing update_courses.php to update courses separately)
  30. *
  31. * When SYSTEM_INSTALLATION or DOKEOS_COURSE_UPDATE are defined, do for every course:
  32. * - create a new set of directories that reflect the new tools offered by 1.8
  33. * - record an item_property for each directory added
  34. *
  35. * @package chamilo.install
  36. ==============================================================================
  37. */
  38. require_once '../inc/lib/main_api.lib.php';
  39. require_once '../inc/lib/fileUpload.lib.php';
  40. require_once '../inc/lib/database.lib.php';
  41. require_once 'install_upgrade.lib.php';
  42. /*
  43. ==============================================================================
  44. FUNCTIONS
  45. ==============================================================================
  46. */
  47. function insert_db($db_name, $folder_name, $text) {
  48. // TODO: The (global?) variable $_course has not been declared/initialized.
  49. $_course['dbName'] = $db_name;
  50. $doc_id = add_document_180($_course, '/'.$folder_name, 'folder', 0, api_ucfirst($text));
  51. api_item_property_update($_course, TOOL_DOCUMENT, $doc_id, 'invisible', 1);
  52. }
  53. /*
  54. ==============================================================================
  55. INIT SECTION
  56. ==============================================================================
  57. */
  58. if (defined('SYSTEM_INSTALLATION') || defined('DOKEOS_COURSE_UPDATE')) {
  59. $sys_course_path = $pathForm.'courses/';
  60. //$tbl_course = Database :: get_main_table(TABLE_MAIN_COURSE);
  61. Database::select_db($dbNameForm);
  62. $db_name = $dbNameForm;
  63. $sql = "SELECT * FROM course";
  64. error_log('Getting courses for files updates: '.$sql, 0);
  65. $result = Database::query($sql);
  66. $perm = api_get_permissions_for_new_directories();
  67. //$old_umask = umask(0); // This function is not thread-safe.
  68. while ($courses_directories = Database::fetch_array($result)) {
  69. $currentCourseRepositorySys = $sys_course_path.$courses_directories["directory"]."/";
  70. $db_name = $courses_directories["db_name"];
  71. $origCRS = $updatePath.'courses/'.$courses_directories["directory"];
  72. if (!is_dir($origCRS)) {
  73. error_log('Directory '.$origCRS.' does not exist. Skipping.', 0);
  74. continue;
  75. }
  76. //move everything to the new hierarchy (from old path to new path)
  77. error_log('Renaming '.$origCRS.' to '.$sys_course_path.$courses_directories["directory"], 0);
  78. rename($origCRS,$sys_course_path.$courses_directories["directory"]);
  79. error_log('Creating dirs in '.$currentCourseRepositorySys, 0);
  80. //FOLDER DOCUMENT
  81. //document > audio
  82. if (!is_dir($currentCourseRepositorySys."document/audio")) {
  83. mkdir($currentCourseRepositorySys."document/audio", $perm);
  84. insert_db($db_name, "audio", get_lang('Audio'));
  85. }
  86. //document > flash
  87. if (!is_dir($currentCourseRepositorySys."document/flash")) {
  88. mkdir($currentCourseRepositorySys."document/flash", $perm);
  89. insert_db($db_name,"flash",get_lang('Flash'));
  90. }
  91. //document > images
  92. if (!is_dir($currentCourseRepositorySys."document/images")) {
  93. mkdir($currentCourseRepositorySys."document/images", $perm);
  94. insert_db($db_name,"images",get_lang('Images'));
  95. }
  96. //document > video
  97. if (!is_dir($currentCourseRepositorySys."document/video")) {
  98. mkdir($currentCourseRepositorySys."document/video", $perm);
  99. insert_db($db_name,"video",get_lang('Video'));
  100. }
  101. //document > video > flv
  102. if (!is_dir($currentCourseRepositorySys."document/video/flv")) {
  103. mkdir($currentCourseRepositorySys."document/video/flv", $perm);
  104. insert_db($db_name,"video",get_lang('Video')." (flv)");
  105. }
  106. //FOLDER UPLOAD
  107. //upload
  108. if (!is_dir($currentCourseRepositorySys."upload")) {
  109. mkdir($currentCourseRepositorySys."upload", $perm);
  110. }
  111. //upload > blog
  112. if (!is_dir($currentCourseRepositorySys."upload/blog")) {
  113. mkdir($currentCourseRepositorySys."upload/blog", $perm);
  114. }
  115. //upload > forum
  116. if (!is_dir($currentCourseRepositorySys."upload/forum")) {
  117. mkdir($currentCourseRepositorySys."upload/forum", $perm);
  118. }
  119. //upload > test
  120. if (!is_dir($currentCourseRepositorySys."upload/test")) {
  121. mkdir($currentCourseRepositorySys."upload/test", $perm);
  122. }
  123. //Updating index file in courses directories to change claroline/ into main/
  124. $content = '<?php'."\n".
  125. '$cidReq="'.$courses_directories['code'].'";'."\n" .
  126. '$dbname="'.$courses_directories['db_name'].'";'."\n" .
  127. 'include("../../main/course_home/course_home.php");'."\n" .
  128. '?>';
  129. unlink($currentCourseRepositorySys.'index.php');
  130. $fp = @ fopen($currentCourseRepositorySys.'index.php', 'w');
  131. if ($fp) {
  132. error_log('Writing redirection file in '.$currentCourseRepositorySys.'index.php', 0);
  133. fwrite($fp, $content);
  134. fclose($fp);
  135. } else {
  136. error_log('Could not open file '.$currentCourseRepositorySys.'index.php', 0);
  137. }
  138. }
  139. //umask($old_umask); // This function is not thread-safe.
  140. // Write the Dokeos config file
  141. write_system_config_file('../inc/conf/configuration.php');
  142. // Write a distribution file with the config as a backup for the admin
  143. write_system_config_file('../inc/conf/configuration.dist.php');
  144. // Write a .htaccess file in the course repository
  145. write_courses_htaccess_file($urlAppendPath);
  146. copy($updatePath.'claroline/inc/conf/add_course.conf.php', $pathForm.'main/inc/conf/add_course.conf.php');
  147. copy($updatePath.'claroline/inc/conf/course_info.conf.php', $pathForm.'main/inc/conf/course_info.conf.php');
  148. copy($updatePath.'claroline/inc/conf/mail.conf.php', $pathForm.'main/inc/conf/mail.conf.php');
  149. copy($updatePath.'claroline/inc/conf/profile.conf.inc.php', $pathForm.'main/inc/conf/profile.conf.php');
  150. error_log('Renaming '.$updatePath.'claroline/upload/users to '.$pathForm.'main/upload/users', 0);
  151. rename($updatePath.'claroline/upload/users', $pathForm.'main/upload/users');
  152. error_log('Renaming '.$updatePath.'claroline/upload/audio to '.$pathForm.'main/upload/audio', 0);
  153. rename($updatePath.'claroline/upload/audio', $pathForm.'main/upload/audio');
  154. error_log('Renaming '.$updatePath.'claroline/upload/images to '.$pathForm.'main/upload/images', 0);
  155. rename($updatePath.'claroline/upload/images', $pathForm.'main/upload/images');
  156. error_log('Renaming '.$updatePath.'claroline/upload/linked_files to '.$pathForm.'main/upload/linked_files', 0);
  157. rename($updatePath.'claroline/upload/linked_files', $pathForm.'main/upload/linked_files');
  158. error_log('Renaming '.$updatePath.'claroline/upload/video to '.$pathForm.'main/upload/video', 0);
  159. rename($updatePath.'claroline/upload/video', $pathForm.'main/upload/video');
  160. } else {
  161. echo 'You are not allowed here !';
  162. }