fill_exe.php 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <?php
  2. /**
  3. * This script contains a data filling procedure for an exercise
  4. * @author Yannick Warnier <yannick.warnier@beeznest.com>
  5. *
  6. */
  7. /**
  8. * Initialisation section
  9. */
  10. /**
  11. * Loads the data and injects it into the Chamilo database, using the Chamilo
  12. * internal functions.
  13. * @return array List of user IDs for the users that have just been inserted
  14. */
  15. function fill_exe() {
  16. $qc = 5000; //how many questions to create per exercise
  17. $eol = PHP_EOL;
  18. $courses = array(); //declare only to avoid parsing notice
  19. $qst = array();
  20. require_once 'data_exe.php'; //fill the $users array
  21. $output = array();
  22. $output[] = array('title'=>'Exe Filling Report: ');
  23. $i = 1;
  24. $lib = api_get_path(SYS_CODE_PATH);
  25. require_once $lib.'exercice/exercise.class.php';
  26. require_once $lib.'exercice/question.class.php';
  27. require_once $lib.'exercice/answer.class.php';
  28. require_once $lib.'exercice/exercise.lib.php';
  29. foreach ($courses as $i => $course) {
  30. $res = 0;
  31. //first check that the first item doesn't exist already
  32. $output[$i]['line-init'] = $course['title'];
  33. $res = CourseManager::create_course($course);
  34. $output[$i]['line-info'] = ($res ? $res : get_lang('NotInserted'));
  35. $i++;
  36. if (is_array($res)) {
  37. //now insert an exercise
  38. foreach ($course['exes'] as $exe) {
  39. $objExercise = new Exercise();
  40. $objExercise->id = 0;
  41. $objExercise->course_id = $res['real_id'];
  42. $objExercise->exercise = $exe['title'];
  43. $objExercise->type = 1;
  44. $objExercise->attempts = $exe['attempts'];
  45. $objExercise->random = $exe['random'];
  46. $objExercise->active = 1;
  47. $objExercise->propagate_neg = 0;
  48. $objExercise->pass_percentage = $exe['pass_percentage'];
  49. $objExercise->session_id = 0;
  50. $objExercise->results_disabled = 0;
  51. $objExercise->expired_time = $exe['time'];
  52. $objExercise->review_answers = $exe['review_answers'];
  53. $objExercise->save();
  54. $id = $objExercise->id;
  55. if (!empty($id)) {
  56. $qi = 0;
  57. while ($qi < $qc) {
  58. foreach ($qst as $q) {
  59. error_log('Created '.$qi.' questions');
  60. $question = Question::getInstance($q['type']);
  61. $question->id = 0;
  62. $question->question = $q['title'].' '.$qi;
  63. $question->description = $q['desc'];
  64. $question->type = $q['type'];
  65. $question->course = $res;
  66. $r = $question->save($id);
  67. if ($r === false) { continue; }
  68. $qid = $question->id;
  69. $aid = 1;
  70. foreach ($q['answers'] as $asw) {
  71. $answer = new UniqueAnswer($qid);
  72. $answer->create_answer($aid,$qid,$asw['title'],'',$asw['score'],$asw['correct'], $res['real_id']);
  73. $aid++;
  74. }
  75. $qi++;
  76. }
  77. }
  78. }
  79. }
  80. }
  81. }
  82. return $output;
  83. }