/** * Get all completed tests */ protected function getItems() { global $ilUser, $tree; $data = array(); include_once "Services/Certificate/classes/class.ilCertificate.php"; if (ilCertificate::isActive()) { $obj_ids = array(); $root = $tree->getNodeData($tree->getRootId()); foreach ($tree->getSubTree($root, true, "sahs") as $node) { $obj_ids[] = $node["obj_id"]; } if ($obj_ids) { include_once "./Services/Tracking/classes/class.ilObjUserTracking.php"; include_once "./Services/Tracking/classes/class.ilLPStatus.php"; include_once "./Modules/ScormAicc/classes/class.ilObjSAHSLearningModule.php"; include_once "./Modules/ScormAicc/classes/class.ilObjSCORMLearningModule.php"; include_once "./Modules/Scorm2004/classes/class.ilObjSCORM2004LearningModule.php"; include_once "./Modules/ScormAicc/classes/class.ilSCORMCertificateAdapter.php"; $lp_active = ilObjUserTracking::_enabledLearningProgress(); foreach (ilCertificate::areObjectsActive($obj_ids) as $obj_id => $active) { if ($active) { $type = ilObjSAHSLearningModule::_lookupSubType($obj_id); if ($type == "scorm") { $lm = new ilObjSCORMLearningModule($obj_id, false); } else { $lm = new ilObjSCORM2004LearningModule($obj_id, false); } $adapter = new ilSCORMCertificateAdapter($lm); if (ilCertificate::_isComplete($adapter)) { $lpdata = $completed = false; if ($lp_active) { $completed = ilLPStatus::_hasUserCompleted($obj_id, $ilUser->getId()); $lpdata = true; } if (!$lpdata) { switch ($type) { case "scorm": $completed = ilObjSCORMLearningModule::_getCourseCompletionForUser($obj_id, $ilUser->getId()); break; case "scorm2004": $completed = ilObjSCORM2004LearningModule::_getCourseCompletionForUser($obj_id, $ilUser->getId()); break; } } $data[] = array("id" => $obj_id, "title" => ilObject::_lookupTitle($obj_id), "passed" => (bool) $completed); } } } } } $this->setData($data); }
/** * Get all completed tests */ protected function getItems() { global $ilUser; include_once "Modules/Exercise/classes/class.ilObjExercise.php"; $data = array(); foreach (ilObjExercise::_lookupFinishedUserExercises($ilUser->getId()) as $exercise_id => $passed) { // #11210 - only available certificates! $exc = new ilObjExercise($exercise_id, false); if ($exc->hasUserCertificate($ilUser->getId())) { $adapter = new ilExerciseCertificateAdapter($exc); if (ilCertificate::_isComplete($adapter)) { $data[] = array("id" => $exercise_id, "title" => ilObject::_lookupTitle($exercise_id), "passed" => $passed); } } } $this->setData($data); }
/** * Get all completed tests */ protected function getItems() { global $ilUser; $data = array(); include_once "Modules/Course/classes/class.ilObjCourse.php"; include_once "./Modules/Course/classes/class.ilCourseParticipants.php"; $obj_ids = ilCourseParticipants::_getMembershipByType($ilUser->getId(), "crs"); if ($obj_ids) { include_once "./Services/Certificate/classes/class.ilCertificate.php"; include_once "./Modules/Course/classes/class.ilCourseCertificateAdapter.php"; ilCourseCertificateAdapter::_preloadListData($ilUser->getId(), $obj_ids); foreach ($obj_ids as $crs_id) { // #11210 - only available certificates! if (ilCourseCertificateAdapter::_hasUserCertificate($ilUser->getId(), $crs_id)) { $crs = new ilObjCourse($crs_id, false); $adapter = new ilCourseCertificateAdapter($crs); if (ilCertificate::_isComplete($adapter)) { $data[] = array("id" => $crs_id, "title" => ilObject::_lookupTitle($crs_id), "passed" => true); } } } } $this->setData($data); }
/** * Show overview of assignments */ function showOverviewObject() { global $tpl, $ilTabs, $ilUser, $ilToolbar; $this->checkPermission("read"); include_once "./Services/Tracking/classes/class.ilLearningProgress.php"; ilLearningProgress::_tracProgress($ilUser->getId(), $this->object->getId(), $this->object->getRefId(), 'exc'); $ilTabs->activateTab("content"); $this->addContentSubTabs("content"); // show certificate? if ($this->object->hasUserCertificate($ilUser->getId())) { include_once "./Modules/Exercise/classes/class.ilExerciseCertificateAdapter.php"; include_once "./Services/Certificate/classes/class.ilCertificate.php"; $adapter = new ilExerciseCertificateAdapter($this->object); if (ilCertificate::_isComplete($adapter)) { $ilToolbar->addButton($this->lng->txt("certificate"), $this->ctrl->getLinkTarget($this, "outCertificate")); } } include_once "./Modules/Exercise/classes/class.ilExAssignment.php"; include_once "./Services/Accordion/classes/class.ilAccordionGUI.php"; $acc = new ilAccordionGUI(); $acc->setId("exc_ow_" . $this->object->getId()); $ass_data = ilExAssignment::getAssignmentDataOfExercise($this->object->getId()); include_once "./Modules/Exercise/classes/class.ilExAssignmentGUI.php"; $ass_gui = new ilExAssignmentGUI($this->object); foreach ($ass_data as $ass) { // incoming assignment deeplink $force_open = false; if (isset($_GET["ass_id_goto"]) && (int) $_GET["ass_id_goto"] == $ass["id"]) { $force_open = true; } $acc->addItem($ass_gui->getOverviewHeader($ass), $ass_gui->getOverviewBody($ass), $force_open); } if (count($ass_data) < 2) { $acc->setBehaviour("FirstOpen"); } else { $acc->setUseSessionStorage(true); } $tpl->setContent($acc->getHTML()); }
/** * Creates the evaluation output for the test * * @access public */ function outEvaluation() { /** * @var $ilAcccess ilAccessHandler * @var $ilToolbar ilToolbarGUI */ global $ilAccess, $ilToolbar; if (!$ilAccess->checkAccess("tst_statistics", "", $this->ref_id) && !$ilAccess->checkAccess("write", "", $this->ref_id)) { // allow only evaluation access ilUtil::sendInfo($this->lng->txt("cannot_edit_test"), true); $this->ctrl->redirectByClass("ilobjtestgui", "infoScreen"); } include_once "./Modules/Test/classes/tables/class.ilEvaluationAllTableGUI.php"; $table_gui = new ilEvaluationAllTableGUI($this, 'outEvaluation', $this->object->getAnonymity(), $this->object->isOfferingQuestionHintsEnabled()); $data = array(); $arrFilter = array(); foreach ($table_gui->getFilterItems() as $item) { if ($item->getValue() !== false) { switch ($item->getPostVar()) { case 'group': case 'name': case 'course': $arrFilter[$item->getPostVar()] = $item->getValue(); break; case 'passed_only': $passedonly = $item->getChecked(); break; } } } include_once "./Modules/Test/classes/class.ilTestEvaluationData.php"; $eval = new ilTestEvaluationData($this->object); $eval->setFilterArray($arrFilter); $foundParticipants =& $eval->getParticipants(); $counter = 1; if (count($foundParticipants) > 0) { if ($this->object->getECTSOutput()) { $passed_array =& $this->object->getTotalPointsPassedArray(); } foreach ($foundParticipants as $active_id => $userdata) { /* @var $userdata ilTestEvaluationUserData */ $remove = FALSE; if ($passedonly) { $mark_obj = $this->object->getMarkSchema()->getMatchingMark($userdata->getReachedPointsInPercent()); if ($mark_obj->getPassed() == FALSE || !$userdata->areObligationsAnswered()) { $remove = TRUE; } } if (!$remove) { // build the evaluation row $evaluationrow = array(); if ($this->object->getAnonymity()) { $evaluationrow['name'] = $counter; $evaluationrow['login'] = ''; } else { $evaluationrow['name'] = $userdata->getName(); if (strlen($userdata->getLogin())) { $evaluationrow['login'] = "******" . $userdata->getLogin() . "]"; } else { $evaluationrow['login'] = ''; } } $evaluationrow['reached'] = $userdata->getReached(); $evaluationrow['max'] = $userdata->getMaxpoints(); $evaluationrow['hint_count'] = $userdata->getRequestedHintsCountFromScoredPass(); $percentage = $userdata->getReachedPointsInPercent(); $mark = $this->object->getMarkSchema()->getMatchingMark($percentage); if (is_object($mark)) { $evaluationrow['mark'] = $mark->getShortName(); } if ($this->object->getECTSOutput()) { $ects_mark = $this->object->getECTSGrade($passed_array, $userdata->getReached(), $userdata->getMaxPoints()); $evaluationrow['ects_grade'] = $ects_mark; } $evaluationrow['answered'] = $userdata->getQuestionsWorkedThroughInPercent(); $evaluationrow['questions_worked_through'] = $userdata->getQuestionsWorkedThrough(); $evaluationrow['number_of_questions'] = $userdata->getNumberOfQuestions(); $time_seconds = $userdata->getTimeOfWork(); $time_hours = floor($time_seconds / 3600); $time_seconds -= $time_hours * 3600; $time_minutes = floor($time_seconds / 60); $time_seconds -= $time_minutes * 60; $evaluationrow['working_time'] = sprintf("%02d:%02d:%02d", $time_hours, $time_minutes, $time_seconds); $this->ctrl->setParameter($this, "active_id", $active_id); $href = $this->ctrl->getLinkTarget($this, "detailedEvaluation"); $detailed_evaluation = $this->lng->txt("detailed_evaluation_show"); $evaluationrow['details'] = "<a class=\"il_ContainerItemCommand\" href=\"{$href}\">{$detailed_evaluation}</a>"; $userfields = ilObjUser::_lookupFields($userdata->getUserID()); $evaluationrow['gender'] = $userfields['gender']; $evaluationrow['email'] = $userfields['email']; $evaluationrow['institution'] = $userfields['institution']; $evaluationrow['street'] = $userfields['street']; $evaluationrow['city'] = $userfields['city']; $evaluationrow['zipcode'] = $userfields['zipcode']; $evaluationrow['country'] = $userfields['country']; $evaluationrow['sel_country'] = $userfields['sel_country']; $evaluationrow['department'] = $userfields['department']; $evaluationrow['matriculation'] = $userfields['matriculation']; $counter++; $data[] = $evaluationrow; } } } $table_gui->setData($data); if (count($foundParticipants) > 0) { $ilToolbar->setFormName('form_output_eval'); $ilToolbar->setFormAction($this->ctrl->getFormAction($this, 'exportEvaluation')); require_once 'Services/Form/classes/class.ilSelectInputGUI.php'; $export_type = new ilSelectInputGUI($this->lng->txt('exp_eval_data'), 'export_type'); $options = array('excel' => $this->lng->txt('exp_type_excel'), 'csv' => $this->lng->txt('exp_type_spss')); if (!$this->object->getAnonymity()) { include_once 'Services/Certificate/classes/class.ilCertificate.php'; include_once 'Modules/Test/classes/class.ilTestCertificateAdapter.php'; if (ilCertificate::_isComplete(new ilTestCertificateAdapter($this->object))) { $options['certificate'] = $this->lng->txt('exp_type_certificate'); } } $export_type->setOptions($options); $ilToolbar->addInputItem($export_type, true); require_once 'Services/UIComponent/Button/classes/class.ilSubmitButton.php'; $button = ilSubmitButton::getInstance(); $button->setCommand('exportEvaluation'); $button->setCaption('export'); $button->getOmitPreventDoubleSubmission(); $ilToolbar->addButtonInstance($button); } $this->tpl->addCss(ilUtil::getStyleSheetLocation("output", "test_print.css", "Modules/Test"), "print"); if ($this->object->getShowSolutionAnswersOnly()) { $this->tpl->addCss(ilUtil::getStyleSheetLocation("output", "test_print_hide_content.css", "Modules/Test"), "print"); } $this->tpl->setContent($table_gui->getHTML()); }
/** * Creates the evaluation output for the test * * @access public */ function outEvaluation() { global $ilAccess; if (!$ilAccess->checkAccess("tst_statistics", "", $this->ref_id) && !$ilAccess->checkAccess("write", "", $this->ref_id)) { // allow only evaluation access ilUtil::sendInfo($this->lng->txt("cannot_edit_test"), true); $this->ctrl->redirectByClass("ilobjtestgui", "infoScreen"); } include_once "./Modules/Test/classes/tables/class.ilEvaluationAllTableGUI.php"; $table_gui = new ilEvaluationAllTableGUI($this, 'outEvaluation', $this->object->getAnonymity(), $this->object->isOfferingQuestionHintsEnabled()); $data = array(); $arrFilter = array(); foreach ($table_gui->getFilterItems() as $item) { if ($item->getValue() !== false) { switch ($item->getPostVar()) { case 'group': case 'name': case 'course': $arrFilter[$item->getPostVar()] = $item->getValue(); break; case 'passed_only': $passedonly = $item->getChecked(); break; } } } include_once "./Modules/Test/classes/class.ilTestEvaluationData.php"; $eval = new ilTestEvaluationData($this->object); $eval->setFilterArray($arrFilter); $foundParticipants =& $eval->getParticipants(); $counter = 1; if (count($foundParticipants) > 0) { if ($this->object->ects_output) { $passed_array =& $this->object->getTotalPointsPassedArray(); } foreach ($foundParticipants as $active_id => $userdata) { /* @var $userdata ilTestEvaluationUserData */ $remove = FALSE; if ($passedonly) { $mark_obj = $this->object->getMarkSchema()->getMatchingMark($userdata->getReachedPointsInPercent()); if ($mark_obj->getPassed() == FALSE || !$userdata->areObligationsAnswered()) { $remove = TRUE; } } if (!$remove) { // build the evaluation row $userfields = ilObjUser::_lookupFields($userdata->getUserID()); foreach ($userfields as $key => $value) { $evaluationrow[$key] = strlen($value) ? $value : ' '; } $evaluationrow = array(); $fullname = ""; if ($this->object->getAnonymity()) { $fullname = $counter; $evaluationrow['name'] = $fullname; $evaluationrow['login'] = ''; } else { $evaluationrow['name'] = $userdata->getName(); if (strlen($userdata->getLogin())) { $evaluationrow['login'] = "******" . $userdata->getLogin() . "]"; } else { $evaluationrow['login'] = ''; } } $evaluationrow['reached'] = $userdata->getReached(); $evaluationrow['max'] = $userdata->getMaxpoints(); $evaluationrow['hint_count'] = $userdata->getRequestedHintsCountFromScoredPass(); $percentage = $userdata->getReachedPointsInPercent(); $mark = $this->object->getMarkSchema()->getMatchingMark($percentage); if (is_object($mark)) { $evaluationrow['mark'] = $mark->getShortName(); } if ($this->object->ects_output) { $ects_mark = $this->object->getECTSGrade($passed_array, $userdata->getReached(), $userdata->getMaxPoints()); $evaluationrow['ects_grade'] = $ects_mark; } $evaluationrow['answered'] = $userdata->getQuestionsWorkedThrough() . " " . strtolower($this->lng->txt("of")) . " " . $userdata->getNumberOfQuestions() . " (" . sprintf("%2.2f", $userdata->getQuestionsWorkedThroughInPercent()) . " %" . ")"; $time_seconds = $userdata->getTimeOfWork(); $time_hours = floor($time_seconds / 3600); $time_seconds -= $time_hours * 3600; $time_minutes = floor($time_seconds / 60); $time_seconds -= $time_minutes * 60; $evaluationrow['working_time'] = sprintf("%02d:%02d:%02d", $time_hours, $time_minutes, $time_seconds); $this->ctrl->setParameter($this, "active_id", $active_id); $href = $this->ctrl->getLinkTarget($this, "detailedEvaluation"); $detailed_evaluation = $this->lng->txt("detailed_evaluation_show"); $evaluationrow['details'] = "<a class=\"il_ContainerItemCommand\" href=\"{$href}\">{$detailed_evaluation}</a>"; $userfields = ilObjUser::_lookupFields($userdata->getUserID()); $evaluationrow['gender'] = $userfields['gender']; $evaluationrow['email'] = $userfields['email']; $evaluationrow['institution'] = $userfields['institution']; $evaluationrow['street'] = $userfields['street']; $evaluationrow['city'] = $userfields['city']; $evaluationrow['zipcode'] = $userfields['zipcode']; $evaluationrow['country'] = $userfields['country']; $evaluationrow['departement'] = $userfields['departement']; $evaluationrow['matriculation'] = $userfields['matriculation']; $counter++; array_push($data, $evaluationrow); } } } $table_gui->setData($data); $this->tpl->addBlockFile("ADM_CONTENT", "adm_content", "tpl.il_as_tst_evaluation.html", "Modules/Test"); $this->tpl->setVariable('EVALUATION_DATA', $table_gui->getHTML()); if (count($foundParticipants) > 0) { $template = new ilTemplate("tpl.il_as_tst_evaluation_export.html", TRUE, TRUE, "Modules/Test"); $template->setVariable("EXPORT_DATA", $this->lng->txt("exp_eval_data")); if (!$this->object->getAnonymity()) { include_once "./Services/Certificate/classes/class.ilCertificate.php"; include_once "./Modules/Test/classes/class.ilTestCertificateAdapter.php"; if (ilCertificate::_isComplete(new ilTestCertificateAdapter($this->object))) { $template->setVariable("TEXT_CERTIFICATE", $this->lng->txt("exp_type_certificate")); } } $template->setVariable("TEXT_EXCEL", $this->lng->txt("exp_type_excel")); $template->setVariable("TEXT_CSV", $this->lng->txt("exp_type_spss")); $template->setVariable("CMD_EXPORT", "exportEvaluation"); $template->setVariable("BTN_EXPORT", $this->lng->txt("export")); $template->setVariable("BTN_PRINT", $this->lng->txt("print")); $template->setVariable("BTN_COMMAND", $this->ctrl->getCmd()); $template->setVariable("FORM_ACTION", $this->ctrl->getFormAction($this, "exportEvaluation")); $exportoutput = $template->get(); $this->tpl->setVariable("EVALUATION_EXPORT", $exportoutput); } $this->tpl->addCss(ilUtil::getStyleSheetLocation("output", "test_print.css", "Modules/Test"), "print"); if ($this->object->getShowSolutionAnswersOnly()) { $this->tpl->addCss(ilUtil::getStyleSheetLocation("output", "test_print_hide_content.css", "Modules/Test"), "print"); } }