Class ilObjSCORMTracking.
More...
|
| ilObjSCORMTracking () |
| Constructor public. More...
|
|
| extractData () |
|
| store ($obj_id=0, $sahs_id=0, $extractData=1) |
|
| storeJsApi ($obj_id=0) |
|
| storeJsApiCmi ($user_id, $obj_id, $data) |
|
| syncGlobalStatus ($userId, $packageId, $data, $new_global_status) |
|
| _syncReadEvent ($a_obj_id, $a_user_id, $a_type, $a_ref_id) |
| Synch read event table. More...
|
|
| _insertTrackData ($a_sahs_id, $a_lval, $a_rval, $a_obj_id) |
|
| _getTrackedUsers ($a_obj_id) |
| Get all tracked users. More...
|
|
| _getFailed ($scorm_item_id, $a_obj_id) |
| like necessary because of Oracle More...
|
|
| scorm12PlayerUnload () |
|
|
static | _getInProgress ($scorm_item_id, $a_obj_id, $a_blocked_user_ids=null) |
|
static | _getCompleted ($scorm_item_id, $a_obj_id) |
| like necessary because of Oracle More...
|
|
static | _getCollectionStatus ($a_scos, $a_obj_id, $a_user_id) |
|
static | _hasMaxAttempts ($a_obj_id, $a_user_id) |
|
static | _countCompleted ($a_scos, $a_obj_id, $a_user_id) |
|
static | lookupLastAccessTimes ($a_obj_id) |
| Lookup last acccess time for all users of a scorm module ilDB $ilDB. More...
|
|
static | _getCountCompletedPerUser ($a_scorm_item_ids, $a_obj_id) |
| Get users who have status completed or passed. More...
|
|
static | _getProgressInfo ($sco_item_ids, $a_obj_id) |
| Get info about. More...
|
|
◆ _countCompleted()
static ilObjSCORMTracking::_countCompleted |
( |
|
$a_scos, |
|
|
|
$a_obj_id, |
|
|
|
$a_user_id |
|
) |
| |
|
static |
Definition at line 567 of file class.ilObjSCORMTracking.php.
References $in, and $res.
Referenced by ilLPStatusSCORM\determinePercentage().
571 if (is_array($a_scos))
573 $in = $ilDB->in(
'sco_id', $a_scos,
false,
'integer');
575 $res = $ilDB->queryF(
'SELECT sco_id, rvalue FROM scorm_tracking 580 array(
'integer',
'text',
'integer'),
581 array($a_obj_id,
'cmi.core.lesson_status', $a_user_id));
584 while ($rec = $ilDB->fetchAssoc(
$res))
586 if ($rec[
"rvalue"] ==
"completed" || $rec[
"rvalue"] ==
"passed")
◆ _getCollectionStatus()
static ilObjSCORMTracking::_getCollectionStatus |
( |
|
$a_scos, |
|
|
|
$a_obj_id, |
|
|
|
$a_user_id |
|
) |
| |
|
static |
Definition at line 472 of file class.ilObjSCORMTracking.php.
References $failed, $in, and $res.
Referenced by ilLPStatusSCORM\determineStatus().
477 $status =
"not_attempted";
479 if (is_array($a_scos))
481 $in = $ilDB->in(
'sco_id', $a_scos,
false,
'integer');
483 $res = $ilDB->queryF(
'SELECT sco_id, rvalue FROM scorm_tracking 488 array(
'integer',
'text',
'integer'),
489 array($a_obj_id,
'cmi.core.lesson_status', $a_user_id));
494 while ($rec = $ilDB->fetchAssoc(
$res))
496 if ($rec[
"rvalue"] ==
"failed")
500 if ($rec[
"rvalue"] !=
"completed" && $rec[
"rvalue"] !=
"passed")
508 $status =
"in_progress";
510 if ($completed && $cnt == count($a_scos))
512 $status =
"completed";
520 if ($status ==
"in_progress" && self::_hasMaxAttempts($a_obj_id, $a_user_id))
◆ _getCompleted()
static ilObjSCORMTracking::_getCompleted |
( |
|
$scorm_item_id, |
|
|
|
$a_obj_id |
|
) |
| |
|
static |
like necessary because of Oracle
- Parameters
-
object | $scorm_item_id | |
object | $a_obj_id | |
- Returns
Definition at line 438 of file class.ilObjSCORMTracking.php.
References $in, $res, and $row.
Referenced by ilObjSCORMLearningModule\exportSelected().
442 if(is_array($scorm_item_id))
444 $in = $ilDB->in(
'sco_id', $scorm_item_id,
false,
'integer');
446 $res = $ilDB->queryF(
'SELECT DISTINCT(user_id) FROM scorm_tracking 450 AND ('.$ilDB->like(
'rvalue',
'clob',
'completed').
' OR '.$ilDB->like(
'rvalue',
'clob',
'passed').
')',
451 array(
'integer',
'text'),
452 array($a_obj_id,
'cmi.core.lesson_status'));
456 $res = $ilDB->queryF(
'SELECT DISTINCT(user_id) FROM scorm_tracking 460 AND ('.$ilDB->like(
'rvalue',
'clob',
'completed').
' OR '.$ilDB->like(
'rvalue',
'clob',
'passed').
')',
461 array(
'integer',
'integer',
'text'),
462 array($scorm_item_id,$a_obj_id,
'cmi.core.lesson_status'));
465 while(
$row = $ilDB->fetchObject(
$res))
467 $user_ids[] =
$row->user_id;
469 return $user_ids ? $user_ids : array();
◆ _getCountCompletedPerUser()
static ilObjSCORMTracking::_getCountCompletedPerUser |
( |
|
$a_scorm_item_ids, |
|
|
|
$a_obj_id |
|
) |
| |
|
static |
Get users who have status completed or passed.
- Parameters
-
object | $a_scorm_item_ids | |
object | $a_obj_id | |
- Returns
Definition at line 692 of file class.ilObjSCORMTracking.php.
References $in, $res, and $row.
Referenced by ilLPStatusSCORM\_getStatusInfo().
696 $in = $ilDB->in(
'sco_id', $a_scorm_item_ids,
false,
'integer');
700 $res = $ilDB->queryF(
' 701 SELECT user_id, COUNT(user_id) completed FROM scorm_tracking 705 AND ('.$ilDB->like(
'rvalue',
'clob',
'completed').
' OR '.$ilDB->like(
'rvalue',
'clob',
'passed').
') 707 array(
'integer',
'text'),
708 array($a_obj_id,
'cmi.core.lesson_status')
710 while(
$row = $ilDB->fetchObject(
$res))
712 $users[
$row->user_id] =
$row->completed;
730 return $users ? $users : array();
◆ _getFailed()
ilObjSCORMTracking::_getFailed |
( |
|
$scorm_item_id, |
|
|
|
$a_obj_id |
|
) |
| |
like necessary because of Oracle
- Parameters
-
object | $scorm_item_id | |
object | $a_obj_id | |
- Returns
Definition at line 649 of file class.ilObjSCORMTracking.php.
References $in, $res, and $row.
653 if(is_array($scorm_item_id))
655 $in = $ilDB->in(
'sco_id', $scorm_item_id,
false,
'integer');
657 $res = $ilDB->queryF(
' 658 SELECT DISTINCT(user_id) FROM scorm_tracking 662 AND '.$ilDB->like(
'rvalue',
'clob',
'failed').
' ',
663 array(
'integer',
'text'),
664 array($a_obj_id,
'cmi.core.lesson_status'));
669 $res = $ilDB->queryF(
' 670 SELECT DISTINCT(user_id) FROM scorm_tracking 674 AND '.$ilDB->like(
'rvalue',
'clob',
'failed').
' ',
675 array(
'integer',
'integer',
'text'),
676 array($scorm_item_id,$a_obj_id,
'cmi.core.lesson_status'));
679 while(
$row = $ilDB->fetchObject(
$res))
681 $user_ids[] =
$row->user_id;
683 return $user_ids ? $user_ids : array();
◆ _getInProgress()
static ilObjSCORMTracking::_getInProgress |
( |
|
$scorm_item_id, |
|
|
|
$a_obj_id, |
|
|
|
$a_blocked_user_ids = null |
|
) |
| |
|
static |
- Parameters
-
object | $scorm_item_id | |
object | $a_obj_id | |
array | $a_blocked_user_ids | |
- Returns
Definition at line 397 of file class.ilObjSCORMTracking.php.
References $in, $res, and $row.
Referenced by _getProgressInfo().
401 if(is_array($scorm_item_id))
403 $in = $ilDB->in(
'sco_id', $scorm_item_id,
false,
'integer');
405 $res = $ilDB->queryF(
'SELECT user_id,sco_id FROM scorm_tracking 408 GROUP BY user_id, sco_id',
409 array(
'integer'),array($a_obj_id));
414 $res = $ilDB->queryF(
'SELECT user_id,sco_id FROM scorm_tracking 417 array(
'integer',
'integer'),array($scorm_item_id,$a_obj_id)
421 while(
$row = $ilDB->fetchObject(
$res))
424 if(!($a_blocked_user_ids && in_array(
$row->user_id, $a_blocked_user_ids)))
426 $in_progress[
$row->sco_id][] =
$row->user_id;
429 return is_array($in_progress) ? $in_progress : array();
◆ _getProgressInfo()
static ilObjSCORMTracking::_getProgressInfo |
( |
|
$sco_item_ids, |
|
|
|
$a_obj_id |
|
) |
| |
|
static |
Get info about.
- Parameters
-
object | $sco_item_ids | |
object | $a_obj_id | |
- Returns
Definition at line 739 of file class.ilObjSCORMTracking.php.
References $in, $res, $row, and _getInProgress().
Referenced by ilLPStatusSCORM\_getStatusInfo().
743 $in = $ilDB->in(
'sco_id', $sco_item_ids,
false,
'integer');
745 $res = $ilDB->queryF(
' 746 SELECT * FROM scorm_tracking 750 array(
'integer',
'text'),
751 array($a_obj_id,
'cmi.core.lesson_status'));
753 $info[
'completed'] = array();
754 $info[
'failed'] = array();
757 while(
$row = $ilDB->fetchObject(
$res))
763 $info[
'completed'][
$row->sco_id][] =
$row->user_id;
764 $user_ids[] =
$row->user_id;
768 $info[
'failed'][
$row->sco_id][] =
$row->user_id;
769 $user_ids[] =
$row->user_id;
static _getInProgress($scorm_item_id, $a_obj_id, $a_blocked_user_ids=null)
◆ _getTrackedUsers()
ilObjSCORMTracking::_getTrackedUsers |
( |
|
$a_obj_id | ) |
|
◆ _hasMaxAttempts()
static ilObjSCORMTracking::_hasMaxAttempts |
( |
|
$a_obj_id, |
|
|
|
$a_user_id |
|
) |
| |
|
static |
Definition at line 528 of file class.ilObjSCORMTracking.php.
Referenced by ilLPStatusSCORM\_getFailed().
533 $val_set = $ilDB->queryF(
'SELECT * FROM sahs_lm WHERE id = %s',
534 array(
'integer'), array($a_obj_id));
535 $val_rec = $ilDB->fetchAssoc($val_set);
536 $max_attempts = $val_rec[
"max_attempt"];
540 $val_set = $ilDB->queryF(
' 541 SELECT * FROM scorm_tracking 546 array(
'integer',
'integer',
'text',
'integer'),
547 array($a_user_id,0,
'package_attempts',$a_obj_id)
549 $val_rec = $ilDB->fetchAssoc($val_set);
551 $val_rec[
"rvalue"] = str_replace(
"\r\n",
"\n", $val_rec[
"rvalue"]);
552 if ($val_rec[
"rvalue"] == null)
554 $val_rec[
"rvalue"] = 0;
556 $act_attempts = $val_rec[
"rvalue"];
558 if ($act_attempts >= $max_attempts)
◆ _insertTrackData()
ilObjSCORMTracking::_insertTrackData |
( |
|
$a_sahs_id, |
|
|
|
$a_lval, |
|
|
|
$a_rval, |
|
|
|
$a_obj_id |
|
) |
| |
Definition at line 370 of file class.ilObjSCORMTracking.php.
References $ilUser, ilLPStatusWrapper\_updateStatus(), and ilUtil\now().
Referenced by ilSCORMItem\insertTrackData(), ilAICCUnit\insertTrackData(), and ilAICCCourse\insertTrackData().
374 $ilDB->insert(
'scorm_tracking', array(
375 'obj_id' => array(
'integer', $a_obj_id),
376 'user_id' => array(
'integer', $ilUser->getId()),
377 'sco_id' => array(
'integer', $a_sahs_id),
378 'lvalue' => array(
'text', $a_lval),
379 'rvalue' => array(
'clob', $a_rval),
383 if ($a_lval ==
"cmi.core.lesson_status")
385 include_once(
"./Services/Tracking/classes/class.ilLPStatusWrapper.php");
static _updateStatus($a_obj_id, $a_usr_id, $a_obj=null, $a_percentage=false, $a_no_raise=false, $a_force_raise=false)
Update status.
static now()
Return current timestamp in Y-m-d H:i:s format.
◆ _syncReadEvent()
ilObjSCORMTracking::_syncReadEvent |
( |
|
$a_obj_id, |
|
|
|
$a_user_id, |
|
|
|
$a_type, |
|
|
|
$a_ref_id |
|
) |
| |
Synch read event table.
- Parameters
-
Definition at line 331 of file class.ilObjSCORMTracking.php.
References $ilLog, and ilChangeEvent\_recordReadEvent().
Referenced by scorm12PlayerUnload(), and store().
336 $val_set = $ilDB->queryF(
'SELECT package_attempts FROM sahs_user WHERE obj_id = %s AND user_id = %s',
337 array(
'integer',
'integer'),
338 array($a_obj_id,$a_user_id));
340 $val_rec = $ilDB->fetchAssoc($val_set);
342 if ($val_rec[
"package_attempts"] == null) {
343 $val_rec[
"package_attempts"]=
"";
345 $attempts = $val_rec[
"package_attempts"];
348 $sco_set = $ilDB->queryF(
' 349 SELECT sco_id, rvalue FROM scorm_tracking 354 array(
'integer',
'integer',
'text',
'integer'),
355 array($a_obj_id,$a_user_id,
'cmi.core.total_time',0));
358 while($sco_rec = $ilDB->fetchAssoc($sco_set))
360 $tarr = explode(
":", $sco_rec[
"rvalue"]);
361 $sec = (int) $tarr[2] + (
int) $tarr[1] * 60 +
362 (int) substr($tarr[0], strlen($tarr[0]) - 3) * 60 * 60;
366 include_once(
"./Services/Tracking/classes/class.ilChangeEvent.php");
_recordReadEvent($a_type, $a_ref_id, $obj_id, $usr_id, $isCatchupWriteEvents=true, $a_ext_rc=false, $a_ext_time=false)
Records a read event and catches up with write events.
◆ extractData()
ilObjSCORMTracking::extractData |
( |
| ) |
|
Definition at line 24 of file class.ilObjSCORMTracking.php.
References $_GET, and $_POST.
Referenced by store().
26 $this->insert = array();
27 if (is_array(
$_GET[
"iL"]))
29 foreach(
$_GET[
"iL"] as $key => $value)
31 $this->insert[] = array(
"left" => $value,
"right" =>
$_GET[
"iR"][$key]);
34 if (is_array(
$_POST[
"iL"]))
36 foreach(
$_POST[
"iL"] as $key => $value)
38 $this->insert[] = array(
"left" => $value,
"right" =>
$_POST[
"iR"][$key]);
42 $this->update = array();
43 if (is_array(
$_GET[
"uL"]))
45 foreach(
$_GET[
"uL"] as $key => $value)
47 $this->update[] = array(
"left" => $value,
"right" =>
$_GET[
"uR"][$key]);
50 if (is_array(
$_POST[
"uL"]))
52 foreach(
$_POST[
"uL"] as $key => $value)
54 $this->update[] = array(
"left" => $value,
"right" =>
$_POST[
"uR"][$key]);
◆ ilObjSCORMTracking()
ilObjSCORMTracking::ilObjSCORMTracking |
( |
| ) |
|
◆ lookupLastAccessTimes()
static ilObjSCORMTracking::lookupLastAccessTimes |
( |
|
$a_obj_id | ) |
|
|
static |
◆ scorm12PlayerUnload()
ilObjSCORMTracking::scorm12PlayerUnload |
( |
| ) |
|
Definition at line 778 of file class.ilObjSCORMTracking.php.
References $_GET, $_POST, $GLOBALS, $ilUser, $ref_id, ilObject\_lookupObjId(), and _syncReadEvent().
782 $user_id = $ilUser->getID();
786 $GLOBALS[
'ilLog']->write(__METHOD__.
' no valid obj_id');
788 $last_visited=
$_POST[
'last_visited'];
789 $ilDB->manipulateF(
'UPDATE sahs_user 790 SET last_visited = %s, last_access = %s 791 WHERE obj_id = %s AND user_id = %s',
792 array(
'text',
'timestamp',
'integer',
'integer'),
793 array($last_visited, date(
'Y-m-d H:i:s'), $obj_id, $user_id)
835 header(
'Content-Type: text/plain; charset=UTF-8');
static _lookupObjId($a_id)
_syncReadEvent($a_obj_id, $a_user_id, $a_type, $a_ref_id)
Synch read event table.
◆ store()
ilObjSCORMTracking::store |
( |
|
$obj_id = 0 , |
|
|
|
$sahs_id = 0 , |
|
|
|
$extractData = 1 |
|
) |
| |
Definition at line 59 of file class.ilObjSCORMTracking.php.
References $_GET, $_POST, $ilUser, $ref_id, ilObject\_lookupObjId(), _syncReadEvent(), ilLPStatusWrapper\_updateStatus(), extractData(), and ilUtil\now().
Referenced by ilObjHACPTracking\putparam().
70 $f = fopen(
"./Modules/ScormAicc/log/scorm.log",
"a");
71 fwrite($f,
"\nCALLING SCORM store()\n");
72 fwrite($f,
'POST: '.print_r(
$_POST,
true));
81 if (is_object($ilUser))
83 $user_id = $ilUser->getId();
90 fwrite($f,
"Error: No obj_id given.\n");
94 foreach($this->insert as $insert)
96 $set = $ilDB->queryF(
' 97 SELECT * FROM scorm_tracking 102 array(
'integer',
'integer',
'text',
'integer'),
103 array($user_id,$sahs_id,$insert[
"left"],$obj_id));
104 if ($rec = $ilDB->fetchAssoc($set))
106 fwrite($f,
"Error Insert, left value already exists. L:".$insert[
"left"].
",R:".
107 $insert[
"right"].
",sahs_id:".$sahs_id.
",user_id:".$user_id.
"\n");
111 $ilDB->insert(
'scorm_tracking', array(
112 'obj_id' => array(
'integer', $obj_id),
113 'user_id' => array(
'integer', $user_id),
114 'sco_id' => array(
'integer', $sahs_id),
115 'lvalue' => array(
'text', $insert[
"left"]),
116 'rvalue' => array(
'clob', $insert[
"right"]),
120 fwrite($f,
"Insert - L:".$insert[
"left"].
",R:".
121 $insert[
"right"].
",sahs_id:".$sahs_id.
",user_id:".$user_id.
"\n");
124 foreach($this->update as $update)
126 $set = $ilDB->queryF(
' 127 SELECT * FROM scorm_tracking 132 array(
'integer',
'integer',
'text',
'integer'),
133 array($user_id,$sahs_id,$update[
"left"],$obj_id));
135 if ($rec = $ilDB->fetchAssoc($set))
137 $ilDB->update(
'scorm_tracking',
139 'rvalue' => array(
'clob', $update[
"right"]),
143 'user_id' => array(
'integer', $user_id),
144 'sco_id' => array(
'integer', $sahs_id),
145 'lvalue' => array(
'text', $update[
"left"]),
146 'obj_id' => array(
'integer', $obj_id)
152 fwrite($f,
"ERROR Update, left value does not exist. L:".$update[
"left"].
",R:".
153 $update[
"right"].
",sahs_id:".$sahs_id.
",user_id:".$user_id.
"\n");
161 include_once(
"./Services/Tracking/classes/class.ilLPStatusWrapper.php");
static _updateStatus($a_obj_id, $a_usr_id, $a_obj=null, $a_percentage=false, $a_no_raise=false, $a_force_raise=false)
Update status.
static now()
Return current timestamp in Y-m-d H:i:s format.
static _lookupObjId($a_id)
_syncReadEvent($a_obj_id, $a_user_id, $a_type, $a_ref_id)
Synch read event table.
◆ storeJsApi()
ilObjSCORMTracking::storeJsApi |
( |
|
$obj_id = 0 | ) |
|
Definition at line 169 of file class.ilObjSCORMTracking.php.
References $_GET, $data, $ilLog, $ilUser, $in, and ilObject\_lookupObjId().
172 if (is_object($ilUser)) {
173 $user_id = $ilUser->getId();
176 $in = file_get_contents(
"php://input");
180 header(
'Content-Type: text/plain; charset=UTF-8');
182 $rval=self::storeJsApiCmi($user_id,$obj_id,
$data);
184 print(
"storeJsApiCmi failed");
186 $rval=self::syncGlobalStatus($user_id, $obj_id,
$data,
$data->now_global_status);
187 if($rval!=
true) print(
"syncGlobalStatus failed");
189 if($rval==
true) print(
"ok");
static _lookupObjId($a_id)
while($lm_rec=$ilDB->fetchAssoc($lm_set)) $data
◆ storeJsApiCmi()
ilObjSCORMTracking::storeJsApiCmi |
( |
|
$user_id, |
|
|
|
$obj_id, |
|
|
|
$data |
|
) |
| |
Definition at line 192 of file class.ilObjSCORMTracking.php.
References $_POST, $data, $ilLog, and ilUtil\now().
Referenced by ilSCORMOfflineMode\sop2il().
195 $b_updateStatus=
false;
198 if ($ilLog->current_log_level == 30)
202 $ilLog->write(
"ScormAicc: CALLING SCORM storeJsApi() ".
$_POST);
211 for ($i=0;$i<count(
$data->cmi);$i++) {
212 $aa_data[] = array(
"sco_id" => (
int)
$data->cmi[$i][0],
"left" =>
$data->cmi[$i][1],
"right" =>
$data->cmi[$i][2]);
217 $ilLog->write(
"ScormAicc: storeJsApi: Error: No valid obj_id given.");
220 foreach($aa_data as $a_data) {
221 $set = $ilDB->queryF(
' 222 SELECT rvalue FROM scorm_tracking 227 array(
'integer',
'integer',
'text',
'integer'),
228 array($user_id,$a_data[
"sco_id"],$a_data[
"left"],$obj_id));
229 if ($rec = $ilDB->fetchAssoc($set)) {
230 if ($a_data[
"left"] ==
'cmi.core.lesson_status' && $a_data[
"right"] != $rec[
"rvalue"]) {
231 $b_updateStatus =
true;
233 $ilDB->update(
'scorm_tracking',
235 'rvalue' => array(
'clob', $a_data[
"right"]),
239 'user_id' => array(
'integer', $user_id),
240 'sco_id' => array(
'integer', $a_data[
"sco_id"]),
241 'lvalue' => array(
'text', $a_data[
"left"]),
242 'obj_id' => array(
'integer', $obj_id)
246 $ilLog->write(
"ScormAicc: storeJsApi Updated - L:".$a_data[
"left"].
",R:".
247 $a_data[
"right"].
" for obj_id:".$obj_id.
",sco_id:".$a_data[
"sco_id"].
",user_id:".$user_id);
251 if ($a_data[
"left"] ==
'cmi.core.lesson_status') {
252 $b_updateStatus =
true;
254 $ilDB->insert(
'scorm_tracking', array(
255 'obj_id' => array(
'integer', $obj_id),
256 'user_id' => array(
'integer', $user_id),
257 'sco_id' => array(
'integer', $a_data[
"sco_id"]),
258 'lvalue' => array(
'text', $a_data[
"left"]),
259 'rvalue' => array(
'clob', $a_data[
"right"]),
263 $ilLog->write(
"ScormAicc: storeJsApi Inserted - L:".$a_data[
"left"].
",R:".
264 $a_data[
"right"].
" for obj_id:".$obj_id.
",sco_id:".$$a_data[
"sco_id"].
",user_id:".$user_id);
static now()
Return current timestamp in Y-m-d H:i:s format.
while($lm_rec=$ilDB->fetchAssoc($lm_set)) $data
◆ syncGlobalStatus()
ilObjSCORMTracking::syncGlobalStatus |
( |
|
$userId, |
|
|
|
$packageId, |
|
|
|
$data, |
|
|
|
$new_global_status |
|
) |
| |
Definition at line 280 of file class.ilObjSCORMTracking.php.
References $_GET, $data, $ilLog, $packageId, ilChangeEvent\_recordReadEvent(), ilDB\queryF(), and ilLPStatus\writeStatus().
Referenced by ilSCORMOfflineMode\sop2il().
283 $saved_global_status=
$data->saved_global_status;
284 $ilLog->write(
"saved_global_status=".$saved_global_status);
289 if (!
$data->packageAttempts) {
290 $val_set = $ilDB->
queryF(
'SELECT package_attempts FROM sahs_user WHERE obj_id = %s AND user_id = %s',
291 array(
'integer',
'integer'), array(
$packageId,$userId));
292 $val_rec = $ilDB->fetchAssoc($val_set);
293 $attempts = $val_rec[
"package_attempts"];
295 $attempts=
$data->packageAttempts;
297 if ($attempts == null) $attempts = 1;
300 $totalTime=(int)
$data->totalTimeCentisec;
301 $totalTime=round($totalTime/100);
302 $ilDB->
queryF(
'UPDATE sahs_user SET sco_total_time_sec=%s, status=%s, percentage_completed=%s, package_attempts=%s WHERE obj_id = %s AND user_id = %s',
303 array(
'integer',
'integer',
'integer',
'integer',
'integer',
'integer'),
304 array($totalTime, $new_global_status,
$data->percentageCompleted, $attempts,
$packageId, $userId));
307 global $ilObjDataCache;
308 include_once(
"./Services/Tracking/classes/class.ilChangeEvent.php");
314 if ($new_global_status != null) {
315 include_once(
"./Services/Tracking/classes/class.ilObjUserTracking.php");
316 include_once(
"./Services/Tracking/classes/class.ilLPStatus.php");
queryF($a_query, $a_types, $a_values)
Formatted query (for SELECTS).
_recordReadEvent($a_type, $a_ref_id, $obj_id, $usr_id, $isCatchupWriteEvents=true, $a_ext_rc=false, $a_ext_time=false)
Records a read event and catches up with write events.
static writeStatus($a_obj_id, $a_user_id, $a_status, $a_percentage=false, $a_force_per=false)
Write status for user and object.
while($lm_rec=$ilDB->fetchAssoc($lm_set)) $data
The documentation for this class was generated from the following file: