예제 #1
0
 function _showWarning($a_ref_id, $a_usr_id)
 {
     global $ilObjDataCache;
     $obj_id = $ilObjDataCache->lookupObjId($a_ref_id);
     // if completed no warning
     include_once './Services/Tracking/classes/class.ilLPStatus.php';
     if (ilLPStatus::_hasUserCompleted($obj_id, $a_usr_id)) {
         return false;
     }
     // if editing time reached => show warning
     $timings =& ilTimingCache::_getTimings($a_ref_id);
     if ($timings['item']['timing_type'] == ilObjectActivation::TIMINGS_PRESETTING) {
         if ($timings['item']['changeable'] and $timings['user'][$a_usr_id]['end']) {
             $end = $timings['user'][$a_usr_id]['end'];
         } else {
             $end = $timings['item']['suggestion_end'];
         }
         if ($end < time()) {
             return true;
         }
     }
     include_once './Services/Object/classes/class.ilObjectLP.php';
     $olp = ilObjectLP::getInstance($obj_id);
     $collection = $olp->getCollectionInstance();
     if ($collection instanceof ilLPCollectionOfRepositoryObjects) {
         foreach ($collection->getItems() as $item) {
             if (ilTimingCache::_showWarning($item, $a_usr_id)) {
                 return true;
             }
         }
     }
     // Really ???
     return false;
 }
 /**
  * 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);
 }
예제 #3
0
 function isFullfilled($user_id, $item_id)
 {
     global $ilObjDataCache;
     include_once './Modules/Course/classes/class.ilCourseLMHistory.php';
     $lm_continue =& new ilCourseLMHistory($this->getRefId(), $user_id);
     $continue_data = $lm_continue->getLMHistory();
     $obj_id = $ilObjDataCache->lookupObjId($item_id);
     $type = $ilObjDataCache->lookupType($obj_id);
     switch ($type) {
         case 'tst':
             include_once './Modules/Test/classes/class.ilObjTestAccess.php';
             include_once './Services/AccessControl/classes/class.ilConditionHandler.php';
             if (!ilObjTestAccess::checkCondition($obj_id, ilConditionHandler::OPERATOR_FINISHED, '', $user_id)) {
                 return false;
             }
             break;
         case 'svy':
             include_once './Modules/Survey/classes/class.ilObjSurveyAccess.php';
             if (!ilObjSurveyAccess::_lookupFinished($obj_id, $user_id)) {
                 return false;
             }
             break;
         case 'sahs':
             include_once 'Services/Tracking/classes/class.ilLPStatus.php';
             if (!ilLPStatus::_hasUserCompleted($obj_id, $user_id)) {
                 return false;
             }
             break;
         default:
             if (!isset($continue_data[$item_id])) {
                 return false;
             }
     }
     return true;
 }
 /**
  * Checks whether a certificate exists for the active user or not
  * @param int obj_id Object ID of the SCORM Learning Module
  * @param int usr_id Object ID of the user. If not given, the active user will be taken
  * @return true/false
  */
 public static function _lookupUserCertificate($obj_id, $usr_id = 0)
 {
     global $ilUser;
     $uid = $usr_id ? $usr_id : $ilUser->getId();
     $completed = false;
     // check for certificates
     include_once "./Services/Certificate/classes/class.ilCertificate.php";
     if (ilCertificate::isActive() && ilCertificate::isObjectActive($obj_id)) {
         $lpdata = false;
         include_once "./Modules/ScormAicc/classes/class.ilObjSAHSLearningModule.php";
         $type = ilObjSAHSLearningModule::_lookupSubType($obj_id);
         include_once "Services/Tracking/classes/class.ilObjUserTracking.php";
         if (ilObjUserTracking::_enabledLearningProgress()) {
             include_once "./Services/Tracking/classes/class.ilLPStatus.php";
             $completed = ilLPStatus::_hasUserCompleted($obj_id, $uid);
             $lpdata = true;
         }
         switch ($type) {
             case "scorm":
                 if (!$lpdata) {
                     include_once "./Modules/ScormAicc/classes/class.ilObjSCORMLearningModule.php";
                     $completed = ilObjSCORMLearningModule::_getCourseCompletionForUser($obj_id, $uid);
                 }
                 break;
             case "scorm2004":
                 if (!$lpdata) {
                     include_once "./Modules/Scorm2004/classes/class.ilObjSCORM2004LearningModule.php";
                     $completed = ilObjSCORM2004LearningModule::_getCourseCompletionForUser($obj_id, $uid);
                 }
                 break;
             default:
                 break;
         }
     }
     return $completed;
 }
