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 include_once './Services/Tracking/classes/class.ilLPStatusWrapper.php';
00035
00036 class ilLPStatusCollection extends ilLPStatus
00037 {
00038
00039 function ilLPStatusCollection($a_obj_id)
00040 {
00041 global $ilDB;
00042
00043 parent::ilLPStatus($a_obj_id);
00044 $this->db =& $ilDB;
00045 }
00046
00047 function _getNotAttempted($a_obj_id)
00048 {
00049 global $ilObjDataCache;
00050
00051 switch($ilObjDataCache->lookupType($a_obj_id))
00052 {
00053 case 'crs':
00054 include_once 'course/classes/class.ilCourseMembers.php';
00055 $members = ilCourseMembers::_getMembers($a_obj_id);
00056
00057
00058 $users = array_diff((array) $members,$inp = ilLPStatusWrapper::_getInProgress($a_obj_id));
00059 $users = array_diff((array) $users,$com = ilLPStatusWrapper::_getCompleted($a_obj_id));
00060 $users = array_diff((array) $users,$fai = ilLPStatusWrapper::_getFailed($a_obj_id));
00061 return $users;
00062
00063 case 'grp':
00064 include_once 'classes/class.ilObjGroup.php';
00065 $members = ilObjGroup::_getMembers($a_obj_id);
00066
00067
00068 $users = array_diff((array) $members,$inp = ilLPStatusWrapper::_getInProgress($a_obj_id));
00069 $users = array_diff((array) $users,$com = ilLPStatusWrapper::_getCompleted($a_obj_id));
00070 $users = array_diff((array) $users,$fai = ilLPStatusWrapper::_getFailed($a_obj_id));
00071 return $users;
00072
00073 default:
00074 return array();
00075 }
00076 }
00077
00078 function _getInProgress($a_obj_id)
00079 {
00080 include_once './Services/Tracking/classes/class.ilLPCollectionCache.php';
00081 include_once './Services/Tracking/classes/class.ilLPEventCollections.php';
00082
00083
00084 global $ilBench,$ilObjDataCache;
00085 $ilBench->start('LearningProgress','9172_LPStatusCollection_inProgress');
00086
00087 $in_progress = 0;
00088 foreach(ilLPCollectionCache::_getItems($a_obj_id) as $item_id)
00089 {
00090 $item_id = $ilObjDataCache->lookupObjId($item_id);
00091
00092
00093 $users = array_unique(array_merge((array) $users,ilLPStatusWrapper::_getInProgress($item_id)));
00094 $users = array_unique(array_merge((array) $users,ilLPStatusWrapper::_getCompleted($item_id)));
00095 }
00096
00097
00098 foreach(ilLPEventCollections::_getItems($a_obj_id) as $event_id)
00099 {
00100 #var_dump("<pre>","EVENT_ID: ",$event_id,"<pre>");
00101 $users = array_unique(array_merge((array) $users,ilLPStatusWrapper::_getInProgressByType($event_id,'event')));
00102 $users = array_unique(array_merge((array) $users,ilLPStatusWrapper::_getCompletedByType($event_id,'event')));
00103 }
00104
00105
00106 $users = array_diff((array) $users,ilLPStatusWrapper::_getCompleted($a_obj_id));
00107
00108 $users = array_diff((array) $users,ilLPStatusWrapper::_getFailed($a_obj_id));
00109
00110 switch($ilObjDataCache->lookupType($a_obj_id))
00111 {
00112 case 'crs':
00113
00114 include_once 'course/classes/class.ilCourseMembers.php';
00115 $users = array_intersect(ilCourseMembers::_getMembers($a_obj_id),(array) $users);
00116 break;
00117
00118 case 'grp':
00119 include_once 'classes/class.ilObjGroup.php';
00120 $members = ilObjGroup::_getMembers($a_obj_id);
00121 $users = array_intersect($members,(array) $users);
00122 break;
00123 }
00124
00125 $ilBench->stop('LearningProgress','9172_LPStatusCollection_inProgress');
00126 return $users;
00127 }
00128
00129 function _getCompleted($a_obj_id)
00130 {
00131 include_once './Services/Tracking/classes/class.ilLPCollectionCache.php';
00132 include_once './Services/Tracking/classes/class.ilLPEventCollections.php';
00133
00134 global $ilBench,$ilObjDataCache;
00135 $ilBench->start('LearningProgress','9173_LPStatusCollection_completed');
00136
00137 $counter = 0;
00138 $users = array();
00139 foreach(ilLPCollectionCache::_getItems($a_obj_id) as $item_id)
00140 {
00141 $item_id = $ilObjDataCache->lookupObjId($item_id);
00142
00143 $tmp_users = ilLPStatusWrapper::_getCompleted($item_id);
00144 if(!$counter++)
00145 {
00146 $users = $tmp_users;
00147 }
00148 else
00149 {
00150 $users = array_intersect($users,$tmp_users);
00151 }
00152
00153 }
00154 foreach(ilLPEventCollections::_getItems($a_obj_id) as $event_id)
00155 {
00156 $tmp_users = ilLPStatusWrapper::_getCompletedByType($event_id,'event');
00157 if(!$counter++)
00158 {
00159 $users = $tmp_users;
00160 }
00161 else
00162 {
00163 $users = array_intersect($users,$tmp_users);
00164 }
00165 }
00166
00167 switch($ilObjDataCache->lookupType($a_obj_id))
00168 {
00169 case 'crs':
00170
00171 include_once 'course/classes/class.ilCourseMembers.php';
00172 $users = array_intersect(ilCourseMembers::_getMembers($a_obj_id),(array) $users);
00173 break;
00174
00175 case 'grp':
00176 include_once 'classes/class.ilObjGroup.php';
00177 $members = ilObjGroup::_getMembers($a_obj_id);
00178 $users = array_intersect($members,(array) $users);
00179 break;
00180 }
00181 $users = array_diff($users,ilLPStatusWrapper::_getFailed($a_obj_id));
00182 $ilBench->stop('LearningProgress','9173_LPStatusCollection_completed');
00183 return (array) $users;
00184 }
00185
00186 function _getFailed($a_obj_id)
00187 {
00188 global $ilObjDataCache;
00189
00190 include_once './Services/Tracking/classes/class.ilLPCollectionCache.php';
00191
00192 $users = array();
00193 foreach(ilLPCollectionCache::_getItems($a_obj_id) as $item_id)
00194 {
00195 $item_id = $ilObjDataCache->lookupObjId($item_id);
00196 $tmp_users = ilLPStatusWrapper::_getFailed($item_id);
00197 $users = array_merge($users,$tmp_users);
00198 }
00199
00200 switch($ilObjDataCache->lookupType($a_obj_id))
00201 {
00202 case 'crs':
00203
00204 include_once 'course/classes/class.ilCourseMembers.php';
00205 $users = array_intersect(ilCourseMembers::_getMembers($a_obj_id),(array) $users);
00206 break;
00207
00208 case 'grp':
00209 include_once 'classes/class.ilObjGroup.php';
00210 $members = ilObjGroup::_getMembers($a_obj_id);
00211 $users = array_intersect($members,(array) $users);
00212 break;
00213 }
00214
00215 return array_unique($users);
00216 }
00217
00218
00219 function _getStatusInfo($a_obj_id)
00220 {
00221 include_once './Services/Tracking/classes/class.ilLPCollectionCache.php';
00222 include_once './Services/Tracking/classes/class.ilLPEventCollections.php';
00223
00224 $status_info['collections'] = ilLPCollectionCache::_getItems($a_obj_id);
00225 $status_info['event_collections'] = ilLPEventCollections::_getItems($a_obj_id);
00226
00227 $status_info['num_collections'] = count($status_info['collections']) + count($status_info['event_collections']);
00228 return $status_info;
00229 }
00230
00231 function _getTypicalLearningTime($a_obj_id)
00232 {
00233 global $ilObjDataCache;
00234
00235 if($ilObjDataCache->lookupType($a_obj_id) == 'sahs')
00236 {
00237 return parent::_getTypicalLearningTime($a_obj_id);
00238 }
00239
00240 $status_info = ilLPStatusWrapper::_getStatusInfo($a_obj_id);
00241 foreach($status_info['collections'] as $item)
00242 {
00243 $tlt += ilLPStatusWrapper::_getTypicalLearningTime($ilObjDataCache->lookupObjId($item));
00244 }
00245 return $tlt;
00246 }
00247
00248 }
00249 ?>