test_manager.inc.php 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213
  1. <?php
  2. /* For licensing terms, see /license.txt */
  3. /**
  4. * Code library for load functions than are needed to test
  5. *
  6. * @author Arthur Portugal, Principal author
  7. * @package chamilo.tests
  8. */
  9. /**
  10. * @todo shouldn't these settings be moved to the test_suite.php
  11. * if these are really configuration then we can make require_once in each tests file.
  12. * @todo use this file to load in the setup in each file test.
  13. * @todo use this file to destroy in the teardown in each file test.
  14. * @todo check for duplication of "require_once" files with test_suite.php
  15. * @author Arthur Portugal
  16. */
  17. /*
  18. INIT SECTION
  19. */
  20. ini_set('memory_limit','256M');
  21. ini_set('max_execution_time','0');
  22. /*
  23. Included libraries
  24. */
  25. $maindir = dirname(__FILE__).'/../main/';
  26. $incdir = dirname(__FILE__).'/../main/inc/';
  27. $libdir = dirname(__FILE__).'/../main/inc/lib/';
  28. /**Files inside '/../main' */
  29. require_once $maindir.'permissions/permissions_functions.inc.php';
  30. require_once $maindir.'admin/calendar.lib.php';
  31. require_once $maindir.'admin/statistics/statistics.lib.php';
  32. require_once $maindir.'dropbox/dropbox_class.inc.php';
  33. require_once $maindir.'dropbox/dropbox_functions.inc.php';
  34. require_once $maindir.'survey/survey.lib.php';
  35. require_once $maindir.'exercice/export/scorm/scorm_classes.php';
  36. require_once $maindir.'exercice/export/qti2/qti2_classes.php';
  37. require_once $maindir.'exercice/export/exercise_import.inc.php';
  38. require_once $maindir.'exercice/exercise_result.class.php';
  39. require_once $maindir.'exercice/answer.class.php';
  40. require_once $maindir.'exercice/exercise.class.php';
  41. require_once $maindir.'exercice/fill_blanks.class.php';
  42. require_once $maindir.'exercice/freeanswer.class.php';
  43. require_once $maindir.'forum/forumfunction.inc.php';
  44. require_once $maindir.'gradebook/lib/be/gradebookitem.class.php';
  45. require_once $maindir.'gradebook/lib/be/abstractlink.class.php';
  46. require_once $maindir.'gradebook/lib/be/evallink.class.php';
  47. require_once $maindir.'gradebook/lib/be/linkfactory.class.php';
  48. require_once $maindir.'gradebook/lib/be/attendancelink.class.php';
  49. require_once $maindir.'gradebook/lib/be/category.class.php';
  50. require_once $maindir.'gradebook/lib/be/dropboxlink.class.php';
  51. require_once $maindir.'gradebook/lib/be/evaluation.class.php';
  52. require_once $maindir.'gradebook/lib/be/exerciselink.class.php';
  53. require_once $maindir.'gradebook/lib/be/dropboxlink.class.php';
  54. require_once $maindir.'gradebook/lib/be/result.class.php';
  55. require_once $maindir.'gradebook/lib/be/forumthreadlink.class.php';
  56. require_once $maindir.'course_info/download.lib.php';
  57. /**Files inside '/../main/lib/' */
  58. require_once $libdir.'urlmanager.lib.php';
  59. require_once $libdir.'fileDisplay.lib.php';
  60. require_once $libdir.'groupmanager.lib.php';
  61. require_once $libdir.'course.lib.php';
  62. require_once $libdir.'usermanager.lib.php';
  63. require_once $libdir.'social.lib.php';
  64. require_once $libdir.'xht.lib.php';
  65. require_once $libdir.'xmd.lib.php';
  66. require_once $libdir.'formvalidator/FormValidator.class.php';
  67. require_once $libdir.'exercise_show_functions.lib.php';
  68. require_once $libdir.'fileManage.lib.php';
  69. require_once $libdir.'notebook.lib.php';
  70. /**This files need be inside a buffering to clean the objects*/
  71. ob_start();
  72. require_once $libdir.'main_api.lib.php';
  73. require_once $libdir.'course_document.lib.php';
  74. require_once $libdir.'banner.lib.php';
  75. require_once $libdir.'add_course.lib.inc.php';
  76. require_once $incdir.'tool_navigation_menu.inc.php';
  77. require_once $incdir.'banner.inc.php';
  78. require_once $libdir.'geometry.lib.php';
  79. ob_end_clean();
  80. /**Problem with this file to test objects*/
  81. //require_once $maindir.'exercice/exercise.lib.php';
  82. class TestManager {
  83. /* MAIN CODE */
  84. /**
  85. * This function create in the database a test course and will also load sessions.
  86. * This name will be change each time is used in the tests.
  87. * @param string Course name
  88. * @return void
  89. */
  90. function create_test_course($course_code = 'TESTCOURSE') {
  91. /* Table definitions */
  92. $table_course = Database::get_main_table(TABLE_MAIN_COURSE);
  93. $course_table = Database::get_main_table(TABLE_MAIN_COURSE);
  94. $course_cat_table = Database::get_main_table(TABLE_MAIN_CATEGORY);
  95. global $_configuration, $_user, $_course, $cidReq;
  96. $cidReq = $course_code;
  97. /* Check if the course exists */
  98. $sql = "SELECT code FROM $table_course WHERE code = '$cidReq' ";
  99. $rs = Database::query($sql, __FILE__, __LINE__);
  100. $row = Database::fetch_row($rs);
  101. /* Create the course in the database */
  102. if (empty($row[0])) {
  103. // Create a course
  104. $course_data = array(
  105. 'wanted_code'=> $cidReq,
  106. 'title'=>$cidReq,
  107. 'tutor_name'=>'John Doe',
  108. 'category_code'=>'LANG',
  109. 'course_language'=>'spanish',
  110. 'course_admin_id'=>'001',
  111. 'db_prefix'=> $_configuration['db_prefix'],
  112. 'firstExpirationDelay'=>'999'
  113. );
  114. $res = create_course($course_data['wanted_code'], $course_data['title'],
  115. $course_data['tutor_name'], $course_data['category_code'],
  116. $course_data['course_language'],$course_data['course_admin_id'],
  117. $course_data['db_prefix'], $course_data['firstExpirationDelay']);
  118. }
  119. $sql = "SELECT course.*, course_category.code faCode, course_category.name faName
  120. FROM $course_table
  121. LEFT JOIN $course_cat_table
  122. ON course.category_code = course_category.code
  123. WHERE course.code = '$cidReq'";
  124. $result = Database::query($sql);
  125. /* Create the session */
  126. if (Database::num_rows($result)>0) {
  127. $cData = Database::fetch_array($result);
  128. $_cid = $cData['code' ];
  129. $_course = array();
  130. $_course['id' ] = $cData['code' ]; //auto-assigned integer
  131. $_course['name' ] = $cData['title' ];
  132. $_course['official_code'] = $cData['visual_code' ]; // use in echo
  133. $_course['sysCode' ] = $cData['code' ]; // use as key in db
  134. $_course['path' ] = $cData['directory' ]; // use as key in path
  135. $_course['dbName' ] = $cData['db_name' ]; // use as key in db list
  136. $_course['dbNameGlu' ] = $_configuration['table_prefix'] . $cData['db_name'] . $_configuration['db_glue']; // use in all queries
  137. $_course['titular' ] = $cData['tutor_name' ];
  138. $_course['language' ] = $cData['course_language' ];
  139. $_course['extLink' ]['url' ] = $cData['department_url' ];
  140. $_course['extLink' ]['name'] = $cData['department_name' ];
  141. $_course['categoryCode'] = $cData['faCode' ];
  142. $_course['categoryName'] = $cData['faName' ];
  143. $_course['visibility' ] = $cData['visibility' ];
  144. $_course['subscribe_allowed'] = $cData['subscribe' ];
  145. $_course['unubscribe_allowed'] = $cData['unsubscribe' ];
  146. api_session_register('_cid');
  147. api_session_register('_course');
  148. }
  149. /* Load the session */
  150. $_SESSION['_user']['user_id'] = 1;
  151. $_SESSION['is_courseAdmin'] = 1;
  152. $_SESSION['show'] = showall;
  153. /* Load the user */
  154. $_user['user_id'] = $_SESSION['_user']['user_id'];
  155. }
  156. /**
  157. * This function delete the test course from the database and destroy the sessions.
  158. * @param string the course code than will be delete.
  159. * @return void
  160. */
  161. function delete_test_course($course_code = 'TESTCOURSE') {
  162. $res = CourseManager::delete_course($course_code);
  163. $path = api_get_path(SYS_PATH).'archive';
  164. if ($handle = opendir($path)) {
  165. while (false !== ($file = readdir($handle))) {
  166. if (strpos($file,$code)!==false) {
  167. if (is_dir($path.'/'.$file)) {
  168. rmdirr($path.'/'.$file);
  169. }
  170. }
  171. }
  172. closedir($handle);
  173. }
  174. // Check api session destroy
  175. if (!headers_sent() && session_id() != "") {
  176. $res=api_session_destroy();
  177. }
  178. }
  179. }