diff --git a/main/admin/filler.php b/main/admin/filler.php index 0f0b3fc810..926931e682 100644 --- a/main/admin/filler.php +++ b/main/admin/filler.php @@ -39,6 +39,10 @@ if (!empty($_GET['fill'])) { require api_get_path(SYS_TEST_PATH).'datafiller/fill_courses.php'; $output = fill_courses(); break; + case 'exe': + require api_get_path(SYS_TEST_PATH).'datafiller/fill_exe.php'; + $output = fill_exe(); + break; default: break; } @@ -68,8 +72,9 @@ if (count($output)>0) {
+ * + */ +/** + * Initialisation section + */ + +$courses = array(); +$courses[] = array( + 'code' => 'ENGLISH101', + 'title' => 'English for beginners', + 'description' => 'English course', + 'category_code' => 'PROJ', + 'course_language' => 'english', + 'user_id' => 1, + 'expiration_date' => '2020-09-01 00:00:00', + 'exemplary_content' => true, + 'exes' => array( + 'exe' => array( + 'title' => 'Demo', + 'time' => 180, + 'attempts' => 1, + 'random' => 100, + 'pass_percentage' => 70, + 'review_answers' => 1, + ), + ), +); +$qst = array( + 0 => array( + 'title' => 'Demo question', + 'desc' => 'What do you think about XYZ?', + 'type' => 1, //1=Unique answer, see question.class.php + 'answers' => array( + 0 => array ( + 'title' => 'A', + 'correct' => 1, + 'score' => 1, + ), + 1 => array ( + 'title' => 'B', + 'correct' => 0, + 'score' => 0, + ), + 2 => array ( + 'title' => 'C', + 'correct' => 0, + 'score' => 0, + ), + 3 => array ( + 'title' => 'D', + 'correct' => 0, + 'score' => 0, + ), + + ), + ), +); diff --git a/tests/datafiller/fill_exe.php b/tests/datafiller/fill_exe.php new file mode 100644 index 0000000000..41db447676 --- /dev/null +++ b/tests/datafiller/fill_exe.php @@ -0,0 +1,83 @@ + + * + */ +/** + * Initialisation section + */ +/** + * Loads the data and injects it into the Chamilo database, using the Chamilo + * internal functions. + * @return array List of user IDs for the users that have just been inserted + */ +function fill_exe() { + $qc = 5000; //how many questions to create per exercise + $eol = PHP_EOL; + $courses = array(); //declare only to avoid parsing notice + $qst = array(); + require_once 'data_exe.php'; //fill the $users array + $output = array(); + $output[] = array('title'=>'Exe Filling Report: '); + $i = 1; + $lib = api_get_path(SYS_CODE_PATH); + require_once $lib.'exercice/exercise.class.php'; + require_once $lib.'exercice/question.class.php'; + require_once $lib.'exercice/answer.class.php'; + require_once $lib.'exercice/exercise.lib.php'; + foreach ($courses as $i => $course) { + $res = 0; + //first check that the first item doesn't exist already + $output[$i]['line-init'] = $course['title']; + $res = CourseManager::create_course($course); + $output[$i]['line-info'] = ($res ? $res : get_lang('NotInserted')); + $i++; + if (is_array($res)) { + //now insert an exercise + foreach ($course['exes'] as $exe) { + $objExercise = new Exercise(); + $objExercise->id = 0; + $objExercise->course_id = $res['real_id']; + $objExercise->exercise = $exe['title']; + $objExercise->type = 1; + $objExercise->attempts = $exe['attempts']; + $objExercise->random = $exe['random']; + $objExercise->active = 1; + $objExercise->propagate_neg = 0; + $objExercise->pass_percentage = $exe['pass_percentage']; + $objExercise->session_id = 0; + $objExercise->results_disabled = 0; + $objExercise->expired_time = $exe['time']; + $objExercise->review_answers = $exe['review_answers']; + $objExercise->save(); + $id = $objExercise->id; + if (!empty($id)) { + $qi = 0; + while ($qi < $qc) { + foreach ($qst as $q) { + error_log('Created '.$qi.' questions'); + $question = Question::getInstance($q['type']); + $question->id = 0; + $question->question = $q['title'].' '.$qi; + $question->description = $q['desc']; + $question->type = $q['type']; + $question->course = $res; + $r = $question->save($id); + if ($r === false) { continue; } + $qid = $question->id; + $aid = 1; + foreach ($q['answers'] as $asw) { + $answer = new UniqueAnswer($qid); + $answer->create_answer($aid,$qid,$asw['title'],'',$asw['score'],$asw['correct'], $res['real_id']); + $aid++; + } + $qi++; + } + } + } + } + } + } + return $output; +}