Exemplo n.º 1
0
 function _getFailed($a_obj_id)
 {
     $status_info = ilLPStatusWrapper::_getStatusInfo($a_obj_id);
     if (!count($status_info['scos'])) {
         return array();
     }
     $users = array();
     foreach ($status_info['scos'] as $sco_id) {
         // max attempts vs. failed
         if (sizeof($status_info['in_progress'][$sco_id])) {
             foreach ($status_info['in_progress'][$sco_id] as $user_id) {
                 if (!in_array($user_id, $status_info['failed'][$sco_id])) {
                     switch ($status_info["subtype"]) {
                         case 'hacp':
                         case 'aicc':
                         case 'scorm':
                             include_once './Modules/ScormAicc/classes/SCORM/class.ilObjSCORMTracking.php';
                             $has_max_attempts = ilObjSCORMTracking::_hasMaxAttempts($a_obj_id, $user_id);
                             break;
                         case 'scorm2004':
                             include_once "./Modules/Scorm2004/classes/class.ilSCORM2004Tracking.php";
                             $has_max_attempts = ilSCORM2004Tracking::_hasMaxAttempts($a_obj_id, $user_id);
                             break;
                     }
                     if ($has_max_attempts) {
                         $status_info['failed'][$sco_id][] = $user_id;
                     }
                 }
             }
         }
         $users = array_merge($users, (array) $status_info['failed'][$sco_id]);
     }
     return array_unique($users);
 }
 function _getFailed($a_obj_id)
 {
     $status_info = ilLPStatusWrapper::_getStatusInfo($a_obj_id);
     foreach ($status_info['results'] as $user_data) {
         if ($user_data['failed']) {
             $user_ids[] = $user_data['user_id'];
         }
     }
     return $user_ids ? $user_ids : array();
 }
 function _getFailed($a_obj_id)
 {
     $objective_results = ilLPStatusWrapper::_getStatusInfo($a_obj_id);
     $usr_ids = (array) $objective_results['user_status'][self::LP_STATUS_FAILED_NUM];
     if ($usr_ids) {
         // Exclude all non members
         $usr_ids = array_intersect(self::getMembers($a_obj_id), (array) $usr_ids);
     }
     return $usr_ids ? $usr_ids : array();
 }
 function _getCompleted($a_obj_id)
 {
     $usr_ids = array();
     $status_info = ilLPStatusWrapper::_getStatusInfo($a_obj_id);
     foreach ($status_info['objective_result'] as $user_id => $completed) {
         if (count($completed) == $status_info['num_objectives']) {
             $usr_ids[] = $user_id;
         }
     }
     if ($usr_ids) {
         // Exclude all non members
         $usr_ids = array_intersect(self::getMembers($a_obj_id), (array) $usr_ids);
     }
     return $usr_ids ? $usr_ids : array();
 }
 function _getCompleted($a_obj_id)
 {
     $status_info = ilLPStatusWrapper::_getStatusInfo($a_obj_id);
     $counter = 0;
     $users = array();
     foreach ($status_info['items'] as $item_id) {
         $tmp_users = $status_info['completed'][$item_id];
         if (!$counter++) {
             $users = $tmp_users;
         } else {
             $users = array_intersect($users, $tmp_users);
         }
     }
     $users = array_unique($users);
     return $users;
 }
 /**
  * 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;
     $status = LP_STATUS_NOT_ATTEMPTED_NUM;
     switch ($ilObjDataCache->lookupType($a_obj_id)) {
         case 'lm':
             if (ilChangeEvent::hasAccessed($a_obj_id, $a_user_id)) {
                 $status = LP_STATUS_IN_PROGRESS_NUM;
                 // completed?
                 $status_info = ilLPStatusWrapper::_getStatusInfo($a_obj_id);
                 $tlt = $status_info['tlt'];
                 include_once './Services/Tracking/classes/class.ilChangeEvent.php';
                 $re = ilChangeEvent::_lookupReadEvents($a_obj_id, $a_user_id);
                 if ($re[0]['spent_seconds'] >= $tlt) {
                     $status = LP_STATUS_COMPLETED_NUM;
                 }
             }
             break;
     }
     return $status;
 }
 function _getCompleted($a_obj_id)
 {
     $status_info = ilLPStatusWrapper::_getStatusInfo($a_obj_id);
     return $status_info['participated_users'] ? $status_info['participated_users'] : array();
 }
 function getSCOsStatusForUser($a_user_id, $a_parent_obj_id, array $a_sco_ids)
 {
     self::refreshObjectsStatus(array($a_parent_obj_id), array($a_user_id));
     // import score from tracking data
     $scores_raw = $scores = array();
     include_once './Modules/ScormAicc/classes/class.ilObjSAHSLearningModule.php';
     $subtype = ilObjSAHSLearningModule::_lookupSubType($a_parent_obj_id);
     switch ($subtype) {
         case 'hacp':
         case 'aicc':
         case 'scorm':
             include_once './Modules/ScormAicc/classes/class.ilObjSCORMLearningModule.php';
             $module = new ilObjSCORMLearningModule($a_parent_obj_id, false);
             $scores_raw = $module->getTrackingDataAgg($a_user_id);
             break;
         case 'scorm2004':
             include_once './Modules/Scorm2004/classes/class.ilObjSCORM2004LearningModule.php';
             $module = new ilObjSCORM2004LearningModule($a_parent_obj_id, false);
             $scores_raw = $module->getTrackingDataAgg($a_user_id);
             break;
     }
     if ($scores_raw) {
         foreach ($scores_raw as $item) {
             $scores[$item["sco_id"]] = $item["score"];
         }
         unset($module);
         unset($scores_raw);
     }
     include_once 'Services/Tracking/classes/class.ilLPStatusWrapper.php';
     $status_info = ilLPStatusWrapper::_getStatusInfo($a_parent_obj_id);
     $items = array();
     foreach ($a_sco_ids as $sco_id) {
         // #9719 - can have in_progress AND failed/completed
         if (in_array($a_user_id, $status_info["failed"][$sco_id])) {
             $status = LP_STATUS_FAILED;
         } elseif (in_array($a_user_id, $status_info["completed"][$sco_id])) {
             $status = LP_STATUS_COMPLETED;
         } elseif (in_array($a_user_id, $status_info["in_progress"][$sco_id])) {
             $status = LP_STATUS_IN_PROGRESS;
         } else {
             $status = LP_STATUS_NOT_ATTEMPTED;
         }
         $items[$sco_id] = array("title" => $status_info["scos_title"][$sco_id], "status" => $status, "type" => "sahs", "score" => (int) $scores[$sco_id]);
     }
     return $items;
 }
 function _getFailed($a_obj_id)
 {
     $status_info = ilLPStatusWrapper::_getStatusInfo($a_obj_id);
     $users = $status_info['failed'];
     return array_unique($users);
 }
Exemplo n.º 10
0
 function _getTypicalLearningTime($a_obj_id)
 {
     global $ilObjDataCache;
     if ($ilObjDataCache->lookupType($a_obj_id) == 'sahs') {
         return parent::_getTypicalLearningTime($a_obj_id);
     }
     $tlt = 0;
     $status_info = ilLPStatusWrapper::_getStatusInfo($a_obj_id);
     foreach ($status_info['collections'] as $item) {
         $tlt += ilLPStatusWrapper::_getTypicalLearningTime($ilObjDataCache->lookupObjId($item));
     }
     return $tlt;
 }
Exemplo n.º 11
0
 function getSubItemsStatusForUser($a_user_id, $a_parent_obj_id, array $a_item_ids)
 {
     self::refreshObjectsStatus(array($a_parent_obj_id), array($a_user_id));
     switch (ilObject::_lookupType($a_parent_obj_id)) {
         case "lm":
             include_once './Services/Object/classes/class.ilObjectLP.php';
             $olp = ilObjectLP::getInstance($a_parent_obj_id);
             $collection = $olp->getCollectionInstance();
             if ($collection) {
                 $item_data = $collection->getPossibleItems();
             }
             break;
         default:
             return array();
     }
     include_once 'Services/Tracking/classes/class.ilLPStatusWrapper.php';
     $status_info = ilLPStatusWrapper::_getStatusInfo($a_parent_obj_id);
     $items = array();
     foreach ($a_item_ids as $item_id) {
         if (!isset($item_data[$item_id])) {
             continue;
         }
         if (in_array($a_user_id, $status_info["completed"][$item_id])) {
             $status = ilLPStatus::LP_STATUS_COMPLETED;
         } elseif (in_array($a_user_id, $status_info["in_progress"][$item_id])) {
             $status = ilLPStatus::LP_STATUS_IN_PROGRESS;
         } else {
             $status = ilLPStatus::LP_STATUS_NOT_ATTEMPTED;
         }
         $items[$item_id] = array("title" => $item_data[$item_id]["title"], "status" => $status, "type" => "st");
     }
     return $items;
 }