예제 #5
0
 /**
  * sync course status from lp 
  * 
  * as lp data is not deleted on course exit new members may already have lp completed
  * 
  * @param int $a_member_id
  */
 public function checkLPStatusSync($a_member_id)
 {
     // #11113
     include_once "Services/Tracking/classes/class.ilObjUserTracking.php";
     if (ilObjUserTracking::_enabledLearningProgress() && $this->getStatusDetermination() == ilObjCourse::STATUS_DETERMINATION_LP) {
         include_once "Services/Tracking/classes/class.ilLPStatus.php";
         $has_completed = ilLPStatus::_hasUserCompleted($this->getId(), $a_member_id);
         $this->getMembersObject()->updatePassed($a_member_id, $has_completed, false, true);
     }
 }
예제 #6
0
 /**
  * checks wether a single condition is fulfilled
  * every trigger object type must implement a static method
  * _checkCondition($a_operator, $a_value)
  */
 function _checkCondition($a_id, $a_usr_id = 0)
 {
     global $ilUser, $objDefinition;
     $a_usr_id = $a_usr_id ? $a_usr_id : $ilUser->getId();
     $condition = ilConditionHandler::_getCondition($a_id);
     // check lp
     if ($condition['operator'] == self::OPERATOR_LP) {
         include_once './Services/Tracking/classes/class.ilLPStatus.php';
         return ilLPStatus::_hasUserCompleted($condition['trigger_obj_id'], $a_usr_id);
     }
     switch ($condition['trigger_type']) {
         case 'crsg':
             include_once './Modules/Course/classes/class.ilObjCourseGrouping.php';
             return ilObjCourseGrouping::_checkCondition($condition['trigger_obj_id'], $condition['operator'], $condition['value'], $a_usr_id);
     }
     $class = $objDefinition->getClassName($condition['trigger_type']);
     $location = $objDefinition->getLocation($condition['trigger_type']);
     $full_class = "ilObj" . $class . "Access";
     include_once $location . "/class." . $full_class . ".php";
     $fullfilled = call_user_func(array($full_class, 'checkCondition'), $condition['trigger_obj_id'], $condition['operator'], $condition['value'], $a_usr_id);
     return $fullfilled;
 }
 /**
  * checks wether a single condition is fulfilled
  * every trigger object type must implement a static method
  * _checkCondition($a_operator, $a_value)
  */
 function _checkCondition($a_id, $a_usr_id = 0)
 {
     global $ilUser;
     $a_usr_id = $a_usr_id ? $a_usr_id : $ilUser->getId();
     $condition = ilConditionHandler::_getCondition($a_id);
     switch ($condition['trigger_type']) {
         case "tst":
             include_once './Modules/Test/classes/class.ilObjTestAccess.php';
             return ilObjTestAccess::_checkCondition($condition['trigger_obj_id'], $condition['operator'], $condition['value'], $a_usr_id);
         case "crs":
             include_once './Modules/Course/classes/class.ilObjCourse.php';
             return ilObjCourse::_checkCondition($condition['trigger_obj_id'], $condition['operator'], $condition['value'], $a_usr_id);
         case 'exc':
             include_once './Modules/Exercise/classes/class.ilObjExercise.php';
             return ilObjExercise::_checkCondition($condition['trigger_obj_id'], $condition['operator'], $condition['value'], $a_usr_id);
         case 'crsg':
             include_once './Modules/Course/classes/class.ilObjCourseGrouping.php';
             return ilObjCourseGrouping::_checkCondition($condition['trigger_obj_id'], $condition['operator'], $condition['value'], $a_usr_id);
         case 'sahs':
             include_once './Services/Tracking/classes/class.ilLPStatus.php';
             return ilLPStatus::_hasUserCompleted($condition['trigger_obj_id'], $a_usr_id);
         case 'svy':
             include_once './Modules/Survey/classes/class.ilObjSurvey.php';
             return ilObjSurvey::_checkCondition($condition['trigger_obj_id'], $condition['operator'], $condition['value'], $a_usr_id);
         default:
             return false;
     }
 }