Go to the documentation of this file.00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00033 include_once './Services/Tracking/classes/class.ilLPStatus.php';
00034
00035 class ilLPStatusSCORM extends ilLPStatus
00036 {
00037
00038 function ilLPStatusSCORM($a_obj_id)
00039 {
00040 global $ilDB;
00041
00042 parent::ilLPStatus($a_obj_id);
00043 $this->db =& $ilDB;
00044 }
00045
00046
00047 function _getInProgress($a_obj_id)
00048 {
00049 include_once './Services/Tracking/classes/class.ilLPCollectionCache.php';
00050 include_once './content/classes/SCORM/class.ilObjSCORMTracking.php';
00051
00052 $status_info = ilLPStatusWrapper::_getStatusInfo($a_obj_id);
00053 $users = array();
00054 foreach($status_info['in_progress'] as $in_progress)
00055 {
00056 $users = array_merge($users,$in_progress);
00057 }
00058 $users = array_unique($users);
00059 $users = array_diff($users,ilLPStatusWrapper::_getCompleted($a_obj_id));
00060 $users = array_diff($users,ilLPStatusWrapper::_getFailed($a_obj_id));
00061
00062 return $users;
00063 }
00064
00065 function _getCompleted($a_obj_id)
00066 {
00067 global $ilDB;
00068
00069 include_once './content/classes/SCORM/class.ilObjSCORMTracking.php';
00070
00071 $status_info = ilLPStatusWrapper::_getStatusInfo($a_obj_id);
00072 $items = $status_info['scos'];
00073
00074 $counter = 0;
00075 $users = array();
00076 foreach($items as $sco_id)
00077 {
00078 $tmp_users = $status_info['completed'][$sco_id];
00079 if(!$counter++)
00080 {
00081 $users = $tmp_users;
00082 }
00083 else
00084 {
00085 $users = array_intersect($users,$tmp_users);
00086 }
00087 }
00088 $users = array_diff($users,ilLPStatusWrapper::_getFailed($a_obj_id));
00089 return $users;
00090 }
00091
00092 function _getFailed($a_obj_id)
00093 {
00094 $status_info = ilLPStatusWrapper::_getStatusInfo($a_obj_id);
00095
00096 if(!count($status_info['scos']))
00097 {
00098 return array();
00099 }
00100 $users = array();
00101 foreach($status_info['scos'] as $sco_id)
00102 {
00103 $users = array_merge($users,(array) $status_info['failed'][$sco_id]);
00104 }
00105 return array_unique($users);
00106 }
00107
00108
00109 function _getStatusInfo($a_obj_id)
00110 {
00111
00112 include_once './Services/Tracking/classes/class.ilLPCollectionCache.php';
00113 $status_info['scos'] = ilLPCollectionCache::_getItems($a_obj_id);
00114 $status_info['num_scos'] = count($status_info['scos']);
00115
00116 include_once './content/classes/SCORM/class.ilObjSCORMTracking.php';
00117 $status_info['num_completed'] = ilObjSCORMTracking::_getCountCompletedPerUser($status_info['scos'],$a_obj_id);
00118
00119
00120
00121 include_once './content/classes/class.ilObjSAHSLearningModule.php';
00122 $status_info['subtype'] = ilObjSAHSLearningModule::_lookupSubType($a_obj_id);
00123
00124 switch($status_info['subtype'])
00125 {
00126 case 'hacp':
00127 case 'aicc':
00128 include_once './content/classes/class.ilObjAICCLearningModule.php';
00129 foreach(ilObjAICCLearningModule::_getTrackingItems($a_obj_id) as $item)
00130 {
00131 if(in_array($item['obj_id'],$status_info['scos']))
00132 {
00133 $status_info['scos_title']["$item[obj_id]"] = $item['title'];
00134 }
00135 }
00136 break;
00137 case 'scorm':
00138
00139 include_once './content/classes/SCORM/class.ilSCORMItem.php';
00140 foreach($status_info['scos'] as $sco_id)
00141 {
00142 $status_info['scos_title'][$sco_id] = ilSCORMItem::_lookupTitle($sco_id);
00143 }
00144 }
00145
00146 include_once './content/classes/SCORM/class.ilObjSCORMTracking.php';
00147 $info = ilObjSCORMTracking::_getProgressInfo($status_info['scos'],$a_obj_id);
00148
00149
00150 $status_info['completed'] = array();
00151 $status_info['failed'] = array();
00152 $status_info['in_progress'] = array();
00153 foreach($status_info['scos'] as $sco_id)
00154 {
00155 $status_info['completed'][$sco_id] = $info['completed'][$sco_id] ? $info['completed'][$sco_id] : array();
00156 $status_info['failed'][$sco_id] = $info['failed'][$sco_id] ? $info['failed'][$sco_id] : array();
00157 $status_info['in_progress'][$sco_id] = $info['in_progress'][$sco_id] ? $info['in_progress'][$sco_id] : array();
00158 }
00159
00160 return $status_info;
00161 }
00162 }
00163 ?>