42 $this->
object->loadFromDb($qId);
51 return $this->
object->feedbackOBJ->isSpecificAnswerFeedbackAvailable($this->
object->getId());
56 return [
'uploadImage',
'removeImage'];
60 bool $checkonly =
false,
61 ?
bool $is_save_cmd =
null 76 $this->
object->saveToDb();
83 $this->
object->removeAnswerImage($this->request_data_collector->getCmdIndex(
'removeImage'));
84 $this->
object->saveToDb();
90 $index = $this->request_data_collector->getCmdIndex(__FUNCTION__);
92 $this->
object->moveAnswerDown($index);
93 $this->
object->saveToDb();
101 $index = $this->request_data_collector->getCmdIndex(__FUNCTION__);
102 if (!empty($index)) {
103 $this->
object->moveAnswerUp($index);
104 $this->
object->saveToDb();
116 $form->setValuesByPost();
117 $answers_input = $form->getItemByPostVar(
'kprimanswers');
120 $answers_input->setIgnoreMissingUploadsEnabled(
true);
121 $answer_input_postvar = $this->request_data_collector->strArray($answers_input->getPostVar(), 2);
123 if (!$answers_input->checkUploads($answer_input_postvar)) {
124 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'form_input_not_valid'));
125 $this->edit_form = $form;
130 $answers_input->collectValidFiles();
131 } elseif (!$form->checkInput()) {
132 $this->edit_form = $form;
173 $shuffleAnswers =
new ilCheckboxInputGUI($this->
lng->txt(
"shuffle_answers"),
"shuffle_answers_enabled");
174 $shuffleAnswers->setChecked($this->
object->isShuffleAnswersEnabled());
175 $form->
addItem($shuffleAnswers);
177 if (!$this->
object->getSelfAssessmentEditingMode()) {
180 $answerType->
setOptions($this->
object->getAnswerTypeSelectOptions($this->lng));
181 $answerType->setValue($this->
object->getAnswerType());
185 if (!$this->
object->getSelfAssessmentEditingMode() && $this->
object->isSingleLineAnswerType($this->
object->getAnswerType())) {
188 $thumb_size->
setSuffix($this->
lng->txt(
'thumb_size_unit_pixel'));
189 $thumb_size->setInfo($this->
lng->txt(
'thumb_size_info'));
190 $thumb_size->setDecimals(
false);
191 $thumb_size->setMinValue($this->
object->getMinimumThumbSize());
192 $thumb_size->setMaxValue($this->
object->getMaximumThumbSize());
193 $thumb_size->setSize(6);
194 $thumb_size->setValue($this->
object->getThumbSize());
197 $thumb_size->setValue($this->
object->getThumbSize());
203 $optionLabel->
setInfo($this->
lng->txt(
'option_label_info'));
204 $optionLabel->setRequired(
true);
205 $optionLabel->setValue($this->
object->getOptionLabel());
206 foreach ($this->
object->getValidOptionLabelsTranslated($this->lng) as $labelValue => $labelText) {
208 $optionLabel->addOption($option);
210 if ($this->
object->isCustomOptionLabel($labelValue)) {
212 $this->
lng->txt(
'option_label_custom_true'),
213 'option_label_custom_true' 215 $customLabelTrue->setValue($this->
object->getCustomTrueOptionLabel());
216 $option->addSubItem($customLabelTrue);
219 $this->
lng->txt(
'option_label_custom_false'),
220 'option_label_custom_false' 222 $customLabelFalse->setValue($this->
object->getCustomFalseOptionLabel());
223 $option->addSubItem($customLabelFalse);
232 $points->allowDecimals(
true);
233 $points->setMinValue(0);
234 $points->setMinvalueShouldBeGreater(
true);
235 $points->setValue($this->
object->getPoints());
239 $scorePartialSolution =
new ilCheckboxInputGUI($this->
lng->txt(
'score_partsol_enabled'),
'score_partsol_enabled');
240 $scorePartialSolution->setInfo($this->
lng->txt(
'score_partsol_enabled_info'));
241 $scorePartialSolution->setChecked($this->
object->isScorePartialSolutionEnabled());
242 $form->
addItem($scorePartialSolution);
252 $old_answer_type = $this->
object->getAnswerType();
254 $this->
object->setShuffleAnswersEnabled($form->
getItemByPostVar(
'shuffle_answers_enabled')->getChecked());
256 if (!$this->
object->getSelfAssessmentEditingMode()) {
257 $this->
object->setAnswerType($form->
getItemByPostVar(
'answer_type')->getValue());
260 if (!$this->
object->getSelfAssessmentEditingMode() && $this->
object->isSingleLineAnswerType($old_answer_type)) {
261 $thumbsize = (
int) ($form->
getItemByPostVar(
'thumb_size')->getValue() ?? $this->
object->getThumbSize());
262 if ($thumbsize !== $this->
object->getThumbSize()) {
263 $this->
object->setThumbSize($thumbsize);
264 $this->rebuild_thumbnails =
true;
268 $this->
object->setOptionLabel($form->
getItemByPostVar(
'option_label')->getValue());
270 if ($this->
object->isCustomOptionLabel($this->object->getOptionLabel())) {
271 $this->
object->setCustomTrueOptionLabel(strip_tags(
274 $this->
object->setCustomFalseOptionLabel(strip_tags(
281 $this->
object->setScorePartialSolutionEnabled($form->
getItemByPostVar(
'score_partsol_enabled')->getChecked());
291 $answers->
setInfo($this->
lng->txt(
'kprim_answers_info') .
' ' . $this->
lng->txt(
'latex_edit_info'));
292 $answers->setSize(64);
293 $answers->setRequired(
true);
294 $answers->setAllowMove(
true);
295 $answers->setQuestionObject($this->
object);
296 $answers->setSingleline($this->
object->isSingleLineAnswerType($this->object->getAnswerType()));
297 $answers->setValues($this->
object->getAnswers());
313 $this->
object->handleFileUploads($answers, $files);
315 if ($this->rebuild_thumbnails) {
316 $answers = $this->
object->rebuildThumbnails(
317 $this->
object->getAnswerType(),
318 $this->
object->getThumbSize(),
319 $this->
object->getImagePath(),
324 $this->
object->setAnswers($answers);
333 foreach ($answers as $key => $answer) {
362 bool $is_question_postponed =
false,
363 array|
bool $user_post_solutions =
false,
364 bool $show_specific_inline_feedback =
false 372 $solutions = $this->
object->getTestOutputSolutions($active_id, $pass);
374 foreach ($solutions as $idx => $solution_value) {
375 $user_solution[$solution_value[
"value1"]] = $solution_value[
"value2"];
379 $template =
new ilTemplate(
"tpl.il_as_qpl_mc_kprim_output.html",
true,
true,
"components/ILIAS/TestQuestionPool");
381 foreach ($keys as $answer_id) {
382 $answer = $this->
object->getAnswer($answer_id);
383 if ($answer->getImageFile() !==
null 384 && $answer->getImageFile() !==
'') {
385 if ($this->
object->getThumbSize()) {
386 $template->setCurrentBlock(
"preview");
387 $template->setVariable(
"URL_PREVIEW", $answer->getImageWebPath());
388 $template->setVariable(
"TEXT_PREVIEW", $this->
lng->txt(
'preview'));
390 $template->setVariable(
"ANSWER_IMAGE_URL", $answer->getThumbWebPath());
391 [$width, $height, $type, $attr] = getimagesize($answer->getImageFsPath());
392 $alt = $answer->getImageFile();
393 if (strlen($answer->getAnswertext())) {
394 $alt = $answer->getAnswertext();
396 $alt = preg_replace(
"/<[^>]*?>/",
"", $alt);
399 $template->parseCurrentBlock();
401 $template->setCurrentBlock(
"answer_image");
402 $template->setVariable(
"ANSWER_IMAGE_URL", $answer->getImageWebPath());
403 [$width, $height, $type, $attr] = getimagesize($answer->getImageFsPath());
404 $alt = $answer->getImageFile();
405 if (strlen($answer->getAnswertext())) {
406 $alt = $answer->getAnswertext();
408 $alt = preg_replace(
"/<[^>]*?>/",
"", $alt);
409 $template->setVariable(
"ATTR", $attr);
412 $template->parseCurrentBlock();
416 if ($show_specific_inline_feedback) {
420 $template->setCurrentBlock(
"answer_row");
421 $template->setVariable(
"ANSWER_ID", $answer_id);
422 $template->setVariable(
"ANSWER_TEXT", $this->
renderLatex(
425 $template->setVariable(
'VALUE_TRUE', 1);
426 $template->setVariable(
'VALUE_FALSE', 0);
428 if (isset($user_solution[$answer->getPosition()])) {
429 $tplVar = $user_solution[$answer->getPosition()] ?
'CHECKED_ANSWER_TRUE' :
'CHECKED_ANSWER_FALSE';
430 $template->setVariable($tplVar,
" checked=\"checked\"");
433 $template->parseCurrentBlock();
436 $template->setVariable(
"QUESTIONTEXT", $this->
renderLatex($this->
object->getQuestionForHTMLOutput()));
437 $template->setVariable(
"INSTRUCTIONTEXT", $this->
object->getInstructionTextTranslation(
439 $this->object->getOptionLabel()
442 $template->setVariable(
"OPTION_LABEL_TRUE", $this->
object->getTrueOptionLabelTranslation(
444 $this->object->getOptionLabel()
447 $template->setVariable(
"OPTION_LABEL_FALSE", $this->
object->getFalseOptionLabelTranslation(
449 $this->object->getOptionLabel()
452 $questionoutput = $template->get();
453 $pageoutput = $this->
outQuestionPage(
"", $is_question_postponed, $active_id, $questionoutput, $show_specific_inline_feedback);
458 bool $show_question_only =
false,
459 bool $show_inline_feedback =
false 465 $template =
new ilTemplate(
"tpl.il_as_qpl_mc_kprim_output.html",
true,
true,
"components/ILIAS/TestQuestionPool");
467 foreach ($keys as $answer_id) {
468 $answer = $this->
object->getAnswer($answer_id);
469 if ($answer->getImageFile() !==
null 470 && $answer->getImageFile() !==
'') {
471 if ($this->
object->getThumbSize()) {
472 $template->setCurrentBlock(
"preview");
473 $template->setVariable(
"URL_PREVIEW", $answer->getImageWebPath());
474 $template->setVariable(
"TEXT_PREVIEW", $this->
lng->txt(
'preview'));
476 $template->setVariable(
"ANSWER_IMAGE_URL", $answer->getThumbWebPath());
477 [$width, $height, $type, $attr] = getimagesize($answer->getImageFsPath());
478 $alt = $answer->getImageFile();
479 if (strlen($answer->getAnswertext())) {
480 $alt = $answer->getAnswertext();
482 $alt = preg_replace(
"/<[^>]*?>/",
"", $alt);
485 $template->parseCurrentBlock();
487 $template->setCurrentBlock(
"answer_image");
488 $template->setVariable(
"ANSWER_IMAGE_URL", $answer->getImageWebPath());
489 [$width, $height, $type, $attr] = getimagesize($answer->getImageFsPath());
490 $alt = $answer->getImageFile();
491 if (strlen($answer->getAnswertext())) {
492 $alt = $answer->getAnswertext();
494 $alt = preg_replace(
"/<[^>]*?>/",
"", $alt);
495 $template->setVariable(
"ATTR", $attr);
498 $template->parseCurrentBlock();
502 if ($show_inline_feedback) {
506 $template->setCurrentBlock(
"answer_row");
507 $template->setVariable(
"ANSWER_ID", $answer_id);
508 $template->setVariable(
"ANSWER_TEXT", $this->
renderLatex(
511 $template->setVariable(
'VALUE_TRUE', 1);
512 $template->setVariable(
'VALUE_FALSE', 0);
514 if (isset($user_solution[$answer->getPosition()])) {
515 $tplVar = $user_solution[$answer->getPosition()] ?
'CHECKED_ANSWER_TRUE' :
'CHECKED_ANSWER_FALSE';
516 $template->setVariable($tplVar,
" checked=\"checked\"");
519 $template->parseCurrentBlock();
521 $questiontext = $this->
object->getQuestionForHTMLOutput();
525 $template->setVariable(
"QUESTIONTEXT", $this->
renderLatex(
529 $template->setVariable(
"INSTRUCTIONTEXT", $this->
object->getInstructionTextTranslation(
531 $this->object->getOptionLabel()
534 $template->setVariable(
"OPTION_LABEL_TRUE", $this->
object->getTrueOptionLabelTranslation(
536 $this->object->getOptionLabel()
539 $template->setVariable(
"OPTION_LABEL_FALSE", $this->
object->getFalseOptionLabelTranslation(
541 $this->object->getOptionLabel()
544 $questionoutput = $template->get();
545 if (!$show_question_only) {
549 return $questionoutput;
555 bool $graphical_output =
false,
556 bool $result_output =
false,
557 bool $show_question_only =
true,
558 bool $show_feedback =
false,
559 bool $show_correct_solution =
false,
560 bool $show_manual_scoring =
false,
561 bool $show_question_text =
true,
562 bool $show_inline_feedback =
true 566 if (($active_id > 0) && (!$show_correct_solution)) {
567 $solutions = $this->
object->getSolutionValues($active_id, $pass);
568 foreach ($solutions as $idx => $solution_value) {
571 'value1' => $solution_value[
'value1'],
572 'value2' => $solution_value[
'value2']
577 foreach ($this->
object->getAnswers() as $answer) {
580 'value1' => $answer->getPosition(),
581 'value2' => $answer->getCorrectness()
594 $show_correct_solution,
595 $show_manual_scoring,
598 $show_inline_feedback
603 mixed $user_solutions,
606 bool $graphical_output =
false,
607 bool $result_output =
false,
608 bool $show_question_only =
true,
609 bool $show_feedback =
false,
610 bool $show_correct_solution =
false,
611 bool $show_manual_scoring =
false,
612 bool $show_question_text =
true,
613 bool $show_autosave_title =
false,
614 bool $show_inline_feedback =
false,
618 foreach ($user_solutions as $idx => $solution_value) {
619 $user_solution[$solution_value[
'value1']] = $solution_value[
'value2'];
621 $template =
new ilTemplate(
"tpl.il_as_qpl_mc_kprim_output_solution.html",
true,
true,
"components/ILIAS/TestQuestionPool");
623 foreach ($keys as $answer_id) {
624 $answer = $this->
object->getAnswer($answer_id);
626 if (($active_id > 0) &&
627 !$show_correct_solution &&
630 if (isset($user_solution[$answer->getPosition()]) && $user_solution[$answer->getPosition()] == $answer->getCorrectness()) {
633 $template->setCurrentBlock(
"icon_ok");
634 $template->setVariable(
"ICON_OK", $correctness_icon);
635 $template->parseCurrentBlock();
637 if ($answer->getImageFile() !==
null 638 && $answer->getImageFile() !==
'') {
639 $template->setCurrentBlock(
"answer_image");
640 if ($this->
object->getThumbSize()) {
641 $template->setVariable(
"ANSWER_IMAGE_URL", $answer->getThumbWebPath());
643 $template->setVariable(
"ANSWER_IMAGE_URL", $answer->getImageWebPath());
646 $template->setVariable(
649 $answer->getImageFile()
652 $template->setVariable(
653 "ANSWER_IMAGE_TITLE",
655 $answer->getImageFile()
658 $template->parseCurrentBlock();
661 if ($show_feedback) {
665 $template->setCurrentBlock(
"answer_row");
666 $template->setVariable(
"ANSWER_TEXT", $this->
renderLatex(
671 if (isset($user_solution[$answer->getPosition()])) {
672 if ($user_solution[$answer->getPosition()]) {
674 $template->setVariable(
"SOLUTION_ALT_TRUE", $this->
lng->txt(
"checked"));
676 $template->setVariable(
"SOLUTION_ALT_FALSE", $this->
lng->txt(
"unchecked"));
679 $template->setVariable(
"SOLUTION_ALT_TRUE", $this->
lng->txt(
"unchecked"));
681 $template->setVariable(
"SOLUTION_ALT_FALSE", $this->
lng->txt(
"checked"));
685 $template->setVariable(
"SOLUTION_ALT_TRUE", $this->
lng->txt(
"unchecked"));
687 $template->setVariable(
"SOLUTION_ALT_FALSE", $this->
lng->txt(
"unchecked"));
690 $template->setVariable(
'SOL_QID', $this->
object->getId());
691 $template->setVariable(
'SOL_SUFFIX', $show_correct_solution ?
'bestsolution' :
'usersolution');
692 $template->setVariable(
'SOL_POSITION', $answer->getPosition());
694 $template->setVariable(
'SOL_TRUE_VALUE', 1);
695 $template->setVariable(
'SOL_FALSE_VALUE', 0);
697 if (isset($user_solution[$answer->getPosition()])) {
698 if ($user_solution[$answer->getPosition()]) {
699 $template->setVariable(
'SOL_TRUE_CHECKED',
'checked');
701 $template->setVariable(
'SOL_FALSE_CHECKED',
'checked');
706 $template->parseCurrentBlock();
709 if ($show_question_text ==
true) {
710 $questiontext = $this->
object->getQuestionForHTMLOutput();
716 $template->setVariable(
"INSTRUCTIONTEXT", $this->
object->getInstructionTextTranslation(
718 $this->object->getOptionLabel()
722 $template->setVariable(
"OPTION_LABEL_TRUE", $this->
object->getTrueOptionLabelTranslation(
724 $this->object->getOptionLabel()
727 $template->setVariable(
"OPTION_LABEL_FALSE", $this->
object->getFalseOptionLabelTranslation(
729 $this->object->getOptionLabel()
733 $questionoutput = $template->get();
736 $solutiontemplate =
new ilTemplate(
"tpl.il_as_tst_solution_output.html",
true,
true,
"components/ILIAS/TestQuestionPool");
738 if (strlen($feedback)) {
744 $solutiontemplate->setVariable(
"ILC_FB_CSS_CLASS", $cssClass);
748 $solutiontemplate->setVariable(
"SOLUTION_OUTPUT", $questionoutput);
750 $solutionoutput = $solutiontemplate->get();
752 if (!$show_question_only) {
756 return $solutionoutput;
761 $choice_keys = array_keys($this->
object->getAnswers());
763 if ($this->
object->isShuffleAnswersEnabled()) {
764 $choice_keys = $this->
object->getShuffler()->transform($choice_keys);
773 if (isset($user_solution[$answer_id])) {
774 $fb = $this->
object->feedbackOBJ->getSpecificAnswerFeedbackTestPresentation($this->
object->getId(), 0, $answer_id);
776 $template->setCurrentBlock(
"feedback");
777 $template->setVariable(
"FEEDBACK", $this->
renderLatex(
780 $template->parseCurrentBlock();
786 $fb = $this->
object->feedbackOBJ->getSpecificAnswerFeedbackTestPresentation($this->
object->getId(), 0, $answer_id);
788 $template->setCurrentBlock(
"feedback");
789 $template->setVariable(
"FEEDBACK", $this->
renderLatex(
792 $template->parseCurrentBlock();
797 $answer = $this->
object->getAnswer($answer_id);
799 if ($answer->getCorrectness()) {
800 $fb = $this->
object->feedbackOBJ->getSpecificAnswerFeedbackTestPresentation($this->
object->getId(), 0, $answer_id);
802 $template->setCurrentBlock(
"feedback");
803 $template->setVariable(
"FEEDBACK", $this->
renderLatex(
806 $template->parseCurrentBlock();
844 foreach ($answers as $answer) {
846 'answertext' => $answer->getAnswerText(),
'count_true' => 0,
'count_false' => 0
849 foreach ($rawSolutionData as $solutionRecord) {
850 if ($solutionRecord[
'value1'] == $answer->getPosition()) {
851 if ($solutionRecord[
'value2']) {
852 $answerAgg[
'count_true']++;
854 $answerAgg[
'count_false']++;
859 $aggregate[] = $answerAgg;
871 foreach ($agg as $ans) {
873 'answer' => $ans[
'answertext'],
874 'frequency_true' => $ans[
'count_true'],
875 'frequency_false' => $ans[
'count_false']
892 $table->setQuestionIndex($questionIndex);
894 $table->initColumns();
905 $points->allowDecimals(
true);
906 $points->setMinValue(0);
907 $points->setMinvalueShouldBeGreater(
true);
908 $points->setValue($this->
object->getPoints());
912 $scorePartialSolution =
new ilCheckboxInputGUI($this->
lng->txt(
'score_partsol_enabled'),
'score_partsol_enabled');
913 $scorePartialSolution->setInfo($this->
lng->txt(
'score_partsol_enabled_info'));
914 $scorePartialSolution->setChecked($this->
object->isScorePartialSolutionEnabled());
915 $form->
addItem($scorePartialSolution);
919 $kprimAnswers->
setInfo($this->
lng->txt(
'kprim_answers_info'));
920 $kprimAnswers->setSize(64);
921 $kprimAnswers->setMaxLength(1000);
922 $kprimAnswers->setRequired(
true);
923 $kprimAnswers->setQuestionObject($this->
object);
924 $kprimAnswers->setValues($this->
object->getAnswers());
933 $this->
object->setPoints(
934 (
float) str_replace(
',',
'.', $form->
getInput(
'points'))
937 $this->
object->setScorePartialSolutionEnabled(
938 (
bool) $form->
getInput(
'score_partsol_enabled')
941 $this->
object->setAnswers(
isTestPresentationContext()
writeQuestionSpecificPostData(ilPropertyFormGUI $form)
setAdditionalContentEditingModeFromPost()
hasCorrectSolution($activeId, $passIndex)
This class represents an option in a radio group.
getPreview(bool $show_question_only=false, bool $show_inline_feedback=false)
getAfterParticipationSuppressionQuestionPostVars()
Returns a list of postvars which will be suppressed in the form output when used in scoring adjustmen...
getAnswerFrequencyTableGUI($parentGui, $parentCmd, $relevantAnswers, $questionIndex)
saveCorrectionsFormProperties(ilPropertyFormGUI $form)
generateCorrectnessIconsForCorrectness(int $correctness)
renderSolutionOutput(mixed $user_solutions, int $active_id, ?int $pass, bool $graphical_output=false, bool $result_output=false, bool $show_question_only=true, bool $show_feedback=false, bool $show_correct_solution=false, bool $show_manual_scoring=false, bool $show_question_text=true, bool $show_autosave_title=false, bool $show_inline_feedback=false,)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
renderLatex($content)
Wrap content with latex in a LatexContent UI component and render it to be processed by MathJax in th...
static secureString(string $a_str, bool $a_strip_html=true, string $a_allow="")
buildBasicEditFormObject()
addBasicQuestionFormProperties(ilPropertyFormGUI $form)
populateAnswerSpecificFormPart(ilPropertyFormGUI $form)
const CSS_CLASS_FEEDBACK_CORRECT
const FEEDBACK_SETTING_CHECKED
getSpecificFeedbackOutput(array $userSolution)
populateTaxonomyFormSection(ilPropertyFormGUI $form)
getAdditionalEditQuestionCommands()
addQuestionFormCommandButtons(ilPropertyFormGUI $form)
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
handleAnswerTextsSubmit($answers)
const ANSWER_TYPE_MULTI_LINE
writeQuestionGenericPostData()
const FEEDBACK_SETTING_CORRECT
editQuestion(bool $checkonly=false, ?bool $is_save_cmd=null)
static getImagePath(string $image_name, string $module_path="", string $mode="output", bool $offline=false)
get image path (for images located in a template directory)
writeAnswerSpecificPostData(ilPropertyFormGUI $form)
static getHtmlPath(string $relative_path)
get url of path
const CSS_CLASS_FEEDBACK_WRONG
ilPropertyFormGUI $edit_form
getAfterParticipationSuppressionAnswerPostVars()
Returns a list of postvars which will be suppressed in the form output when used in scoring adjustmen...
getSolutionOutput(int $active_id, ?int $pass=null, bool $graphical_output=false, bool $result_output=false, bool $show_question_only=true, bool $show_feedback=false, bool $show_correct_solution=false, bool $show_manual_scoring=false, bool $show_question_text=true, bool $show_inline_feedback=true)
writePostData(bool $always=false)
{}
saveTaxonomyAssignments()
getILIASPage(string $html="")
Returns the ILIAS Page around a question.
outQuestionPage($a_temp_var, $a_postponed=false, $active_id="", $html="", $inlineFeedbackEnabled=false)
const FEEDBACK_SETTING_ALL
__construct(Container $dic, ilPlugin $plugin)
isRenderPurposePrintPdf()
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
populateCorrectionsFormProperties(ilPropertyFormGUI $form)
aggregateAnswers($rawSolutionData, $answers)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
populateSpecificFeedbackInline($user_solution, $answer_id, $template)
getAnswersFrequency($relevantAnswers, $questionIndex)
getTestOutput(int $active_id, int $pass, bool $is_question_postponed=false, array|bool $user_post_solutions=false, bool $show_specific_inline_feedback=false)
getParticipantsAnswerKeySequence()
renderEditForm(ilPropertyFormGUI $form)
populateQuestionSpecificFormPart(ilPropertyFormGUI $form)
renderPurposeSupportsFormHtml()
getGenericFeedbackOutput(int $active_id, ?int $pass)