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 ilLPStatusManual extends ilLPStatus
00036 {
00037
00038 function ilLPStatusManual($a_obj_id)
00039 {
00040 global $ilDB;
00041
00042 parent::ilLPStatus($a_obj_id);
00043 $this->db =& $ilDB;
00044 }
00045
00046 function _getNotAttempted($a_obj_id)
00047 {
00048 global $ilObjDataCache;
00049
00050 global $ilBench;
00051 $ilBench->start('LearningProgress','9161_LPStatusManual_notAttempted');
00052
00053 switch($ilObjDataCache->lookupType($a_obj_id))
00054 {
00055 case 'crs':
00056
00057 include_once 'Modules/Course/classes/class.ilCourseParticipants.php';
00058 $members_obj = ilCourseParticipants::_getInstanceByObjId($a_obj_id);
00059 $members = $members_obj->getParticipants();
00060
00061
00062 $users = array_diff($members,$inp = ilLPStatusWrapper::_getInProgress($a_obj_id));
00063 $users = array_diff($users,$com = ilLPStatusWrapper::_getCompleted($a_obj_id));
00064
00065 $ilBench->stop('LearningProgress','9161_LPStatusManual_notAttempted');
00066 return $users;
00067
00068 case 'grp':
00069
00070 include_once 'classes/class.ilObjGroup.php';
00071
00072 $members = ilObjGroup::_getMembers($a_obj_id);
00073
00074 $users = array_diff($members,$inp = ilLPStatusWrapper::_getInProgress($a_obj_id));
00075 $users = array_diff($users,$com = ilLPStatusWrapper::_getCompleted($a_obj_id));
00076
00077 $ilBench->stop('LearningProgress','9161_LPStatusManual_notAttempted');
00078 return $users;
00079
00080 default:
00081 $ilBench->stop('LearningProgress','9161_LPStatusManual_notAttempted');
00082 return array();
00083 }
00084 }
00085
00086 function _getInProgress($a_obj_id)
00087 {
00088 global $ilObjDataCache;
00089
00090 global $ilBench;
00091 $ilBench->start('LearningProgress','9162_LPStatusManual_inProgress');
00092
00093
00094 switch($ilObjDataCache->lookupType($a_obj_id))
00095 {
00096 case 'lm':
00097 case 'htlm':
00098 $ilBench->stop('LearningProgress','9162_LPStatusManual_inProgress');
00099 return ilLPStatusManual::__getLMInProgress($a_obj_id);
00100
00101 case 'crs':
00102 $ilBench->stop('LearningProgress','9162_LPStatusManual_inProgress');
00103 return ilLPStatusManual::__getCourseInProgress($a_obj_id);
00104
00105 case 'grp':
00106 $ilBench->stop('LearningProgress','9162_LPStatusManual_inProgress');
00107 return ilLPStatusManual::__getGroupInProgress($a_obj_id);
00108
00109 default:
00110 $ilBench->stop('LearningProgress','9162_LPStatusManual_inProgress');
00111 echo "ilLPStatusManual: unknown type ".$ilObjDataCache->lookupType($a_obj_id);
00112
00113 }
00114 return array();
00115 }
00116
00117 function _getCompleted($a_obj_id)
00118 {
00119 global $ilDB;
00120
00121 global $ilBench;
00122 $ilBench->start('LearningProgress','9163_LPStatusManual_completed');
00123
00124 $query = "SELECT DISTINCT(usr_id) as user_id FROM ut_lp_marks ".
00125 "WHERE obj_id = '".$a_obj_id."' ".
00126 "AND completed = '1'";
00127
00128 $res = $ilDB->query($query);
00129 while($row = $res->fetchRow(DB_FETCHMODE_OBJECT))
00130 {
00131 $usr_ids[] = $row->user_id;
00132 }
00133 $ilBench->stop('LearningProgress','9163_LPStatusManual_completed');
00134 return $usr_ids ? $usr_ids : array();
00135 }
00136
00137
00138 function __getLMInProgress($a_obj_id)
00139 {
00140 global $ilDB;
00141
00142 $completed = ilLPStatusWrapper::_getCompleted($a_obj_id);
00143 $query = "SELECT DISTINCT(user_id) FROM ut_learning_progress ".
00144 "WHERE obj_id = '".$a_obj_id."'";
00145
00146 $res = $ilDB->query($query);
00147 while($row = $res->fetchRow(DB_FETCHMODE_OBJECT))
00148 {
00149 if(!in_array($row->user_id,$completed))
00150 {
00151 $user_ids[] = $row->user_id;
00152 }
00153 }
00154 return $user_ids ? $user_ids : array();
00155 }
00156
00157 function __getCourseInProgress($a_obj_id)
00158 {
00159 global $ilDB;
00160
00161 $completed = ilLPStatusWrapper::_getCompleted($a_obj_id);
00162
00163 include_once 'Modules/Course/classes/class.ilCourseParticipants.php';
00164 $members_obj = ilCourseParticipants::_getInstanceByObjId($a_obj_id);
00165 $members = $members_obj->getParticipants();
00166
00167 $query = "SELECT DISTINCT(user_id) FROM ut_learning_progress ".
00168 "WHERE obj_id = '".$a_obj_id."' AND obj_type = 'crs'";
00169
00170 $res = $ilDB->query($query);
00171 while($row = $res->fetchRow(DB_FETCHMODE_OBJECT))
00172 {
00173 if(!in_array($row->user_id,$completed) and in_array($row->user_id,$members))
00174 {
00175 $user_ids[] = $row->user_id;
00176 }
00177 }
00178 return $user_ids ? $user_ids : array();
00179 }
00180
00181 function __getGroupInProgress($a_obj_id)
00182 {
00183 global $ilDB;
00184
00185 $completed = ilLPStatusWrapper::_getCompleted($a_obj_id);
00186
00187 include_once 'classes/class.ilObjGroup.php';
00188 $members = ilObjGroup::_getMembers($a_obj_id);
00189
00190 $query = "SELECT DISTINCT(user_id) FROM ut_learning_progress ".
00191 "WHERE obj_id = '".$a_obj_id."' AND obj_type = 'grp'";
00192
00193 $res = $ilDB->query($query);
00194 while($row = $res->fetchRow(DB_FETCHMODE_OBJECT))
00195 {
00196 if(!in_array($row->user_id,$completed) and in_array($row->user_id,$members))
00197 {
00198 $user_ids[] = $row->user_id;
00199 }
00200 }
00201 return $user_ids ? $user_ids : array();
00202 }
00203 }
00204 ?>