Class ilObjSCORMTracking.  
 More...
 | 
| static  | storeJsApi () | 
|   | 
| static  | storeJsApiCmi (int $user_id, int $obj_id, object $data) | 
|   | 
| static  | syncGlobalStatus (int $userId, int $packageId, int $refId, object $data, ?int $new_global_status) | 
|   | 
| static  | _insertTrackData (int $a_sahs_id, string $a_lval, string $a_rval, int $a_obj_id) | 
|   | 
| static  | _getCompleted (object $scorm_item_id, int $a_obj_id) | 
|   | like necessary because of Oracle  More...
  | 
|   | 
| static  | _getCollectionStatus (?array $a_scos, int $a_obj_id, int $a_user_id) | 
|   | 
| static  | _countCompleted (?array $a_scos, int $a_obj_id, int $a_user_id) | 
|   | 
| static  | lookupLastAccessTimes (int $a_obj_id) | 
|   | Lookup last acccess time for all users of a scorm module.  More...
  | 
|   | 
| static  | _getTrackedUsers (int $a_obj_id) | 
|   | Get all tracked users.  More...
  | 
|   | 
| static  | _getFailed (object $scorm_item_id, int $a_obj_id) | 
|   | like necessary because of Oracle  More...
  | 
|   | 
| static  | _getCountCompletedPerUser (array $a_scorm_item_ids, int $a_obj_id) | 
|   | Get users who have status completed or passed.  More...
  | 
|   | 
| static  | _getProgressInfo (array $sco_item_ids, int $a_obj_id) | 
|   | Get info about.  More...
  | 
|   | 
| static  | _getInProgress (array|int $scorm_item_id, int $a_obj_id, ?array $a_blocked_user_ids=null) | 
|   | 
| static  | scorm12PlayerUnload () | 
|   | 
| static  | checkIfAllowed (int $packageId, int $userId, int $hash) | 
|   | 
| static  | _syncReadEvent (int $a_obj_id, int $a_user_id, string $a_type, int $a_ref_id) | 
|   | 
◆ _countCompleted()
  
  
      
        
          | static ilObjSCORMTracking::_countCompleted  | 
          ( | 
          ?array  | 
          $a_scos,  | 
         
        
           | 
           | 
          int  | 
          $a_obj_id,  | 
         
        
           | 
           | 
          int  | 
          $a_user_id  | 
         
        
           | 
          ) | 
           |  | 
         
       
   | 
  
