/** * Determine status * * @param integer object id * @param integer user id * @param object object (optional depends on object type) * @return integer status */ function determineStatus($a_obj_id, $a_user_id, $a_obj = null) { global $ilObjDataCache, $ilDB, $ilLog; $status = self::LP_STATUS_NOT_ATTEMPTED_NUM; // if the user has accessed the scorm object // the status is at least "in progress" include_once "./Services/Tracking/classes/class.ilChangeEvent.php"; if (ilChangeEvent::hasAccessed($a_obj_id, $a_user_id)) { $status = self::LP_STATUS_IN_PROGRESS_NUM; } //$ilLog->write("-".$status."-"); // Which sco's determine the status include_once './Services/Object/classes/class.ilObjectLP.php'; $olp = ilObjectLP::getInstance($a_obj_id); $collection = $olp->getCollectionInstance(); if ($collection) { $scos = $collection->getItems(); if (sizeof($scos)) { include_once './Modules/ScormAicc/classes/class.ilObjSAHSLearningModule.php'; $subtype = ilObjSAHSLearningModule::_lookupSubType($a_obj_id); switch ($subtype) { case 'hacp': case 'aicc': case 'scorm': include_once "./Modules/ScormAicc/classes/SCORM/class.ilObjSCORMTracking.php"; $scorm_status = ilObjSCORMTracking::_getCollectionStatus($scos, $a_obj_id, $a_user_id); break; case 'scorm2004': include_once "./Modules/Scorm2004/classes/class.ilSCORM2004Tracking.php"; $scorm_status = ilSCORM2004Tracking::_getCollectionStatus($scos, $a_obj_id, $a_user_id); break; } switch ($scorm_status) { case "in_progress": $status = self::LP_STATUS_IN_PROGRESS_NUM; break; case "completed": $status = self::LP_STATUS_COMPLETED_NUM; break; case "failed": $status = self::LP_STATUS_FAILED_NUM; break; } } } //$ilLog->write("-".$status."-"); return $status; }