19 declare(strict_types=1);
37 if (!isset($this->cmixUserResult[$objId])) {
38 $this->cmixUserResult[
$objId] = array();
41 if (!isset($this->cmixUserResult[$objId][$usrId])) {
50 return $this->cmixUserResult[
$objId][$usrId];
72 return self::getUserIdsByLpStatusNum(
83 return self::getUserIdsByLpStatusNum(
94 return self::getUserIdsByLpStatusNum(
105 return self::getUserIdsByLpStatusNum(
116 $statusInfo = self::_getStatusInfo($objId);
117 return $statusInfo[$lpStatusNum];
125 if (!isset(self::$statusInfoCache[$a_obj_id]) || self::$statusInfoCache[$a_obj_id] ===
null) {
126 self::$statusInfoCache[$a_obj_id] = self::loadStatusInfo($a_obj_id);
129 return self::$statusInfoCache[$a_obj_id];
147 foreach ($cmixUsers as $cmixUser) {
150 if (isset($userResults[$cmixUser->getUsrId()])) {
151 $userResult = $userResults[$cmixUser->getUsrId()];
153 if (self::_resultSatisfyCompleted($userResult, $a_obj_id)) {
157 if (self::_resultSatisfyFailed($userResult, $a_obj_id)) {
162 $statusInfo[$status][] = $cmixUser->getUsrId();
177 return self::LP_STATUS_COMPLETED_NUM;
181 return self::LP_STATUS_FAILED_NUM;
184 return self::LP_STATUS_IN_PROGRESS_NUM;
188 return self::LP_STATUS_IN_PROGRESS_NUM;
191 return self::LP_STATUS_NOT_ATTEMPTED_NUM;
197 if ($cmixResult ==
null) {
200 return (
int) round((100 * $cmixResult->getScore()));
207 $lpStatusDetermination =
new static($a_obj_id);
208 return $lpStatusDetermination->resultSatisfyCompleted($result);
215 $lpStatusDetermination =
new static($a_obj_id);
216 return $lpStatusDetermination->resultSatisfyFailed($result);
const LP_STATUS_COMPLETED_NUM
static exists(int $objId, int $usrId, int $privacyIdent=999)
static _getInProgress(int $a_obj_id)
determineStatus(int $a_obj_id, int $a_usr_id, ?object $a_obj=null)
static _resultSatisfyFailed(ilCmiXapiResult $result, int $a_obj_id)
const LP_STATUS_IN_PROGRESS_NUM
static _getCompleted(int $a_obj_id)
static _resultSatisfyCompleted(ilCmiXapiResult $result, int $a_obj_id)
static getInstanceByObjIdAndUsrId(int $objId, int $usrId)
getCmixUserResult(int $objId, int $usrId)
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
static getResultsForObject(int $objId)
static _getStatusInfo(?int $a_obj_id)
resultSatisfyCompleted(ilCmiXapiResult $result)
static _getFailed(int $a_obj_id)
static loadStatusInfo(int $a_obj_id)
ensureObject(int $objId, ?ilObject $object=null)
static array $statusInfoCache
static getUserIdsByLpStatusNum(int $objId, int $lpStatusNum)
const LP_STATUS_NOT_ATTEMPTED_NUM
static getInstanceByObjId(?int $obj_id, bool $stop_on_error=true)
get an instance of an Ilias object by object id
determinePercentage(int $a_obj_id, int $a_usr_id, ?object $a_obj=null)
resultSatisfyFailed(ilCmiXapiResult $result)
const LP_STATUS_FAILED_NUM
static getUsersForObject(int $objId, bool $asUsrId=false)
static _getNotAttempted(int $a_obj_id)