';
echo Security::remove_XSS($answerHTML, COURSEMANAGERLOWSECURITY);
echo ' ';
} else {
echo '';
echo Security::remove_XSS($answerHTML, COURSEMANAGERLOWSECURITY);
echo ' ';
if (!api_is_allowed_to_edit(null, true) && $feedbackType != EXERCISE_FEEDBACK_TYPE_EXAM) {
echo '';
$comm = Event::get_comments($id, $questionId);
echo ' ';
}
echo ' ';
}
}
/**
* Shows the answer to a calculated question, as HTML
* @param Exercise $exercise
* @param string Answer text
* @param int Exercise ID
* @param int Question ID
* @return void
*/
public static function display_calculated_answer(
$exercise,
$feedback_type,
$answer,
$id,
$questionId,
$results_disabled,
$showTotalScoreAndUserChoices,
$expectedChoice = '',
$choice = '',
$status = ''
) {
if ($exercise->showExpectedChoice()) {
if (empty($id)) {
echo ''. Security::remove_XSS($answer).' ';
echo ''. Security::remove_XSS($choice).' ';
echo ''. Security::remove_XSS($expectedChoice).' ';
echo ''. Security::remove_XSS($status).' ';
echo ' ';
} else {
echo '';
echo Security::remove_XSS($answer);
echo ' ';
echo Security::remove_XSS($choice);
echo ' ';
echo Security::remove_XSS($expectedChoice);
echo ' ';
echo Security::remove_XSS($status);
echo ' ';
if (!api_is_allowed_to_edit(null, true) && $feedback_type != EXERCISE_FEEDBACK_TYPE_EXAM) {
echo '';
$comm = Event::get_comments($id, $questionId);
echo ' ';
}
echo ' ';
}
} else {
if (empty($id)) {
echo ''.Security::remove_XSS($answer).' ';
} else {
echo '';
echo Security::remove_XSS($answer);
if (!api_is_allowed_to_edit(null, true) && $feedback_type != EXERCISE_FEEDBACK_TYPE_EXAM) {
echo ' ';
$comm = Event::get_comments($id, $questionId);
echo ' ';
}
echo ' ';
}
}
}
/**
* Shows the answer to a free-answer question, as HTML
* @param string Answer text
* @param int Exercise ID
* @param int Question ID
* @return void
*/
public static function display_free_answer(
$feedback_type,
$answer,
$exe_id,
$questionId,
$questionScore = null,
$results_disabled = 0
) {
$comments = Event::get_comments($exe_id, $questionId);
if (!empty($answer)) {
echo '';
echo Security::remove_XSS($answer);
echo ' ';
}
if ($feedback_type != EXERCISE_FEEDBACK_TYPE_EXAM) {
if ($questionScore > 0 || !empty($comments)) {
} else {
echo '';
echo Display::tag('td', ExerciseLib::getNotCorrectedYetText(), []);
echo ' ';
}
}
}
/**
* @param $feedback_type
* @param $answer
* @param $id
* @param $questionId
* @param null $fileUrl
* @param int $results_disabled
* @param int $questionScore
*/
public static function display_oral_expression_answer(
$feedback_type,
$answer,
$id,
$questionId,
$fileUrl = null,
$results_disabled = 0,
$questionScore = 0
) {
if (isset($fileUrl)) {
echo '
';
}
if (empty($id)) {
echo '';
echo Display::tag('td', Security::remove_XSS($answer), ['width'=>'55%']);
echo ' ';
if (!$questionScore && $feedback_type != EXERCISE_FEEDBACK_TYPE_EXAM) {
echo '';
echo Display::tag('td', ExerciseLib::getNotCorrectedYetText(), ['width'=>'45%']);
echo ' ';
} else {
echo ' ';
}
} else {
echo '';
echo '';
if (!empty($answer)) {
echo Security::remove_XSS($answer);
}
echo ' ';
if (!api_is_allowed_to_edit(null, true) && $feedback_type != EXERCISE_FEEDBACK_TYPE_EXAM) {
echo '';
$comm = Event::get_comments($id, $questionId);
echo ' ';
}
echo ' ';
}
}
/**
* Displays the answer to a hotspot question
* @param int $feedback_type
* @param int $answerId
* @param string $answer
* @param string $studentChoice
* @param string $answerComment
* @param int $resultsDisabled
* @param int $orderColor
* @param bool $showTotalScoreAndUserChoices
*/
public static function display_hotspot_answer(
$feedback_type,
$answerId,
$answer,
$studentChoice,
$answerComment,
$resultsDisabled,
$orderColor,
$showTotalScoreAndUserChoices
) {
$hide_expected_answer = false;
if ($feedback_type == 0 && $resultsDisabled == 2) {
$hide_expected_answer = true;
}
if ($resultsDisabled == RESULT_DISABLE_SHOW_SCORE_ATTEMPT_SHOW_ANSWERS_LAST_ATTEMPT) {
$hide_expected_answer = true;
if ($showTotalScoreAndUserChoices) {
$hide_expected_answer = false;
}
}
$hotspot_colors = [
"", // $i starts from 1 on next loop (ugly fix)
"#4271B5",
"#FE8E16",
"#45C7F0",
"#BCD631",
"#D63173",
"#D7D7D7",
"#90AFDD",
"#AF8640",
"#4F9242",
"#F4EB24",
"#ED2024",
"#3B3B3B",
"#F7BDE2"
];
echo '';
echo '';
echo ' ';
echo ' ';
echo '';
echo "$answerId - $answer";
echo ' ';
echo '';
if (!$hide_expected_answer) {
$status = Display::label(get_lang('Incorrect'), 'danger');
if ($studentChoice) {
$status = Display::label(get_lang('Correct'), 'success');
}
echo $status;
}
echo ' ';
if ($feedback_type != EXERCISE_FEEDBACK_TYPE_EXAM) {
echo '';
if ($studentChoice) {
echo ''.nl2br($answerComment).' ';
}
echo ' ';
} else {
echo ' ';
}
echo ' ';
}
/**
* Display the answers to a multiple choice question
* @param Exercise $exercise
* @param int $feedback_type Feedback type
* @param int $answerType Answer type
* @param int $studentChoice Student choice
* @param string $answer Textual answer
* @param string $answerComment Comment on answer
* @param string $answerCorrect Correct answer comment
* @param int $id Exercise ID
* @param int $questionId Question ID
* @param boolean $ans Whether to show the answer comment or not
* @param bool $resultsDisabled
* @param bool $showTotalScoreAndUserChoices
* @param bool $export
* @return void
*/
public static function display_unique_or_multiple_answer(
$exercise,
$feedback_type,
$answerType,
$studentChoice,
$answer,
$answerComment,
$answerCorrect,
$id,
$questionId,
$ans,
$resultsDisabled,
$showTotalScoreAndUserChoices,
$export = false
) {
if ($export) {
$answer = strip_tags_blacklist($answer, ['title', 'head']);
// Fix answers that contains this tags
$tags = [
'',
'',
'',
''
];
$answer = str_replace($tags, '', $answer);
}
$hide_expected_answer = false;
if ($feedback_type == 0 && ($resultsDisabled == RESULT_DISABLE_SHOW_SCORE_ONLY)) {
$hide_expected_answer = true;
}
if ($resultsDisabled == RESULT_DISABLE_SHOW_SCORE_ATTEMPT_SHOW_ANSWERS_LAST_ATTEMPT) {
$hide_expected_answer = true;
if ($showTotalScoreAndUserChoices) {
$hide_expected_answer = false;
}
}
$icon = in_array($answerType, [UNIQUE_ANSWER, UNIQUE_ANSWER_NO_OPTION]) ? 'radio' : 'checkbox';
$icon .= $studentChoice ? '_on' : '_off';
$icon .= '.png';
$iconAnswer = in_array($answerType, [UNIQUE_ANSWER, UNIQUE_ANSWER_NO_OPTION]) ? 'radio' : 'checkbox';
$iconAnswer .= $answerCorrect ? '_on' : '_off';
$iconAnswer .= '.png';
echo '';
echo '';
echo Display::return_icon($icon, null, null, ICON_SIZE_TINY);
echo ' ';
if (!$hide_expected_answer) {
echo Display::return_icon($iconAnswer, null, null, ICON_SIZE_TINY);
} else {
echo "-";
}
echo ' ';
echo $answer;
echo ' ';
if ($exercise->showExpectedChoice()) {
$status = Display::label(get_lang('Incorrect'), 'danger');
if ($studentChoice) {
if ($answerCorrect) {
$status = Display::label(get_lang('Correct'), 'success');
}
}
echo '';
echo $status;
echo ' ';
}
if ($feedback_type != EXERCISE_FEEDBACK_TYPE_EXAM) {
echo '';
if ($studentChoice) {
$color = 'black';
if ($answerCorrect) {
$color = 'green';
}
if ($hide_expected_answer) {
$color = '';
}
echo ''.strip_tags($answerComment).' ';
}
echo ' ';
if ($ans == 1) {
$comm = Event::get_comments($id, $questionId);
}
} else {
echo ' ';
}
echo ' ';
}
/**
* Display the answers to a multiple choice question
*
* @param Exercise $exercise
* @param integer Answer type
* @param integer Student choice
* @param string Textual answer
* @param string Comment on answer
* @param string Correct answer comment
* @param integer Exercise ID
* @param integer Question ID
* @param boolean Whether to show the answer comment or not
* @return void
*/
public static function display_multiple_answer_true_false(
$exercise,
$feedback_type,
$answerType,
$studentChoice,
$answer,
$answerComment,
$answerCorrect,
$id,
$questionId,
$ans,
$resultsDisabled,
$showTotalScoreAndUserChoices
) {
$hide_expected_answer = false;
if ($feedback_type == 0 && ($resultsDisabled == RESULT_DISABLE_SHOW_SCORE_ONLY)) {
$hide_expected_answer = true;
}
if ($resultsDisabled == RESULT_DISABLE_SHOW_SCORE_ATTEMPT_SHOW_ANSWERS_LAST_ATTEMPT) {
$hide_expected_answer = true;
if ($showTotalScoreAndUserChoices) {
$hide_expected_answer = false;
}
}
echo '';
$course_id = api_get_course_int_id();
$new_options = Question::readQuestionOption($questionId, $course_id);
// Your choice
if (isset($new_options[$studentChoice])) {
echo get_lang($new_options[$studentChoice]['name']);
} else {
echo '-';
}
echo ' ';
// Expected choice
if (!$hide_expected_answer) {
if (isset($new_options[$answerCorrect])) {
echo get_lang($new_options[$answerCorrect]['name']);
} else {
echo '-';
}
} else {
echo '-';
}
echo ' ';
echo $answer;
echo ' ';
if ($exercise->showExpectedChoice()) {
$status = Display::label(get_lang('Incorrect'), 'danger');
if (isset($new_options[$studentChoice])) {
if ($studentChoice == $answerCorrect) {
$status = Display::label(get_lang('Correct'), 'success');
}
}
echo '';
echo $status;
echo ' ';
}
if ($feedback_type != EXERCISE_FEEDBACK_TYPE_EXAM) {
echo '';
$color = "black";
if (isset($new_options[$studentChoice])) {
if ($studentChoice == $answerCorrect) {
$color = "green";
}
if ($hide_expected_answer) {
$color = '';
}
echo ''.nl2br($answerComment).' ';
}
echo ' ';
if ($ans == 1) {
$comm = Event::get_comments($id, $questionId);
}
} else {
echo ' ';
}
echo ' ';
}
/**
* Display the answers to a multiple choice question
*
* @param Exercise $exercise
* @param integer Answer type
* @param integer Student choice
* @param string Textual answer
* @param string Comment on answer
* @param string Correct answer comment
* @param integer Exercise ID
* @param integer Question ID
* @param boolean Whether to show the answer comment or not
* @return void
*/
public static function display_multiple_answer_combination_true_false(
$exercise,
$feedback_type,
$answerType,
$studentChoice,
$answer,
$answerComment,
$answerCorrect,
$id,
$questionId,
$ans,
$resultsDisabled,
$showTotalScoreAndUserChoices
) {
$hide_expected_answer = false;
if ($feedback_type == 0 && ($resultsDisabled == RESULT_DISABLE_SHOW_SCORE_ONLY)) {
$hide_expected_answer = true;
}
if ($resultsDisabled == RESULT_DISABLE_SHOW_SCORE_ATTEMPT_SHOW_ANSWERS_LAST_ATTEMPT) {
$hide_expected_answer = true;
if ($showTotalScoreAndUserChoices) {
$hide_expected_answer = false;
}
}
echo '';
// Your choice
$question = new MultipleAnswerCombinationTrueFalse();
if (isset($question->options[$studentChoice])) {
echo $question->options[$studentChoice];
} else {
echo $question->options[2];
}
echo ' ';
// Expected choice
if (!$hide_expected_answer) {
if (isset($question->options[$answerCorrect])) {
echo $question->options[$answerCorrect];
} else {
echo $question->options[2];
}
} else {
echo '-';
}
echo ' ';
echo '';
// my answer
echo $answer;
echo ' ';
if ($exercise->showExpectedChoice()) {
$status = '';
if (isset($studentChoice)) {
$status = Display::label(get_lang('Incorrect'), 'danger');
if ($studentChoice == $answerCorrect) {
$status = Display::label(get_lang('Correct'), 'success');
}
}
echo '';
echo $status;
echo ' ';
}
if ($feedback_type != EXERCISE_FEEDBACK_TYPE_EXAM) {
echo '';
//@todo replace this harcoded value
if ($studentChoice) {
$color = "black";
if ($studentChoice == $answerCorrect) {
$color = "green";
}
if ($hide_expected_answer) {
$color = '';
}
echo ''.nl2br($answerComment).' ';
}
echo ' ';
if ($ans == 1) {
$comm = Event::get_comments($id, $questionId);
}
} else {
echo ' ';
}
echo ' ';
}
/**
* @param $feedback_type
* @param $exe_id
* @param $questionId
* @param null $questionScore
* @param int $results_disabled
*/
public static function displayAnnotationAnswer(
$feedback_type,
$exe_id,
$questionId,
$questionScore = null,
$results_disabled = 0
) {
$comments = Event::get_comments($exe_id, $questionId);
if ($feedback_type != EXERCISE_FEEDBACK_TYPE_EXAM) {
if ($questionScore <= 0 && empty($comments)) {
echo ' '.ExerciseLib::getNotCorrectedYetText();
}
}
}
}