/**
  * 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;
             }
         }
     }
 }