/**
  * 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);
 }
 /**
  * Get item properties
  *
  * @return	array		array of property arrays:
  *						"alert" (boolean) => display as an alert property (usually in red)
  *						"property" (string) => property name
  *						"value" (string) => property value
  */
 function getProperties()
 {
     global $lng, $ilUser;
     $props = parent::getProperties();
     // offline
     include_once 'Modules/Course/classes/class.ilObjCourseAccess.php';
     if (ilObjCourseAccess::_isOffline($this->obj_id)) {
         $showRegistrationInfo = false;
         $props[] = array("alert" => true, "property" => $lng->txt("status"), "value" => $lng->txt("offline"));
     }
     // blocked
     include_once 'Modules/Course/classes/class.ilCourseParticipant.php';
     $members = ilCourseParticipant::_getInstanceByObjId($this->obj_id, $ilUser->getId());
     if ($members->isBlocked($ilUser->getId()) and $members->isAssigned($ilUser->getId())) {
         $props[] = array("alert" => true, "property" => $lng->txt("member_status"), "value" => $lng->txt("crs_status_blocked"));
     }
     // pending subscription
     include_once 'Modules/Course/classes/class.ilCourseParticipants.php';
     if (ilCourseParticipants::_isSubscriber($this->obj_id, $ilUser->getId())) {
         $props[] = array("alert" => true, "property" => $lng->txt("member_status"), "value" => $lng->txt("crs_status_pending"));
     }
     include_once './Modules/Course/classes/class.ilObjCourseAccess.php';
     $info = ilObjCourseAccess::lookupRegistrationInfo($this->obj_id);
     if ($info['reg_info_list_prop']) {
         $props[] = array('alert' => false, 'newline' => true, 'property' => $info['reg_info_list_prop']['property'], 'value' => $info['reg_info_list_prop']['value']);
     }
     if ($info['reg_info_list_prop_limit']) {
         $props[] = array('alert' => false, 'newline' => false, 'property' => $info['reg_info_list_prop_limit']['property'], 'propertyNameVisible' => strlen($info['reg_info_list_prop_limit']['property']) ? true : false, 'value' => $info['reg_info_list_prop_limit']['value']);
     }
     // waiting list
     include_once './Modules/Course/classes/class.ilCourseWaitingList.php';
     if (ilCourseWaitingList::_isOnList($ilUser->getId(), $this->obj_id)) {
         $props[] = array("alert" => true, "property" => $lng->txt('member_status'), "value" => $lng->txt('on_waiting_list'));
     }
     // check for certificates
     include_once "./Modules/Course/classes/class.ilCourseCertificateAdapter.php";
     if (ilCourseCertificateAdapter::_hasUserCertificate($ilUser->getId(), $this->obj_id)) {
         $lng->loadLanguageModule('certificate');
         $cmd_link = "ilias.php?baseClass=ilRepositoryGUI&ref_id=" . $this->ref_id . "&cmd=deliverCertificate";
         $props[] = array("alert" => false, "property" => $lng->txt("passed"), "value" => '<a href="' . $cmd_link . '">' . $lng->txt("download_certificate") . '</a>');
     }
     return $props;
 }
 /**
  * Preload data
  *
  * @param array $a_obj_ids array of object ids
  */
 function _preloadData($a_obj_ids, $a_ref_ids)
 {
     global $ilUser;
     include_once "./Modules/Course/classes/class.ilCourseWaitingList.php";
     ilCourseWaitingList::_preloadOnListInfo($ilUser->getId(), $a_obj_ids);
     include_once "./Modules/Course/classes/class.ilCourseCertificateAdapter.php";
     ilCourseCertificateAdapter::_preloadListData($ilUser->getId(), $a_obj_ids);
 }