/** * 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 certificate/passed status for all given objects and users * * Used in ilObjCourseAccess for ilObjCourseListGUI * * @param array $a_usr_ids * @param array $a_obj_ids */ static function _preloadListData($a_usr_ids, $a_obj_ids) { global $ilDB; if (!is_array($a_usr_ids)) { $a_usr_ids = array($a_usr_ids); } if (!is_array($a_obj_ids)) { $a_obj_ids = array($a_obj_ids); } foreach ($a_usr_ids as $usr_id) { foreach ($a_obj_ids as $obj_id) { self::$has_certificate[$usr_id][$obj_id] = false; } } include_once "Services/Certificate/classes/class.ilCertificate.php"; if (ilCertificate::isActive()) { $obj_active = ilCertificate::areObjectsActive($a_obj_ids); include_once 'Modules/Course/classes/class.ilCourseParticipants.php'; $data = ilCourseParticipants::getPassedUsersForObjects($a_obj_ids, $a_usr_ids); foreach ($data as $rec) { if ($obj_active[$rec["obj_id"]]) { self::$has_certificate[$rec["usr_id"]][$rec["obj_id"]] = true; } } } }