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 ilLPStatusTestPassed extends ilLPStatus
00036 {
00037
00038 function ilLPStatusTestPassed($a_obj_id)
00039 {
00040 global $ilDB;
00041
00042 parent::ilLPStatus($a_obj_id);
00043 $this->db =& $ilDB;
00044 }
00045
00046 function _getInProgress($a_obj_id)
00047 {
00048 global $ilDB;
00049
00050 global $ilBench;
00051 $ilBench->start('LearningProgress','9182_LPStatusTestPassed_inProgress');
00052
00053
00054 include_once './assessment/classes/class.ilObjTestAccess.php';
00055
00056 $query = sprintf("SELECT DISTINCT(user_fi) FROM tst_active, tst_tests ".
00057 "WHERE tst_active.test_fi = tst_tests.test_id AND tst_tests.obj_fi = %s",
00058 $ilDB->quote($a_obj_id)
00059 );
00060
00061 $res = $ilDB->query($query);
00062 while($row = $res->fetchRow(DB_FETCHMODE_OBJECT))
00063 {
00064 $user_ids[] = $row->user_fi;
00065 }
00066
00067 $users = array_diff((array) $user_ids,ilLPStatusWrapper::_getCompleted($a_obj_id));
00068 $users = array_diff((array) $users,ilLPStatusWrapper::_getFailed($a_obj_id));
00069
00070 $ilBench->stop('LearningProgress','9182_LPStatusTestPassed_inProgress');
00071 return $users ? $users : array();
00072 }
00073
00074 function _getCompleted($a_obj_id)
00075 {
00076 global $ilDB;
00077 global $ilBench;
00078 $ilBench->start('LearningProgress','9183_LPStatusTestPassed_completed');
00079
00080 include_once './assessment/classes/class.ilObjTestAccess.php';
00081 include_once './Services/Tracking/classes/class.ilTestResultCache.php';
00082
00083 $status_info = ilLPStatusWrapper::_getStatusInfo($a_obj_id);
00084 foreach($status_info['results'] as $user_data)
00085 {
00086 if($user_data['passed'])
00087 {
00088 $user_ids[] = $user_data['user_id'];
00089 }
00090 }
00091 $ilBench->stop('LearningProgress','9183_LPStatusTestPassed_completed');
00092 return $user_ids ? $user_ids : array();
00093 }
00094
00095 function _getFailed($a_obj_id)
00096 {
00097 $status_info = ilLPStatusWrapper::_getStatusInfo($a_obj_id);
00098 foreach($status_info['results'] as $user_data)
00099 {
00100 if($user_data['failed'])
00101 {
00102 $user_ids[] = $user_data['user_id'];
00103 }
00104 }
00105 return $user_ids ? $user_ids : array();
00106 }
00107
00108 function _getStatusInfo($a_obj_id)
00109 {
00110 include_once './assessment/classes/class.ilObjTestAccess.php';
00111 $status_info['results'] = ilObjTestAccess::_getPassedUsers($a_obj_id);
00112 return $status_info;
00113 }
00114
00115 }
00116 ?>