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

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. <?php //$Id: update-files-1.6.x-1.8.0.inc.php 12086 2007-04-23 13:02:44Z yannoo $
  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. * DOKEOS_INSTALL 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 DOKEOS_INSTALL 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 dokeos.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. /*
  42. ==============================================================================
  43. FUNCTIONS
  44. ==============================================================================
  45. */
  46. function insert_db($db_name, $folder_name, $text){
  47. $_course['dbName'] = $db_name;
  48. $doc_id = add_document($_course, '/'.$folder_name, 'folder', 0, ucfirst($text));
  49. api_item_property_update($_course, TOOL_DOCUMENT, $doc_id, 'invisible', 1);
  50. }
  51. /*
  52. ==============================================================================
  53. INIT SECTION
  54. ==============================================================================
  55. */
  56. if (defined('DOKEOS_INSTALL') || defined('DOKEOS_COURSE_UPDATE'))
  57. {
  58. $sys_course_path = $pathForm.'courses/';
  59. //$tbl_course = Database :: get_main_table(TABLE_MAIN_COURSE);
  60. mysql_select_db($dbNameForm);
  61. $db_name = $dbNameForm;
  62. $sql = "SELECT * FROM course";
  63. error_log('Getting courses for files updates: '.$sql,0);
  64. $result=mysql_query($sql);
  65. while($courses_directories=mysql_fetch_array($result)){
  66. $currentCourseRepositorySys = $sys_course_path.$courses_directories["directory"]."/";
  67. $db_name = $courses_directories["db_name"];
  68. if(!is_dir($currentCourseRepositorySys)){
  69. error_log('Directory '.$currentCourseRepositorySys.' does not exist. Skipping.',0);
  70. continue;
  71. }
  72. //move everything to the new hierarchy (from old path to new path)
  73. error_log('Renaming '.$updatePath.'courses/'.$courses_directories["directory"].' to '.$sys_course_path.$courses_directories["directory"],0);
  74. rename($updatePath.'courses/'.$courses_directories["directory"],$sys_course_path.$courses_directories["directory"]);
  75. error_log('Creating dirs in '.$currentCourseRepositorySys,0);
  76. //FOLDER DOCUMENT
  77. //document > audio
  78. if(!is_dir($currentCourseRepositorySys."document/audio")){
  79. mkdir($currentCourseRepositorySys."document/audio",0777);
  80. insert_db($db_name,"audio",get_lang('Audio'));
  81. }
  82. //document > flash
  83. if(!is_dir($currentCourseRepositorySys."document/flash")){
  84. mkdir($currentCourseRepositorySys."document/flash",0777);
  85. insert_db($db_name,"flash",get_lang('Flash'));
  86. }
  87. //document > images
  88. if(!is_dir($currentCourseRepositorySys."document/images")){
  89. mkdir($currentCourseRepositorySys."document/images",0777);
  90. insert_db($db_name,"images",get_lang('Images'));
  91. }
  92. if(!is_dir($currentCourseRepositorySys."document/video")){
  93. mkdir($currentCourseRepositorySys."document/video",0777);
  94. insert_db($db_name,"video",get_lang('Video'));
  95. }
  96. //FOLDER UPLOAD
  97. //upload
  98. if(!is_dir($currentCourseRepositorySys."upload")){
  99. mkdir($currentCourseRepositorySys."upload",0777);
  100. }
  101. //upload > blog
  102. if(!is_dir($currentCourseRepositorySys."upload/blog")){
  103. mkdir($currentCourseRepositorySys."upload/blog",0777);
  104. }
  105. //upload > forum
  106. if(!is_dir($currentCourseRepositorySys."upload/forum")){
  107. mkdir($currentCourseRepositorySys."upload/forum",0777);
  108. }
  109. //upload > test
  110. if(!is_dir($currentCourseRepositorySys."upload/test")){
  111. mkdir($currentCourseRepositorySys."upload/test",0777);
  112. }
  113. //Updating index file in courses directories to change claroline/ into main/
  114. $content = '<?php'."\n".
  115. '$cidReq="'.$courses_directories['code'].'";'."\n" .
  116. '$dbname="'.$courses_directories['db_name'].'";'."\n" .
  117. 'include("../../main/course_home/course_home.php");'."\n" .
  118. '?>';
  119. unlink($currentCourseRepositorySys.'index.php');
  120. $fp = @ fopen($currentCourseRepositorySys.'index.php', 'w');
  121. if ($fp)
  122. {
  123. error_log('Writing redirection file in '.$currentCourseRepositorySys.'index.php',0);
  124. fwrite($fp, $content);
  125. fclose($fp);
  126. }else{
  127. error_log('Could not open file '.$currentCourseRepositorySys.'index.php',0);
  128. }
  129. }
  130. // Write the Dokeos config file
  131. write_dokeos_config_file('../inc/conf/configuration.php');
  132. // Write a distribution file with the config as a backup for the admin
  133. write_dokeos_config_file('../inc/conf/configuration.dist.php');
  134. // Write a .htaccess file in the course repository
  135. write_courses_htaccess_file($urlAppendPath);
  136. copy($updatePath.'claroline/inc/conf/add_course.conf.php',$pathForm.'main/inc/conf/add_course.conf.php');
  137. copy($updatePath.'claroline/inc/conf/course_info.conf.php',$pathForm.'main/inc/conf/course_info.conf.php');
  138. copy($updatePath.'claroline/inc/conf/mail.conf.php',$pathForm.'main/inc/conf/mail.conf.php');
  139. copy($updatePath.'claroline/inc/conf/profile.conf.inc.php',$pathForm.'main/inc/conf/profile.conf.php');
  140. error_log('Renaming '.$updatePath.'claroline/upload/users to '.$pathForm.'main/upload/users',0);
  141. rename($updatePath.'claroline/upload/users',$pathForm.'main/upload/users');
  142. /*
  143. if (defined('DOKEOS_INSTALL'))
  144. {
  145. //nothing to do this time
  146. }
  147. */
  148. }
  149. else
  150. {
  151. echo 'You are not allowed here !';
  152. }
  153. ?>