/** * Store result and update objective status * @param ilTestSession $a_test_session * @param ilTestSequence $a_test_sequence * @param assQuestion $a_question */ public static function updateObjectiveStatus(ilTestSession $a_test_session, ilTestSequence $a_test_sequence, assQuestion $a_question) { $adapter = new self($a_test_session->getUserId(), $a_test_session->getObjectiveOrientedContainerId()); $adapter->initTestRun($a_test_session); $adapter->updateQuestionResult($a_test_session, $a_question); return true; /* $usr_id = $a_test_session->getUserId(); $crs_id = $a_test_session->getObjectiveOrientedContainerId(); $question_id = $a_question->getId(); $points_reached = $a_question->getReachedPoints($a_test_session->getActiveId(), $a_test_session->getPass()); //$points_max = $a_question->getMaxPoints(); if( $a_test_sequence instanceof ilTestSequenceFixedQuestionSet ) { // make some noise (with question id only) } elseif( $a_test_sequence instanceof ilTestSequenceRandomQuestionSet ) { $respSrcPoolDefId = $a_test_sequence->getResponsibleSourcePoolDefinitionId($question_id); // make some noise (with question id and responsible source pool definition) } */ }
/** * @param ilTestSession $testSession */ protected function handleSkillTriggering(ilTestSession $testSession) { $questionList = $this->buildTestPassQuestionList(); $questionList->load(); $testResults = $this->object->getTestResult($testSession->getActiveId(), $testSession->getPass(), true); require_once 'Modules/Test/classes/class.ilTestSkillEvaluation.php'; $skillEvaluation = new ilTestSkillEvaluation($this->db, $this->object->getTestId(), $this->object->getRefId()); $skillEvaluation->setUserId($testSession->getUserId()); $skillEvaluation->setActiveId($testSession->getActiveId()); $skillEvaluation->setPass($testSession->getPass()); $skillEvaluation->setNumRequiredBookingsForSkillTriggering($this->assSettings->get('ass_skl_trig_num_answ_barrier', ilObjAssessmentFolder::DEFAULT_SKL_TRIG_NUM_ANSWERS_BARRIER)); $skillEvaluation->init($questionList); $skillEvaluation->evaluate($testResults); $skillEvaluation->handleSkillTriggering(); }
public function show() { require_once 'class.ilTestEvaluationGUI.php'; require_once './Services/PDFGeneration/classes/class.ilPDFGeneration.php'; global $ilUser, $ilObjDataCache; $template = new ilTemplate("tpl.il_as_tst_submission_review.html", TRUE, TRUE, "Modules/Test"); $this->ctrl->setParameter($this, "skipfinalstatement", 1); $template->setVariable("FORMACTION", $this->ctrl->getFormAction($this->testOutputGUI, 'redirectBack') . '&reviewed=1'); $template->setVariable("BUTTON_CONTINUE", $this->lng->txt("btn_next")); $template->setVariable("BUTTON_BACK", $this->lng->txt("btn_previous")); if ($this->object->getListOfQuestionsEnd()) { $template->setVariable("CANCEL_CMD", 'outQuestionSummary'); } else { $template->setVariable("CANCEL_CMD", 'backFromSummary'); } $active = $this->object->getActiveIdOfUser($ilUser->getId()); require_once 'Modules/Test/classes/class.ilTestResultHeaderLabelBuilder.php'; $testResultHeaderLabelBuilder = new ilTestResultHeaderLabelBuilder($this->lng, $ilObjDataCache); $objectivesList = null; if ($this->getObjectiveOrientedContainer()->isObjectiveOrientedPresentationRequired()) { $testSequence = $this->testSequenceFactory->getSequenceByActiveIdAndPass($this->testSession->getActiveId(), $this->testSession->getPass()); $testSequence->loadFromDb(); $testSequence->loadQuestions(); require_once 'Modules/Course/classes/Objectives/class.ilLOTestQuestionAdapter.php'; $objectivesAdapter = ilLOTestQuestionAdapter::getInstance($this->testSession); $objectivesList = $this->buildQuestionRelatedObjectivesList($objectivesAdapter, $testSequence); $objectivesList->loadObjectivesTitles(); $testResultHeaderLabelBuilder->setObjectiveOrientedContainerId($this->testSession->getObjectiveOrientedContainerId()); $testResultHeaderLabelBuilder->setUserId($this->testSession->getUserId()); $testResultHeaderLabelBuilder->setTestObjId($this->object->getId()); $testResultHeaderLabelBuilder->setTestRefId($this->object->getRefId()); $testResultHeaderLabelBuilder->initObjectiveOrientedMode(); } $results = $this->object->getTestResult($active, $this->testSession->getPass(), false, !$this->getObjectiveOrientedContainer()->isObjectiveOrientedPresentationRequired()); $testevaluationgui = new ilTestEvaluationGUI($this->object); $results_output = $testevaluationgui->getPassListOfAnswers($results, $active, $this->testSession->getPass(), false, false, false, false, false, $objectivesList, $testResultHeaderLabelBuilder); if ($this->object->getShowExamviewPdf()) { $template->setCurrentBlock("pdf_export"); $template->setVariable("PDF_TEXT", $this->lng->txt("pdf_export")); global $ilSetting; $inst_id = $ilSetting->get('inst_id', null); $path = ilUtil::getWebspaceDir() . '/assessment/' . $this->testOutputGUI->object->getId() . '/exam_pdf'; if (!is_dir($path)) { ilUtil::makeDirParents($path); } $filename = $path . '/exam_N' . $inst_id . '-' . $this->testOutputGUI->object->getId() . '-' . $active . '-' . $this->testSession->getPass() . '.pdf'; require_once 'class.ilTestPDFGenerator.php'; ilTestPDFGenerator::generatePDF($results_output, ilTestPDFGenerator::PDF_OUTPUT_FILE, $filename); $template->setVariable("PDF_FILE_LOCATION", $filename); } if ($this->object->getShowExamviewHtml()) { if ($this->object->getListOfQuestionsEnd()) { $template->setVariable("CANCEL_CMD_BOTTOM", 'outQuestionSummary'); } else { $template->setVariable("CANCEL_CMD_BOTTOM", 'backFromSummary'); } $template->setVariable("BUTTON_CONTINUE_BOTTOM", $this->lng->txt("btn_next")); $template->setVariable("BUTTON_BACK_BOTTOM", $this->lng->txt("btn_previous")); $template->setVariable('HTML_REVIEW', $results_output); } $this->tpl->setVariable($this->getContentBlockName(), $template->get()); }
public static function getInstance(ilTestSession $a_test_session) { $adapter = new self($a_test_session->getUserId(), $a_test_session->getObjectiveOrientedContainerId()); $adapter->initTestRun($a_test_session); return $adapter; }