Пример #1
0
 /**
  * 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;
 }