Internal - Fix queries, fix translations, fix exercise CRUD

pull/3543/head
Julio Montoya 5 years ago
parent 221f68727e
commit d89cd9ac5a
  1. 3
      public/main/exercise/TestCategory.php
  2. 2
      public/main/exercise/UniqueAnswerImage.php
  3. 2
      public/main/exercise/exercise_reminder.php
  4. 32
      public/main/exercise/exercise_report.php
  5. 2
      public/main/exercise/exercise_result.php
  6. 6
      public/main/exercise/exercise_show.php
  7. 2
      public/main/exercise/live_stats.php
  8. 2
      public/main/exercise/question_create.php
  9. 68
      public/main/exercise/question_pool.php
  10. 2
      public/main/exercise/stats.php
  11. 10
      public/main/exercise/unique_answer_no_option.class.php
  12. 22
      public/main/inc/lib/exercise.lib.php
  13. 2
      public/main/inc/lib/pear/HTML/QuickForm/radio.php
  14. 7
      src/CoreBundle/Entity/TrackEAttemptRecording.php
  15. 6
      src/CourseBundle/Entity/CQuiz.php
  16. 12
      src/CourseBundle/Entity/CQuizQuestionCategory.php

@ -161,7 +161,7 @@ class TestCategory
$courseId = api_get_course_int_id(); $courseId = api_get_course_int_id();
$categories = self::getCategories($courseId); $categories = self::getCategories($courseId);
$result = ['0' => get_lang('GeneralSelected')]; $result = ['0' => get_lang('No category selected')];
foreach ($categories as $category) { foreach ($categories as $category) {
$result[$category->getIid()] = $category->getTitle(); $result[$category->getIid()] = $category->getTitle();
} }
@ -1131,7 +1131,6 @@ class TestCategory
{ {
$course = api_get_course_entity($courseId); $course = api_get_course_entity($courseId);
$session = api_get_session_entity($sessionId); $session = api_get_session_entity($sessionId);
$repo = Container::getQuestionCategoryRepository();
$sessionId = (int) $sessionId; $sessionId = (int) $sessionId;
$categories = $this->getCategories($courseId, $sessionId); $categories = $this->getCategories($courseId, $sessionId);

@ -277,7 +277,7 @@ class UniqueAnswerImage extends UniqueAnswer
$answerNumber = $form->addElement('text', 'counter['.$i.']', null, ' value = "'.$i.'"'); $answerNumber = $form->addElement('text', 'counter['.$i.']', null, ' value = "'.$i.'"');
$answerNumber->freeze(); $answerNumber->freeze();
$form->addElement('radio', 'correct', null, null, $i, 'class="checkbox"'); $form->addElement('radio', 'correct', null, null, $i, ['class' => 'checkbox']);
$form->addHtmlEditor('answer['.$i.']', null, null, false, $editorConfig); $form->addHtmlEditor('answer['.$i.']', null, null, false, $editorConfig);
$form->addRule('answer['.$i.']', get_lang('Required field'), 'required'); $form->addRule('answer['.$i.']', get_lang('Required field'), 'required');

@ -31,7 +31,7 @@ if (!empty($exerciseInSession)) {
if (!$objExercise) { if (!$objExercise) {
// Redirect to the exercise overview // Redirect to the exercise overview
// Check if the exe_id exists // Check if the exe_id exists
header('Location: '.api_get_path(WEB_CODE_PATH).'exercise/overview.php?exerciseId='.$exerciseId.'&'.api_get_cidreq()); header('Location: '.api_get_path(WEB_CODE_PATH).'exercise/overview.php?id='.$exerciseId.'&'.api_get_cidreq());
exit; exit;
} }

@ -10,6 +10,9 @@
* *
* @todo fix excel export * @todo fix excel export
*/ */
use Chamilo\CoreBundle\Entity\TrackEAttemptRecording;
require_once __DIR__.'/../inc/global.inc.php'; require_once __DIR__.'/../inc/global.inc.php';
$htmlHeadXtra[] = api_get_jqgrid_js(); $htmlHeadXtra[] = api_get_jqgrid_js();
@ -159,13 +162,14 @@ if (isset($_REQUEST['comments']) &&
if (empty($track_exercise_info)) { if (empty($track_exercise_info)) {
api_not_allowed(); api_not_allowed();
} }
$student_id = $track_exercise_info['exe_user_id']; $student_id = $track_exercise_info['exe_user_id'];
$session_id = $track_exercise_info['session_id']; $session_id = $track_exercise_info['session_id'];
$lp_id = $track_exercise_info['orig_lp_id']; $lp_id = $track_exercise_info['orig_lp_id'];
$lpItemId = $track_exercise_info['orig_lp_item_id']; $lpItemId = $track_exercise_info['orig_lp_item_id'];
$lp_item_view_id = (int) $track_exercise_info['orig_lp_item_view_id']; $lp_item_view_id = (int) $track_exercise_info['orig_lp_item_view_id'];
$exerciseId = $track_exercise_info['exe_exo_id']; $exerciseId = $track_exercise_info['exe_exo_id'];
$exeWeighting = $track_exercise_info['exe_weighting']; $exeWeighting = $track_exercise_info['max_score'];
$post_content_id = []; $post_content_id = [];
$comments_exist = false; $comments_exist = false;
@ -186,7 +190,7 @@ if (isset($_REQUEST['comments']) &&
} }
for ($i = 0; $i < $loop_in_track; $i++) { for ($i = 0; $i < $loop_in_track; $i++) {
$my_marks = isset($_POST['marks_'.$array_content_id_exe[$i]]) ? $_POST['marks_'.$array_content_id_exe[$i]] : ''; $my_marks = isset($_POST['marks_'.$array_content_id_exe[$i]]) ? $_POST['marks_'.$array_content_id_exe[$i]] : 0;
$my_comments = ''; $my_comments = '';
if (isset($_POST['comments_'.$array_content_id_exe[$i]])) { if (isset($_POST['comments_'.$array_content_id_exe[$i]])) {
$my_comments = $_POST['comments_'.$array_content_id_exe[$i]]; $my_comments = $_POST['comments_'.$array_content_id_exe[$i]];
@ -203,15 +207,29 @@ if (isset($_REQUEST['comments']) &&
['question_id = ? AND exe_id = ?' => [$my_questionid, $id]] ['question_id = ? AND exe_id = ?' => [$my_questionid, $id]]
); );
$params = [ $recording = new TrackEAttemptRecording();
'exe_id' => $id, $recording
'question_id' => $my_questionid, ->setExeId($id)
->setQuestionId($my_questionid)
->setAuthor(api_get_user_id())
->setTeacherComment($my_comments)
->setExeId($id)
->setMarks($my_marks)
->setSessionId(api_get_session_id())
;
$em = Database::getManager();
$em->persist($recording);
$em->flush();
/*$params = [
'marks' => $my_marks, 'marks' => $my_marks,
'insert_date' => api_get_utc_datetime(), //'insert_date' => api_get_utc_datetime(),
'author' => api_get_user_id(), 'author' => api_get_user_id(),
'teacher_comment' => $my_comments, 'teacher_comment' => $my_comments,
'session_id' => api_get_session_id(),
]; ];
Database::insert($TBL_TRACK_ATTEMPT_RECORDING, $params); Database::insert($TBL_TRACK_ATTEMPT_RECORDING, $params);*/
} }
$useEvaluationPlugin = false; $useEvaluationPlugin = false;

@ -43,7 +43,7 @@ if (empty($objExercise)) {
$objExercise = new Exercise(); $objExercise = new Exercise();
$exercise_stat_info = $objExercise->get_stat_track_exercise_info_by_exe_id($exe_id); $exercise_stat_info = $objExercise->get_stat_track_exercise_info_by_exe_id($exe_id);
if (!empty($exercise_stat_info) && isset($exercise_stat_info['exe_exo_id'])) { if (!empty($exercise_stat_info) && isset($exercise_stat_info['exe_exo_id'])) {
header('Location: overview.php?exerciseId='.$exercise_stat_info['exe_exo_id'].'&'.api_get_cidreq()); header('Location: overview.php?id='.$exercise_stat_info['exe_exo_id'].'&'.api_get_cidreq());
exit; exit;
} }
api_not_allowed(true); api_not_allowed(true);

@ -32,7 +32,7 @@ if (empty($track_exercise_info)) {
api_not_allowed($printHeaders); api_not_allowed($printHeaders);
} }
$exercise_id = $track_exercise_info['id']; $exercise_id = $track_exercise_info['iid'];
$student_id = $track_exercise_info['exe_user_id']; $student_id = $track_exercise_info['exe_user_id'];
$learnpath_id = $track_exercise_info['orig_lp_id']; $learnpath_id = $track_exercise_info['orig_lp_id'];
$learnpath_item_id = $track_exercise_info['orig_lp_item_id']; $learnpath_item_id = $track_exercise_info['orig_lp_item_id'];
@ -152,7 +152,7 @@ $interbreadcrumb[] = [
'name' => get_lang('Tests'), 'name' => get_lang('Tests'),
]; ];
$interbreadcrumb[] = [ $interbreadcrumb[] = [
'url' => 'overview.php?exerciseId='.$exercise_id.'&'.api_get_cidreq(), 'url' => 'overview.php?id='.$exercise_id.'&'.api_get_cidreq(),
'name' => $objExercise->selectTitle(true), 'name' => $objExercise->selectTitle(true),
]; ];
$interbreadcrumb[] = ['url' => '#', 'name' => get_lang('Result')]; $interbreadcrumb[] = ['url' => '#', 'name' => get_lang('Result')];
@ -333,7 +333,7 @@ $sql = "SELECT attempts.question_id, answer
quizz_rel_questions.c_id=".api_get_course_int_id()." quizz_rel_questions.c_id=".api_get_course_int_id()."
INNER JOIN $TBL_QUESTIONS AS questions INNER JOIN $TBL_QUESTIONS AS questions
ON ON
questions.id = quizz_rel_questions.question_id AND questions.iid = quizz_rel_questions.question_id AND
questions.c_id = ".api_get_course_int_id()." questions.c_id = ".api_get_course_int_id()."
WHERE WHERE
attempts.exe_id = $id $user_restriction attempts.exe_id = $id $user_restriction

@ -24,7 +24,7 @@ $interbreadcrumb[] = [
'name' => get_lang('Tests'), 'name' => get_lang('Tests'),
]; ];
$interbreadcrumb[] = [ $interbreadcrumb[] = [
'url' => "admin.php?exerciseId=$exercise_id&".api_get_cidreq(), 'url' => "admin.php?id=$exercise_id&".api_get_cidreq(),
'name' => $objExercise->selectTitle(true), 'name' => $objExercise->selectTitle(true),
]; ];

@ -94,7 +94,7 @@ if ($form->validate()) {
header('Location: question_create.php?'.api_get_cidreq().'&error=true'); header('Location: question_create.php?'.api_get_cidreq().'&error=true');
exit; exit;
} }
header('Location: admin.php?exerciseId='.$values['exercise'].'&newQuestion=yes&isContent='.$values['is_content'].'&answerType='.$answer_type); header('Location: admin.php?id='.$values['exercise'].'&newQuestion=yes&isContent='.$values['is_content'].'&answerType='.$answer_type);
exit; exit;
} else { } else {
// header // header

@ -19,7 +19,6 @@ require_once __DIR__.'/../inc/global.inc.php';
api_protect_course_script(true); api_protect_course_script(true);
$this_section = SECTION_COURSES; $this_section = SECTION_COURSES;
$is_allowedToEdit = api_is_allowed_to_edit(null, true); $is_allowedToEdit = api_is_allowed_to_edit(null, true);
$delete = isset($_GET['delete']) ? (int) $_GET['delete'] : null; $delete = isset($_GET['delete']) ? (int) $_GET['delete'] : null;
@ -56,7 +55,7 @@ $interbreadcrumb[] = ['url' => 'exercise.php?'.api_get_cidreq(), 'name' => get_l
if (!empty($objExercise->id)) { if (!empty($objExercise->id)) {
$interbreadcrumb[] = [ $interbreadcrumb[] = [
'url' => 'admin.php?exerciseId='.$objExercise->id.'&'.api_get_cidreq(), 'url' => 'admin.php?id='.$objExercise->id.'&'.api_get_cidreq(),
'name' => $objExercise->selectTitle(true), 'name' => $objExercise->selectTitle(true),
]; ];
} }
@ -306,7 +305,7 @@ if (isset($fromExercise) && $fromExercise > 0) {
} else { } else {
echo '<a href="exercise.php?'.api_get_cidreq().'">'. echo '<a href="exercise.php?'.api_get_cidreq().'">'.
Display::return_icon('back.png', get_lang('BackToTestsList'), '', ICON_SIZE_MEDIUM).'</a>'; Display::return_icon('back.png', get_lang('BackToTestsList'), '', ICON_SIZE_MEDIUM).'</a>';
echo "<a href='admin.php?exerciseId=0'>". echo "<a href='admin.php?id=0'>".
Display::return_icon('add_question.gif', get_lang('New question'), '', ICON_SIZE_MEDIUM).'</a>'; Display::return_icon('add_question.gif', get_lang('New question'), '', ICON_SIZE_MEDIUM).'</a>';
$titleAdd = get_lang('Manage all questions'); $titleAdd = get_lang('Manage all questions');
} }
@ -408,16 +407,16 @@ $my_exercise_list['-1'] = get_lang('Orphan questions');
$titleSavedAsHtml = api_get_configuration_value('save_titles_as_html'); $titleSavedAsHtml = api_get_configuration_value('save_titles_as_html');
if (is_array($exercise_list)) { if (is_array($exercise_list)) {
foreach ($exercise_list as $row) { foreach ($exercise_list as $row) {
$my_exercise_list[$row['id']] = ''; $my_exercise_list[$row['iid']] = '';
if ($row['id'] == $fromExercise && $selected_course == api_get_course_int_id()) { if ($row['iid'] == $fromExercise && $selected_course == api_get_course_int_id()) {
$my_exercise_list[$row['id']] = '>&nbsp;&nbsp;&nbsp;&nbsp;'; $my_exercise_list[$row['iid']] = '>&nbsp;&nbsp;&nbsp;&nbsp;';
} }
$exerciseTitle = $row['title']; $exerciseTitle = $row['title'];
if ($titleSavedAsHtml) { if ($titleSavedAsHtml) {
$exerciseTitle = strip_tags(api_html_entity_decode(trim($exerciseTitle))); $exerciseTitle = strip_tags(api_html_entity_decode(trim($exerciseTitle)));
} }
$my_exercise_list[$row['id']] .= $exerciseTitle; $my_exercise_list[$row['iid']] .= $exerciseTitle;
} }
} }
@ -635,7 +634,7 @@ function getQuestions(
if (!empty($fromExercise)) { if (!empty($fromExercise)) {
$currentCourseId = api_get_course_int_id(); $currentCourseId = api_get_course_int_id();
$currentExerciseCondition = " $currentExerciseCondition = "
AND qu.id NOT IN ( AND qu.iid NOT IN (
SELECT question_id FROM $TBL_EXERCISE_QUESTION SELECT question_id FROM $TBL_EXERCISE_QUESTION
WHERE exercice_id = $fromExercise AND c_id = $currentCourseId WHERE exercice_id = $fromExercise AND c_id = $currentCourseId
)"; )";
@ -651,7 +650,7 @@ function getQuestions(
$from = ", $TBL_COURSE_REL_CATEGORY crc "; $from = ", $TBL_COURSE_REL_CATEGORY crc ";
$where .= " AND $where .= " AND
crc.c_id = $selected_course AND crc.c_id = $selected_course AND
crc.question_id = qu.id AND crc.question_id = qu.iid AND
crc.category_id = $courseCategoryId"; crc.category_id = $courseCategoryId";
} }
if (isset($exerciseLevel) && -1 != $exerciseLevel) { if (isset($exerciseLevel) && -1 != $exerciseLevel) {
@ -670,7 +669,7 @@ function getQuestions(
} }
$select = 'DISTINCT $select = 'DISTINCT
id, iid,
question, question,
type, type,
level, level,
@ -680,9 +679,9 @@ function getQuestions(
} }
$sql = "SELECT $select $sql = "SELECT $select
FROM FROM
$TBL_EXERCISE_QUESTION qt $TBL_EXERCISE_QUESTION qt
INNER JOIN $TBL_QUESTIONS qu INNER JOIN $TBL_QUESTIONS qu
ON qt.question_id = qu.id ON qt.question_id = qu.iid
$from $from
{$efConditions['from']} {$efConditions['from']}
WHERE WHERE
@ -701,7 +700,7 @@ function getQuestions(
$from = ''; $from = '';
if (isset($courseCategoryId) && $courseCategoryId > 0) { if (isset($courseCategoryId) && $courseCategoryId > 0) {
$from = " INNER JOIN $TBL_COURSE_REL_CATEGORY crc $from = " INNER JOIN $TBL_COURSE_REL_CATEGORY crc
ON crc.question_id = q.id AND crc.c_id = q.c_id "; ON crc.question_id = q.iid AND crc.c_id = q.c_id ";
$level_where .= " AND $level_where .= " AND
crc.c_id = $selected_course AND crc.c_id = $selected_course AND
crc.category_id = $courseCategoryId"; crc.category_id = $courseCategoryId";
@ -732,7 +731,7 @@ function getQuestions(
SELECT $select SELECT $select
FROM $TBL_QUESTIONS qu FROM $TBL_QUESTIONS qu
INNER JOIN $TBL_EXERCISE_QUESTION r INNER JOIN $TBL_EXERCISE_QUESTION r
ON (qu.c_id = r.c_id AND qu.id = r.question_id) ON (qu.c_id = r.c_id AND qu.iid = r.question_id)
INNER JOIN $TBL_EXERCISES ex INNER JOIN $TBL_EXERCISES ex
ON (ex.id = r.exercice_id AND ex.c_id = r.c_id) ON (ex.id = r.exercice_id AND ex.c_id = r.c_id)
$from $from
@ -749,7 +748,7 @@ function getQuestions(
SELECT $select SELECT $select
FROM $TBL_QUESTIONS qu FROM $TBL_QUESTIONS qu
LEFT OUTER JOIN $TBL_EXERCISE_QUESTION r LEFT OUTER JOIN $TBL_EXERCISE_QUESTION r
ON (qu.c_id = r.c_id AND qu.id = r.question_id) ON (qu.c_id = r.c_id AND qu.iid = r.question_id)
$from $from
{$efConditions['from']} {$efConditions['from']}
WHERE WHERE
@ -764,7 +763,7 @@ function getQuestions(
SELECT $select SELECT $select
FROM $TBL_QUESTIONS qu FROM $TBL_QUESTIONS qu
INNER JOIN $TBL_EXERCISE_QUESTION r INNER JOIN $TBL_EXERCISE_QUESTION r
ON (qu.c_id = r.c_id AND qu.id = r.question_id) ON (qu.c_id = r.c_id AND qu.iid = r.question_id)
$from $from
{$efConditions['from']} {$efConditions['from']}
WHERE WHERE
@ -788,7 +787,7 @@ function getQuestions(
$from = ", $TBL_COURSE_REL_CATEGORY crc "; $from = ", $TBL_COURSE_REL_CATEGORY crc ";
$filter .= " AND $filter .= " AND
crc.c_id = $selected_course AND crc.c_id = $selected_course AND
crc.question_id = qu.id AND crc.question_id = qu.iid AND
crc.category_id = $courseCategoryId"; crc.category_id = $courseCategoryId";
} }
if (isset($exerciseLevel) && -1 != $exerciseLevel) { if (isset($exerciseLevel) && -1 != $exerciseLevel) {
@ -811,7 +810,7 @@ function getQuestions(
} }
$sessionCondition = api_get_session_condition($session_id, true, 'q.session_id'); $sessionCondition = api_get_session_condition($session_id, true, 'q.session_id');
$select = 'qu.iid, qu.id, question, qu.type, level, q.session_id, qt.exercice_id exerciseId '; $select = 'qu.iid, question, qu.type, level, q.session_id, qt.exercice_id exerciseId ';
if ($getCount) { if ($getCount) {
$select = 'count(qu.iid) as count'; $select = 'count(qu.iid) as count';
} }
@ -822,9 +821,9 @@ function getQuestions(
FROM FROM
$TBL_QUESTIONS as qu $TBL_QUESTIONS as qu
INNER JOIN $TBL_EXERCISE_QUESTION as qt INNER JOIN $TBL_EXERCISE_QUESTION as qt
ON (qu.id = qt.question_id AND qu.c_id = qt.c_id) ON (qu.iid = qt.question_id AND qu.c_id = qt.c_id)
INNER JOIN $TBL_EXERCISES as q INNER JOIN $TBL_EXERCISES as q
ON (q.c_id = qu.c_id AND q.id = qt.exercice_id) ON (q.c_id = qu.c_id AND q.iid = qt.exercice_id)
{$efConditions['from']} {$efConditions['from']}
$from $from
WHERE WHERE
@ -980,19 +979,20 @@ if ($fromExercise <= 0) {
$data = []; $data = [];
if (is_array($mainQuestionList)) { if (is_array($mainQuestionList)) {
foreach ($mainQuestionList as $question) { foreach ($mainQuestionList as $question) {
$questionId = $question['iid'];
$row = []; $row = [];
// This function checks if the question can be read // This function checks if the question can be read
$question_type = get_question_type_for_question($selected_course, $question['id']); $question_type = get_question_type_for_question($selected_course, $questionId);
if (empty($question_type)) { if (empty($question_type)) {
continue; continue;
} }
$sessionId = isset($question['session_id']) ? $question['session_id'] : null; $sessionId = isset($question['session_id']) ? $question['session_id'] : null;
if (!$objExercise->hasQuestion($question['id'])) { if (!$objExercise->hasQuestion($question['iid'])) {
$row[] = Display::input( $row[] = Display::input(
'checkbox', 'checkbox',
'questions[]', 'questions[]',
$question['id'], $questionId,
['class' => 'question_checkbox'] ['class' => 'question_checkbox']
); );
} else { } else {
@ -1002,7 +1002,7 @@ if (is_array($mainQuestionList)) {
$row[] = getLinkForQuestion( $row[] = getLinkForQuestion(
$questionTagA, $questionTagA,
$fromExercise, $fromExercise,
$question['id'], $questionId,
$question['type'], $question['type'],
$question['question'], $question['question'],
$sessionId, $sessionId,
@ -1010,12 +1010,12 @@ if (is_array($mainQuestionList)) {
); );
$row[] = $question_type; $row[] = $question_type;
$row[] = TestCategory::getCategoryNameForQuestion($question['id'], $selected_course); $row[] = TestCategory::getCategoryNameForQuestion($questionId, $selected_course);
$row[] = $question['level']; $row[] = $question['level'];
$row[] = get_action_icon_for_question( $row[] = get_action_icon_for_question(
$actionIcon1, $actionIcon1,
$fromExercise, $fromExercise,
$question['id'], $questionId,
$question['type'], $question['type'],
$question['question'], $question['question'],
$selected_course, $selected_course,
@ -1029,7 +1029,7 @@ if (is_array($mainQuestionList)) {
get_action_icon_for_question( get_action_icon_for_question(
$actionIcon2, $actionIcon2,
$fromExercise, $fromExercise,
$question['id'], $questionId,
$question['type'], $question['type'],
$question['question'], $question['question'],
$selected_course, $selected_course,
@ -1045,12 +1045,12 @@ if (is_array($mainQuestionList)) {
} }
$headers = [ $headers = [
'', '',
get_lang('QuestionUpperCaseFirstLetter'), get_lang('Question'),
get_lang('Type'), get_lang('Type'),
get_lang('QuestionCategory'), get_lang('QuestionCategory'),
get_lang('Difficulty'), get_lang('Difficulty'),
$actionLabel, $actionLabel,
]; ];
echo $pagination; echo $pagination;
@ -1080,7 +1080,7 @@ foreach ($data as $rows) {
$row, $row,
$column, $column,
$value $value
); );
$column++; $column++;
} }
$row++; $row++;

@ -310,7 +310,7 @@ $interbreadcrumb[] = [
'name' => get_lang('Tests'), 'name' => get_lang('Tests'),
]; ];
$interbreadcrumb[] = [ $interbreadcrumb[] = [
'url' => "admin.php?exerciseId=$exerciseId&".api_get_cidreq(), 'url' => "admin.php?id=$exerciseId&".api_get_cidreq(),
'name' => $objExercise->selectTitle(true), 'name' => $objExercise->selectTitle(true),
]; ];

@ -186,9 +186,15 @@ class UniqueAnswerNoOption extends Question
$answer_number = $form->addElement('text', 'counter['.$i.']', null, 'value="'.$i.'"'); $answer_number = $form->addElement('text', 'counter['.$i.']', null, 'value="'.$i.'"');
$answer_number->freeze(); $answer_number->freeze();
$form->addElement('radio', 'correct', null, null, $i, 'class="checkbox" style="margin-left: 0em;"'); $form->addElement(
'radio',
'correct',
null,
null,
$i,
['class' => 'checkbox', 'style' => 'margin-left: 0em;']
);
$form->addElement('html_editor', 'answer['.$i.']', null, [], $editor_config); $form->addElement('html_editor', 'answer['.$i.']', null, [], $editor_config);
$form->addElement('html_editor', 'comment['.$i.']', null, [], $editor_config); $form->addElement('html_editor', 'comment['.$i.']', null, [], $editor_config);
$form->addElement('text', 'weighting['.$i.']', null, ['style' => 'width: 60px;', 'value' => '0']); $form->addElement('text', 'weighting['.$i.']', null, ['style' => 'width: 60px;', 'value' => '0']);
$form->addElement('html', '</tr>'); $form->addElement('html', '</tr>');

@ -1897,7 +1897,7 @@ HOTSPOT;
$sql_inner_join_tbl_user = " $sql_inner_join_tbl_user = "
( (
SELECT SELECT
u.user_id, u.id as user_id,
firstname, firstname,
lastname, lastname,
official_code, official_code,
@ -1907,7 +1907,7 @@ HOTSPOT;
g.id as group_id g.id as group_id
FROM $TBL_USER u FROM $TBL_USER u
INNER JOIN $TBL_GROUP_REL_USER gru INNER JOIN $TBL_GROUP_REL_USER gru
ON (gru.user_id = u.user_id AND gru.c_id= $course_id ) ON (gru.user_id = u.id AND gru.c_id= $course_id )
INNER JOIN $TBL_GROUP g INNER JOIN $TBL_GROUP g
ON (gru.group_id = g.id AND g.c_id= $course_id ) ON (gru.group_id = g.id AND g.c_id= $course_id )
)"; )";
@ -1933,7 +1933,7 @@ HOTSPOT;
$sql_inner_join_tbl_user = " $sql_inner_join_tbl_user = "
( (
SELECT SELECT
u.user_id, u.id as user_id,
firstname, firstname,
lastname, lastname,
official_code, official_code,
@ -1960,17 +1960,17 @@ HOTSPOT;
$sql_inner_join_tbl_user = " $sql_inner_join_tbl_user = "
( (
SELECT SELECT
u.user_id, u.id as user_id,
firstname, firstname,
lastname, lastname,
official_code, official_code,
email, email,
username, username,
g.name as group_name, g.name as group_name,
g.id as group_id g.iid as group_id
FROM $TBL_USER u FROM $TBL_USER u
LEFT OUTER JOIN $TBL_GROUP_REL_USER gru LEFT OUTER JOIN $TBL_GROUP_REL_USER gru
ON ( gru.user_id = u.user_id AND gru.c_id= $course_id ) ON (gru.user_id = u.id AND gru.c_id= $course_id )
LEFT OUTER JOIN $TBL_GROUP g LEFT OUTER JOIN $TBL_GROUP g
ON (gru.group_id = g.id AND g.c_id = $course_id ) ON (gru.group_id = g.id AND g.c_id = $course_id )
)"; )";
@ -1982,7 +1982,7 @@ HOTSPOT;
$is_empty_sql_inner_join_tbl_user = true; $is_empty_sql_inner_join_tbl_user = true;
$sql_inner_join_tbl_user = " $sql_inner_join_tbl_user = "
( (
SELECT u.user_id, firstname, lastname, email, username, ' ' as group_name, '' as group_id, official_code SELECT u.id as user_id, firstname, lastname, email, username, ' ' as group_name, '' as group_id, official_code
FROM $TBL_USER u FROM $TBL_USER u
WHERE u.status NOT IN(".api_get_users_status_ignored_in_reports('string').") WHERE u.status NOT IN(".api_get_users_status_ignored_in_reports('string').")
)"; )";
@ -1996,7 +1996,7 @@ HOTSPOT;
$sql_select = 'SELECT count(te.exe_id) '; $sql_select = 'SELECT count(te.exe_id) ';
} else { } else {
$sql_select = "SELECT DISTINCT $sql_select = "SELECT DISTINCT
user_id, user.user_id,
$first_and_last_name, $first_and_last_name,
official_code, official_code,
ce.title, ce.title,
@ -2024,9 +2024,9 @@ HOTSPOT;
$sql = " $sql_select $sql = " $sql_select
FROM $TBL_EXERCICES AS ce FROM $TBL_EXERCICES AS ce
INNER JOIN $sql_inner_join_tbl_track_exercices AS te INNER JOIN $sql_inner_join_tbl_track_exercices AS te
ON (te.exe_exo_id = ce.id) ON (te.exe_exo_id = ce.iid)
INNER JOIN $sql_inner_join_tbl_user AS user INNER JOIN $sql_inner_join_tbl_user AS user
ON (user.id = exe_user_id) ON (user.user_id = exe_user_id)
WHERE WHERE
te.c_id = $course_id $session_id_and AND te.c_id = $course_id $session_id_and AND
ce.active <> -1 AND ce.active <> -1 AND
@ -3859,7 +3859,7 @@ EOT;
if (empty($session_id)) { if (empty($session_id)) {
$courseCondition = " $courseCondition = "
INNER JOIN $courseUser cu INNER JOIN $courseUser cu
ON cu.c_id = c.id AND cu.user_id = exe_user_id"; ON cu.c_id = c.id AND cu.user_id = exe_user_id";
$courseConditionWhere = " AND relation_type <> 2 AND cu.status = ".STUDENT; $courseConditionWhere = " AND relation_type <> 2 AND cu.status = ".STUDENT;
} else { } else {
$courseCondition = " $courseCondition = "

@ -54,7 +54,7 @@ class HTML_QuickForm_radio extends HTML_QuickForm_input
$elementLabel = null, $elementLabel = null,
$text = null, $text = null,
$value = null, $value = null,
array $attributes = [] $attributes = []
) { ) {
$this->labelClass = isset($attributes['label-class']) ? $attributes['label-class'] : ''; $this->labelClass = isset($attributes['label-class']) ? $attributes['label-class'] : '';
$this->radioClass = isset($attributes['radio-class']) ? $attributes['radio-class'] : 'form-check'; $this->radioClass = isset($attributes['radio-class']) ? $attributes['radio-class'] : 'form-check';

@ -5,6 +5,7 @@
namespace Chamilo\CoreBundle\Entity; namespace Chamilo\CoreBundle\Entity;
use Doctrine\ORM\Mapping as ORM; use Doctrine\ORM\Mapping as ORM;
use Gedmo\Mapping\Annotation as Gedmo;
/** /**
* TrackEAttemptRecording. * TrackEAttemptRecording.
@ -51,6 +52,7 @@ class TrackEAttemptRecording
/** /**
* @var \DateTime * @var \DateTime
* @Gedmo\Timestampable(on="create")
* *
* @ORM\Column(name="insert_date", type="datetime", nullable=false) * @ORM\Column(name="insert_date", type="datetime", nullable=false)
*/ */
@ -77,6 +79,11 @@ class TrackEAttemptRecording
*/ */
protected $sessionId; protected $sessionId;
public function __construct()
{
$this->sessionId = 0;
}
/** /**
* Set exeId. * Set exeId.
* *

@ -250,7 +250,7 @@ class CQuiz extends AbstractResource implements ResourceInterface
protected $autoLaunch; protected $autoLaunch;
/** /**
* @var int * @var array
* *
* @ORM\Column(name="page_result_configuration", type="array", nullable=true) * @ORM\Column(name="page_result_configuration", type="array", nullable=true)
*/ */
@ -955,12 +955,12 @@ class CQuiz extends AbstractResource implements ResourceInterface
return $this; return $this;
} }
public function getPageResultConfiguration(): int public function getPageResultConfiguration(): array
{ {
return $this->pageResultConfiguration; return $this->pageResultConfiguration;
} }
public function setPageResultConfiguration(int $pageResultConfiguration): self public function setPageResultConfiguration($pageResultConfiguration): self
{ {
$this->pageResultConfiguration = $pageResultConfiguration; $this->pageResultConfiguration = $pageResultConfiguration;

@ -191,21 +191,21 @@ class CQuizQuestionCategory extends AbstractResource implements ResourceInterfac
} }
/** /**
* @return CQuizQuestionCategory[] * @return CQuizQuestion[]|Collection
*/ */
public function getQuestionCategories() public function getQuestions()
{ {
return $this->questionCategories; return $this->questions;
} }
/** /**
* @param CQuizQuestionCategory[] $questionCategories * @param CQuizQuestion[]|Collection $questions
* *
* @return CQuizQuestionCategory * @return CQuizQuestionCategory
*/ */
public function setQuestionCategories($questionCategories): self public function setQuestions($questions)
{ {
$this->questionCategories = $questionCategories; $this->questions = $questions;
return $this; return $this;
} }

Loading…
Cancel
Save