function _getInProgress($a_obj_id) { global $ilDB; global $ilBench; $ilBench->start('LearningProgress', '9182_LPStatusTestPassed_inProgress'); include_once './Modules/Test/classes/class.ilObjTestAccess.php'; $query = "SELECT DISTINCT(user_fi) FROM tst_active " . "WHERE test_fi = '" . ilObjTestAccess::_getTestIDFromObjectID($a_obj_id) . "'"; $res = $ilDB->query($query); while ($row = $res->fetchRow(DB_FETCHMODE_OBJECT)) { $user_ids[] = $row->user_fi; } $users = array_diff((array) $user_ids, ilLPStatusWrapper::_getCompleted($a_obj_id)); $users = array_diff((array) $users, ilLPStatusWrapper::_getFailed($a_obj_id)); $users = array_diff((array) $users, ilLPStatusWrapper::_getNotAttempted($a_obj_id)); $ilBench->stop('LearningProgress', '9182_LPStatusTestPassed_inProgress'); return $users ? $users : array(); }
/** * Static function to read the number of user who have the status 'not_attempted' */ function _getCountNotAttempted($a_obj_id) { return count(ilLPStatusWrapper::_getNotAttempted($a_obj_id)); }
/** * Refresh status * * @param * @return */ function refreshStatus($a_obj_id, $a_users = null) { include_once "./Services/Tracking/classes/class.ilLPStatusWrapper.php"; $not_attempted = ilLPStatusWrapper::_getNotAttempted($a_obj_id); foreach ($not_attempted as $user_id) { $percentage = $this->determinePercentage($a_obj_id, $user_id); if (self::writeStatus($a_obj_id, $user_id, self::LP_STATUS_NOT_ATTEMPTED_NUM, $percentage, true)) { self::raiseEvent($a_obj_id, $user_id, self::LP_STATUS_NOT_ATTEMPTED_NUM, $percentage); } } $in_progress = ilLPStatusWrapper::_getInProgress($a_obj_id); foreach ($in_progress as $user_id) { $percentage = $this->determinePercentage($a_obj_id, $user_id); if (self::writeStatus($a_obj_id, $user_id, self::LP_STATUS_IN_PROGRESS_NUM, $percentage, true)) { self::raiseEvent($a_obj_id, $user_id, self::LP_STATUS_IN_PROGRESS_NUM, $percentage); } } $completed = ilLPStatusWrapper::_getCompleted($a_obj_id); foreach ($completed as $user_id) { $percentage = $this->determinePercentage($a_obj_id, $user_id); if (self::writeStatus($a_obj_id, $user_id, self::LP_STATUS_COMPLETED_NUM, $percentage, true)) { self::raiseEvent($a_obj_id, $user_id, self::LP_STATUS_COMPLETED_NUM, $percentage); } } $failed = ilLPStatusWrapper::_getFailed($a_obj_id); foreach ($failed as $user_id) { $percentage = $this->determinePercentage($a_obj_id, $user_id); if (self::writeStatus($a_obj_id, $user_id, self::LP_STATUS_FAILED_NUM, $percentage, true)) { self::raiseEvent($a_obj_id, $user_id, self::LP_STATUS_FAILED_NUM, $percentage); } } if ($a_users) { $missing_users = array_diff($a_users, $not_attempted + $in_progress + $completed + $failed); if ($missing_users) { foreach ($missing_users as $user_id) { ilLPStatusWrapper::_updateStatus($a_obj_id, $user_id); } } } }