static   | 
  
 
Definition at line 344 of file class.ilObjSCORMTracking.php.
References $DIC, $ilDB, and $res.
Referenced by ilLPStatusSCORM\determinePercentage().
  347         $ilDB = $DIC->database();
   350         if (is_array($a_scos)) {
   351             $in = 
$ilDB->in(
'sco_id', $a_scos, 
false, 
'integer');
   354                 'SELECT sco_id, rvalue FROM scorm_tracking    359                 array(
'integer', 
'text', 
'integer'),
   360                 array($a_obj_id, 
'cmi.core.lesson_status', $a_user_id)
   364                 if ($rec[
"rvalue"] === 
"completed" || $rec[
"rvalue"] === 
"passed") {
 
 
 
 
◆ _getCollectionStatus()
  
  
      
        
          | static ilObjSCORMTracking::_getCollectionStatus  | 
          ( | 
          ?array  | 
          $a_scos,  | 
         
        
           | 
           | 
          int  | 
          $a_obj_id,  | 
         
        
           | 
           | 
          int  | 
          $a_user_id  | 
         
        
           | 
          ) | 
           |  | 
         
       
   | 
  
static   | 
  
 
Definition at line 299 of file class.ilObjSCORMTracking.php.
References $DIC, $ilDB, and $res.
Referenced by ilLPStatusSCORM\determineStatus().
  302         $ilDB = $DIC->database();
   304         $status = 
"not_attempted";
   306         if (is_array($a_scos)) {
   307             $in = 
$ilDB->in(
'sco_id', $a_scos, 
false, 
'integer');
   310                 'SELECT sco_id, rvalue FROM scorm_tracking    315                 array(
'integer', 
'text', 
'integer'),
   316                 array($a_obj_id, 
'cmi.core.lesson_status', $a_user_id)
   323                 if ($rec[
"rvalue"] === 
"failed") {
   326                 if ($rec[
"rvalue"] !== 
"completed" && $rec[
"rvalue"] !== 
"passed") {
   332                 $status = 
"in_progress";
   334             if ($completed && $cnt == count($a_scos)) {
   335                 $status = 
"completed";
 
 
 
 
◆ _getCompleted()
  
  
      
        
          | static ilObjSCORMTracking::_getCompleted  | 
          ( | 
          object  | 
          $scorm_item_id,  | 
         
        
           | 
           | 
          int  | 
          $a_obj_id  | 
         
        
           | 
          ) | 
           |  | 
         
       
   | 
  
static   | 
  
 
like necessary because of Oracle 
Definition at line 254 of file class.ilObjSCORMTracking.php.
References $DIC, $ilDB, and $res.
  257         $ilDB = $DIC->database();
   261         if (is_array($scorm_item_id)) {
   262             $in = 
$ilDB->in(
'sco_id', $scorm_item_id, 
false, 
'integer');
   265                 'SELECT DISTINCT(user_id) FROM scorm_tracking    269                         AND (' . 
$ilDB->like(
'rvalue', 
'clob', 
'completed') . 
' OR ' . 
$ilDB->like(
   274                 array(
'integer', 
'text'),
   275                 array($a_obj_id, 
'cmi.core.lesson_status')
   279                 'SELECT DISTINCT(user_id) FROM scorm_tracking    283                         AND (' . 
$ilDB->like(
'rvalue', 
'clob', 
'completed') . 
' OR ' . 
$ilDB->like(
   288                 array(
'integer', 
'integer', 
'text'),
   289                 array($scorm_item_id, $a_obj_id, 
'cmi.core.lesson_status')
   293         while ($row = 
$ilDB->fetchObject(
$res)) {
   294             $user_ids[] = $row->user_id;
 
 
 
 
◆ _getCountCompletedPerUser()
  
  
      
        
          | static ilObjSCORMTracking::_getCountCompletedPerUser  | 
          ( | 
          array  | 
          $a_scorm_item_ids,  | 
         
        
           | 
           | 
          int  | 
          $a_obj_id  | 
         
        
           | 
          ) | 
           |  | 
         
       
   | 
  
static   | 
  
 
Get users who have status completed or passed. 
- Returns
 - array<int|string, mixed> 
 
Definition at line 463 of file class.ilObjSCORMTracking.php.
References $DIC, $ilDB, and $res.
Referenced by ilLPStatusSCORM\_getStatusInfo().
  466         $ilDB = $DIC->database();
   469         $in = 
$ilDB->in(
'sco_id', $a_scorm_item_ids, 
false, 
'integer');
   475                         SELECT user_id, COUNT(user_id) completed FROM scorm_tracking   479                         AND (' . 
$ilDB->like(
'rvalue', 
'clob', 
'completed') . 
' OR ' . 
$ilDB->like(
'rvalue', 
'clob', 
'passed') . 
')   481             array(
'integer', 
'text'),
   482             array($a_obj_id, 
'cmi.core.lesson_status')
   484         while ($row = 
$ilDB->fetchObject(
$res)) {
   485             $users[$row->user_id] = $row->completed;
 
 
 
 
◆ _getFailed()
  
  
      
        
          | static ilObjSCORMTracking::_getFailed  | 
          ( | 
          object  | 
          $scorm_item_id,  | 
         
        
           | 
           | 
          int  | 
          $a_obj_id  | 
         
        
           | 
          ) | 
           |  | 
         
       
   | 
  
static   | 
  
 
like necessary because of Oracle 
Definition at line 421 of file class.ilObjSCORMTracking.php.
References $DIC, $ilDB, and $res.
  424         $ilDB = $DIC->database();
   427         if (is_array($scorm_item_id)) {
   428             $in = 
$ilDB->in(
'sco_id', $scorm_item_id, 
false, 
'integer');
   432                                 SELECT DISTINCT(user_id) FROM scorm_tracking    436                                 AND ' . 
$ilDB->like(
'rvalue', 
'clob', 
'failed') . 
' ',
   437                 array(
'integer', 
'text'),
   438                 array($a_obj_id, 
'cmi.core.lesson_status')
   443                                 SELECT DISTINCT(user_id) FROM scorm_tracking    447                                 AND ' . 
$ilDB->like(
'rvalue', 
'clob', 
'failed') . 
' ',
   448                 array(
'integer', 
'integer', 
'text'),
   449                 array($scorm_item_id, $a_obj_id, 
'cmi.core.lesson_status')
   453         while ($row = 
$ilDB->fetchObject(
$res)) {
   454             $user_ids[] = $row->user_id;
 
 
 
 
◆ _getInProgress()
  
  
      
        
          | static ilObjSCORMTracking::_getInProgress  | 
          ( | 
          array|int  | 
          $scorm_item_id,  | 
         
        
           | 
           | 
          int  | 
          $a_obj_id,  | 
         
        
           | 
           | 
          ?array  | 
          $a_blocked_user_ids = null  | 
         
        
           | 
          ) | 
           |  | 
         
       
   | 
  
static   | 
  
 
- Returns
 - array<int|string, mixed[]> 
 
Definition at line 537 of file class.ilObjSCORMTracking.php.
References $DIC, $ilDB, and $res.
Referenced by _getProgressInfo().
  540         $ilDB = $DIC->database();
   542         if (is_array($scorm_item_id)) {
   543             $in = 
$ilDB->in(
'sco_id', $scorm_item_id, 
false, 
'integer');
   546                 'SELECT user_id,sco_id FROM scorm_tracking   549                         GROUP BY user_id, sco_id',
   555                 'SELECT user_id,sco_id FROM scorm_tracking                         558                 array(
'integer', 
'integer'),
   559                 array($scorm_item_id, $a_obj_id)
   563         $in_progress = array();
   565         while ($row = 
$ilDB->fetchObject(
$res)) {
   567             if (!($a_blocked_user_ids &&
   568                 isset($a_blocked_user_ids[$row->sco_id]) &&
   569                 is_array($a_blocked_user_ids[$row->sco_id]) &&
   570                 in_array($row->user_id, $a_blocked_user_ids[$row->sco_id]))) {
   571                 $in_progress[$row->sco_id][] = $row->user_id;
 
 
 
 
◆ _getProgressInfo()
  
  
      
        
          | static ilObjSCORMTracking::_getProgressInfo  | 
          ( | 
          array  | 
          $sco_item_ids,  | 
         
        
           | 
           | 
          int  | 
          $a_obj_id  | 
         
        
           | 
          ) | 
           |  | 
         
       
   | 
  
static   | 
  
 
Get info about. 
- Returns
 - array<string, array> 
 
Definition at line 494 of file class.ilObjSCORMTracking.php.
References $DIC, $ilDB, $res, and _getInProgress().
Referenced by ilLPStatusSCORM\_getStatusInfo().
  497         $ilDB = $DIC->database();
   499         $in = 
$ilDB->in(
'sco_id', $sco_item_ids, 
false, 
'integer');
   503                 SELECT * FROM scorm_tracking    507             array(
'integer', 
'text'),
   508             array($a_obj_id, 
'cmi.core.lesson_status')
   511         $info[
'completed'] = array();
   512         $info[
'failed'] = array();
   515         while ($row = 
$ilDB->fetchObject(
$res)) {
   516             switch ($row->rvalue) {
   519                     $info[
'completed'][$row->sco_id][] = $row->user_id;
   520                     $user_ids[$row->sco_id][] = $row->user_id;
   524                     $info[
'failed'][$row->sco_id][] = $row->user_id;
   525                     $user_ids[$row->sco_id][] = $row->user_id;
 static _getInProgress(array|int $scorm_item_id, int $a_obj_id, ?array $a_blocked_user_ids=null)
 
 
 
 
◆ _getTrackedUsers()
  
  
      
        
          | static ilObjSCORMTracking::_getTrackedUsers  | 
          ( | 
          int  | 
          $a_obj_id | ) | 
           | 
         
       
   | 
  
static   | 
  
 
 
◆ _insertTrackData()
  
  
      
        
          | static ilObjSCORMTracking::_insertTrackData  | 
          ( | 
          int  | 
          $a_sahs_id,  | 
         
        
           | 
           | 
          string  | 
          $a_lval,  | 
         
        
           | 
           | 
          string  | 
          $a_rval,  | 
         
        
           | 
           | 
          int  | 
          $a_obj_id  | 
         
        
           | 
          ) | 
           |  | 
         
       
   | 
  
static   | 
  
 
Definition at line 230 of file class.ilObjSCORMTracking.php.
References $DIC, $ilDB, ilLPStatusWrapper\_updateStatus(), and ilUtil\now().
Referenced by ilSCORMItem\insertTrackData().
  233         $ilDB = $DIC->database();
   234         $ilUser = $DIC->user();
   236         $ilDB->insert(
'scorm_tracking', array(
   237             'obj_id' => array(
'integer', $a_obj_id),
   238             'user_id' => array(
'integer', $ilUser->getId()),
   239             'sco_id' => array(
'integer', $a_sahs_id),
   240             'lvalue' => array(
'text', $a_lval),
   241             'rvalue' => array(
'clob', $a_rval),
   245         if ($a_lval === 
"cmi.core.lesson_status") {
 static now()
Return current timestamp in Y-m-d H:i:s format. 
 
static _updateStatus(int $a_obj_id, int $a_usr_id, ?object $a_obj=null, bool $a_percentage=false, bool $a_force_raise=false)
 
 
 
 
◆ _syncReadEvent()
  
  
      
        
          | static ilObjSCORMTracking::_syncReadEvent  | 
          ( | 
          int  | 
          $a_obj_id,  | 
         
        
           | 
           | 
          int  | 
          $a_user_id,  | 
         
        
           | 
           | 
          string  | 
          $a_type,  | 
         
        
           | 
           | 
          int  | 
          $a_ref_id  | 
         
        
           | 
          ) | 
           |  | 
         
       
   | 
  
static   | 
  
 
Definition at line 627 of file class.ilObjSCORMTracking.php.
References $DIC, $ilDB, ilChangeEvent\_recordReadEvent(), ilLoggerFactory\getLogger(), and ILIAS\Repository\int().
Referenced by scorm12PlayerUnload().
  630         $ilDB = $DIC->database();
   632         $val_set = 
$ilDB->queryF(
   633             'SELECT package_attempts, total_time_sec, sco_total_time_sec, time_from_lms FROM sahs_user, sahs_lm '   634             . 
'WHERE sahs_user.obj_id = %s AND sahs_user.user_id = %s AND sahs_user.obj_id = sahs_lm.id',
   635             array(
'integer', 
'integer'),
   636             array($a_obj_id, $a_user_id)
   639         $val_rec = 
$ilDB->fetchAssoc($val_set);
   641         if ($val_rec[
"package_attempts"] == null) {
   642             $val_rec[
"package_attempts"] = 
"";
   644         $attempts = $val_rec[
"package_attempts"];
   646         $time = (
int) $val_rec[
"sco_total_time_sec"];
   650             $sco_set = 
$ilDB->queryF(
   652                         SELECT sco_id, rvalue FROM scorm_tracking    657                 array(
'integer', 
'integer', 
'text', 
'integer'),
   658                 array($a_obj_id, $a_user_id, 
'cmi.core.total_time', 0)
   661             while ($sco_rec = 
$ilDB->fetchAssoc($sco_set)) {
   662                 $tarr = explode(
":", $sco_rec[
"rvalue"]);
   663                 $sec = (
int) $tarr[2] + (
int) $tarr[1] * 60 +
   664                     (
int) substr($tarr[0], strlen($tarr[0]) - 3) * 60 * 60;
 static getLogger(string $a_component_id)
Get component logger. 
 
static _recordReadEvent(string $a_type, int $a_ref_id, int $obj_id, int $usr_id, bool $isCatchupWriteEvents=true, $a_ext_rc=null, $a_ext_time=null)
 
 
 
 
◆ checkIfAllowed()
  
  
      
        
          | static ilObjSCORMTracking::checkIfAllowed  | 
          ( | 
          int  | 
          $packageId,  | 
         
        
           | 
           | 
          int  | 
          $userId,  | 
         
        
           | 
           | 
          int  | 
          $hash  | 
         
        
           | 
          ) | 
           |  | 
         
       
   | 
  
static   | 
  
 
Definition at line 611 of file class.ilObjSCORMTracking.php.
References $DIC, $ilDB, and $res.
  614         $ilDB = $DIC->database();
   616             'select hash from sahs_user where obj_id=%s AND user_id=%s AND hash_end>%s',
   617             array(
'integer', 
'integer', 
'timestamp'),
   618             array(
$packageId, $userId, date(
'Y-m-d H:i:s'))
   621         if (! ($rowtmp && $rowtmp[
'hash'] == $hash)) {
 
 
 
 
◆ lookupLastAccessTimes()
  
  
      
        
          | static ilObjSCORMTracking::lookupLastAccessTimes  | 
          ( | 
          int  | 
          $a_obj_id | ) | 
           | 
         
       
   | 
  
static   | 
  
 
Lookup last acccess time for all users of a scorm module. 
- Returns
 - array<int|string, mixed> 
 
Definition at line 376 of file class.ilObjSCORMTracking.php.
References $DIC, $ilDB, $res, and ilDBConstants\FETCHMODE_OBJECT.
  379         $ilDB = $DIC->database();
   382         $query = 
'SELECT user_id, MAX(c_timestamp) tst ' .
   383             'FROM scorm_tracking ' .
   384             'WHERE obj_id = ' . 
$ilDB->quote($a_obj_id, 
'integer') . 
' ' .
   389             $users[$row->user_id] = $row->tst;
 
 
 
 
◆ scorm12PlayerUnload()
  
  
      
        
          | static ilObjSCORMTracking::scorm12PlayerUnload  | 
          ( | 
           | ) | 
           | 
         
       
   | 
  
static   | 
  
 
Definition at line 577 of file class.ilObjSCORMTracking.php.
References $DIC, $GLOBALS, $ilDB, $ref_id, _syncReadEvent(), and ILIAS\UI\examples\Symbol\Glyph\Header\header().
  580         $ilDB = $DIC->database();
   581         $user_id = $DIC->http()->wrapper()->query()->retrieve(
'p', $DIC->refinery()->kindlyTo()->int());
   582         $ref_id = $DIC->http()->wrapper()->query()->retrieve(
'ref_id', $DIC->refinery()->kindlyTo()->int());
   583         $obj_id = $DIC->http()->wrapper()->query()->retrieve(
'package_id', $DIC->refinery()->kindlyTo()->int());
   585             $GLOBALS[
'DIC'][
'ilLog']->write(__METHOD__ . 
' no valid obj_id');
   588             if ($DIC->http()->wrapper()->query()->has(
'last_visited')) {
   589                 $last_visited = $DIC->http()->wrapper()->query()->retrieve(
'last_visited', $DIC->refinery()->kindlyTo()->string());
   594                 mktime((
int) date(
'H'), (
int) date(
'i') + 5, (
int) date(
's'), (
int) date(
'm'), (
int) date(
'd'), (
int) date(
'Y'))
   598                                 SET last_visited = %s, hash_end =%s, last_access = %s   599                                 WHERE obj_id = %s AND user_id = %s',
   600                 array(
'text', 
'timestamp', 
'timestamp', 
'integer', 
'integer'),
   601                 array($last_visited, $endDate, date(
'Y-m-d H:i:s'), $obj_id, $user_id)
   607         header(
'Content-Type: text/plain; charset=UTF-8');
 
static _syncReadEvent(int $a_obj_id, int $a_user_id, string $a_type, int $a_ref_id)
 
 
 
 
◆ storeJsApi()
  
  
      
        
          | static ilObjSCORMTracking::storeJsApi  | 
          ( | 
           | ) | 
           | 
         
       
   | 
  
static   | 
  
 
Definition at line 28 of file class.ilObjSCORMTracking.php.
References $data, $DIC, $refId, ILIAS\UI\examples\Symbol\Glyph\Header\header(), and ILIAS\Repository\int().
   31         $obj_id = $DIC->http()->wrapper()->query()->retrieve(
'package_id', $DIC->refinery()->kindlyTo()->int());
    32         $refId = $DIC->http()->wrapper()->query()->retrieve(
'ref_id', $DIC->refinery()->kindlyTo()->int());
    33         $in = file_get_contents(
"php://input");
    34         $data = json_decode($in);
    37         header(
'Content-Type: text/plain; charset=UTF-8');
    39         $rval = self::storeJsApiCmi($user_id, $obj_id, 
$data);
    41             print(
"storeJsApiCmi failed");
    43             $rval = self::syncGlobalStatus($user_id, $obj_id, 
$refId, 
$data, 
$data->now_global_status);
    45                 print(
"syncGlobalStatus failed");
 
 
 
 
◆ storeJsApiCmi()
  
  
      
        
          | static ilObjSCORMTracking::storeJsApiCmi  | 
          ( | 
          int  | 
          $user_id,  | 
         
        
           | 
           | 
          int  | 
          $obj_id,  | 
         
        
           | 
           | 
          object  | 
          $data  | 
         
        
           | 
          ) | 
           |  | 
         
       
   | 
  
static   | 
  
 
Definition at line 53 of file class.ilObjSCORMTracking.php.
References $DIC, $ilDB, ilSCORMObject\_lookupPresentableItems(), ilLPStatusWrapper\_updateStatus(), ilLoggerFactory\getLogger(), ilLTIAppEventListener\handleOutcomeWithoutLP(), and ilUtil\now().
   57         $ilDB = $DIC->database();
    59         $b_updateStatus = 
false;
    69         foreach (
$data->cmi as $value) {
    70             $aa_data[] = array(
"sco_id" => (
int) $value[0],
    78             $ilLog->write(
"ScormAicc: storeJsApi: Error: No valid obj_id given.");
    80             foreach ($aa_data as $a_data) {
    83                                 SELECT rvalue FROM scorm_tracking     88                     array(
'integer', 
'integer', 
'text', 
'integer'),
    89                     array($user_id, $a_data[
"sco_id"], $a_data[
"left"], $obj_id)
    91                 if ($rec = 
$ilDB->fetchAssoc($set)) {
    92                     if ($a_data[
"left"] === 
'cmi.core.lesson_status' && $a_data[
"right"] != $rec[
"rvalue"]) {
    93                         $b_updateStatus = 
true;
    98                             'rvalue' => array(
'clob', $a_data[
"right"]),
   102                             'user_id' => array(
'integer', $user_id),
   103                             'sco_id' => array(
'integer', $a_data[
"sco_id"]),
   104                             'lvalue' => array(
'text', $a_data[
"left"]),
   105                             'obj_id' => array(
'integer', $obj_id)
   108                     $ilLog->debug(
"ScormAicc: storeJsApi Updated - L:" . $a_data[
"left"] . 
",R:" .
   109                         $a_data[
"right"] . 
" for obj_id:" . $obj_id . 
",sco_id:" . $a_data[
"sco_id"] . 
",user_id:" . $user_id);
   111                     if ($a_data[
"left"] === 
'cmi.core.lesson_status') {
   112                         $b_updateStatus = 
true;
   114                     $ilDB->insert(
'scorm_tracking', array(
   115                         'obj_id' => array(
'integer', $obj_id),
   116                         'user_id' => array(
'integer', $user_id),
   117                         'sco_id' => array(
'integer', $a_data[
"sco_id"]),
   118                         'lvalue' => array(
'text', $a_data[
"left"]),
   119                         'rvalue' => array(
'clob', $a_data[
"right"]),
   122                     $ilLog->debug(
"ScormAicc: storeJsApi Inserted - L:" . $a_data[
"left"] . 
",R:" .
   123                         $a_data[
"right"] . 
" for obj_id:" . $obj_id . 
",sco_id:" . $a_data[
"sco_id"] . 
",user_id:" . $user_id);
   125                 if ($a_data[
"left"] === 
'cmi.core.score.max') {
   126                     $i_score_max = $a_data[
"right"];
   128                 if ($a_data[
"left"] === 
'cmi.core.score.raw') {
   129                     $i_score_raw = $a_data[
"right"];
   133             if ($i_score_max > 0 && $i_score_raw > 0) {
   138                         ($i_score_raw / $i_score_max) * 100
   145         if ($b_updateStatus === 
true) {
 
static getLogger(string $a_component_id)
Get component logger. 
 
static _lookupPresentableItems(int $a_slm_id)
Count number of presentable SCOs/Assets of SCORM learning module. 
 
static now()
Return current timestamp in Y-m-d H:i:s format. 
 
static handleOutcomeWithoutLP(int $a_obj_id, int $a_usr_id, ?float $a_percentage)
 
static _updateStatus(int $a_obj_id, int $a_usr_id, ?object $a_obj=null, bool $a_percentage=false, bool $a_force_raise=false)
 
 
 
 
◆ syncGlobalStatus()
  
  
      
        
          | static ilObjSCORMTracking::syncGlobalStatus  | 
          ( | 
          int  | 
          $userId,  | 
         
        
           | 
           | 
          int  | 
          $packageId,  | 
         
        
           | 
           | 
          int  | 
          $refId,  | 
         
        
           | 
           | 
          object  | 
          $data,  | 
         
        
           | 
           | 
          ?int  | 
          $new_global_status  | 
         
        
           | 
          ) | 
           |  | 
         
       
   | 
  
static   | 
  
 
Definition at line 152 of file class.ilObjSCORMTracking.php.
References $DIC, $ilDB, ilChangeEvent\_recordReadEvent(), ilLPStatusWrapper\_updateStatus(), ilLoggerFactory\getLogger(), and ILIAS\Repository\int().
  155         $ilDB = $DIC->database();
   157         $saved_global_status = 
$data->saved_global_status;
   158         $ilLog->write(
"saved_global_status=" . $saved_global_status);
   161         if (!isset(
$data->packageAttempts)) {
   162             $val_set = 
$ilDB->queryF(
   163                 'SELECT package_attempts FROM sahs_user WHERE obj_id = %s AND user_id = %s',
   164                 array(
'integer', 
'integer'),
   167             $val_rec = 
$ilDB->fetchAssoc($val_set);
   168             $attempts = $val_rec[
"package_attempts"];
   170             $attempts = 
$data->packageAttempts;
   172         if ($attempts == null) {
   177         $totalTime = (
int) 
$data->totalTimeCentisec;
   178         $totalTime = round($totalTime / 100);
   180             'UPDATE sahs_user SET last_visited=%s, last_access = %s, sco_total_time_sec=%s, status=%s, percentage_completed=%s, package_attempts=%s WHERE obj_id = %s AND user_id = %s',
   181             array(
'text', 
'timestamp', 
'integer', 
'integer', 
'integer', 
'integer', 
'integer', 
'integer'),
   182             array(
$data->last_visited,
   186                   $data->percentageCompleted,
   195         $ilObjDataCache = $DIC[
'ilObjDataCache'];
   222         if ($new_global_status !== null) {
 
static getLogger(string $a_component_id)
Get component logger. 
 
static _recordReadEvent(string $a_type, int $a_ref_id, int $obj_id, int $usr_id, bool $isCatchupWriteEvents=true, $a_ext_rc=null, $a_ext_time=null)
 
static _updateStatus(int $a_obj_id, int $a_usr_id, ?object $a_obj=null, bool $a_percentage=false, bool $a_force_raise=false)
 
 
 
 
The documentation for this class was generated from the following file: