function _getInProgress($a_obj_id) { include_once './Services/Tracking/classes/class.ilChangeEvent.php'; $users = ilChangeEvent::lookupUsersInProgress($a_obj_id); include_once './Services/Object/classes/class.ilObjectLP.php'; $olp = ilObjectLP::getInstance($a_obj_id); $collection = $olp->getCollectionInstance(); if ($collection) { foreach ($collection->getItems() as $item_id) { $item_id = ilObject::_lookupObjId($item_id); // merge arrays of users with status 'in progress' $users = array_unique(array_merge((array) $users, ilLPStatusWrapper::_getInProgress($item_id))); $users = array_unique(array_merge((array) $users, ilLPStatusWrapper::_getCompleted($item_id))); } } // Exclude all users with status completed. $users = array_diff((array) $users, ilLPStatusWrapper::_getCompleted($a_obj_id)); // Exclude all users with status failed. $users = array_diff((array) $users, ilLPStatusWrapper::_getFailed($a_obj_id)); if ($users) { // Exclude all non members $users = array_intersect(self::getMembers($a_obj_id), (array) $users); } return $users; }
function _getInProgress($a_obj_id) { include_once './Services/Tracking/classes/class.ilChangeEvent.php'; $users = ilChangeEvent::lookupUsersInProgress($a_obj_id); // Exclude all users with status completed. $users = array_diff((array) $users, ilLPStatusWrapper::_getCompleted($a_obj_id)); return $users; }
/** * get in progress * * @access public * @param int object id * @return array int Array of user ids */ public function _getInProgress($a_obj_id) { include_once './Services/Tracking/classes/class.ilChangeEvent.php'; $users = ilChangeEvent::lookupUsersInProgress($a_obj_id); // Exclude all users with status completed. $users = array_diff((array) $users, ilLPStatusWrapper::_getCompleted($a_obj_id)); if ($users) { // Exclude all non members $users = array_intersect(self::getMembers($a_obj_id), (array) $users); } return $users; }
function _getInProgress($a_obj_id) { include_once './Modules/Exercise/classes/class.ilExerciseMembers.php'; include_once './Services/Tracking/classes/class.ilChangeEvent.php'; $users = ilExerciseMembers::_getReturned($a_obj_id); $all = ilChangeEvent::lookupUsersInProgress($a_obj_id); $users = $users + $all; $users = array_diff($users, ilLPStatusWrapper::_getCompleted($a_obj_id)); $users = array_diff($users, ilLPStatusWrapper::_getFailed($a_obj_id)); if ($users) { // Exclude all non members $users = array_intersect(self::getMembers($a_obj_id), (array) $users); } return $users; }
function _getCompleted($a_obj_id) { $usr_ids = array(); include_once './Services/Tracking/classes/class.ilChangeEvent.php'; $users = ilChangeEvent::lookupUsersInProgress($a_obj_id); include_once "Modules/LearningModule/classes/class.ilLMTracker.php"; foreach ($users as $user_id) { // :TODO: this ought to be optimized $tracker = ilLMTracker::getInstanceByObjId($a_obj_id, $user_id); if ($tracker->getAllQuestionsCorrect()) { $usr_ids[] = $user_id; } } return $usr_ids; }
function _getStatusInfo($a_obj_id) { global $ilDB; include_once 'Modules/Course/classes/class.ilCourseObjective.php'; $status_info = array(); $status_info['user_status'] = array(); $status_info['objectives'] = ilCourseObjective::_getObjectiveIds($a_obj_id, true); $status_info['num_objectives'] = count($status_info['objectives']); if ($status_info['num_objectives']) { $in = $ilDB->in('objective_id', $status_info['objectives'], false, 'integer'); include_once "Modules/Course/classes/Objectives/class.ilLOUserResults.php"; foreach (ilLOUserResults::getSummarizedObjectiveStatusForLP($a_obj_id, $status_info['objectives']) as $user_id => $user_status) { $status_info['user_status'][$user_status][] = $user_id; } // change event should lead to "in progress" - see determineStatus() include_once "./Services/Tracking/classes/class.ilChangeEvent.php"; foreach (ilChangeEvent::lookupUsersInProgress($a_obj_id) as $user_id) { if (!is_array($status_info['user_status'][ilLPStatus::LP_STATUS_IN_PROGRESS_NUM]) || !in_array($user_id, $status_info['user_status'][ilLPStatus::LP_STATUS_IN_PROGRESS_NUM])) { $status_info['user_status'][ilLPStatus::LP_STATUS_IN_PROGRESS_NUM][] = $user_id; } } // Read title/description $query = "SELECT * FROM crs_objectives WHERE " . $in; $res = $ilDB->query($query); while ($row = $res->fetchRow(DB_FETCHMODE_OBJECT)) { $status_info['objective_title'][$row->objective_id] = $row->title; $status_info['objective_description'][$row->objective_id] = $row->description; } } return $status_info; }