4 include_once
'./Modules/ScormAicc/classes/class.ilObjSCORMLearningModule.php';
20 $query =
'SELECT obj_id, title 22 WHERE slm_id = %s AND c_type = %s';
25 array(
'integer',
'text'),
28 while(
$row = $ilDB->fetchAssoc(
$res))
30 $scoTitles[
$row[
'obj_id']] = $row[
'title'];
38 include_once
'Services/Object/classes/class.ilObjectLP.php';
40 $collection = $olp->getCollectionInstance();
42 foreach($a_scos as $sco_id=>$value) {
43 if ($collection && $collection->isAssignedEntry($sco_id)) $a_scos[$sco_id] = $lng->txt(
'yes');
44 else $a_scos[$sco_id]=$lng->txt(
'no');
51 if ($b_allowExportPrivacy ==
false) {
52 $userArray[
"user"]=$user;
55 $userArray[
"login"] =
"";
56 $userArray[
"user"] =
"";
57 $userArray[
"email"] =
"";
58 $userArray[
"department"] =
"";
61 $userArray[
"login"] = $e_user->getLogin();
62 $userArray[
"user"] = $e_user->getLastname() .
', ' . $e_user->getFirstname();
63 $userArray[
"email"] =
"".$e_user->getEmail();
64 $userArray[
"department"] =
"".$e_user->getDepartment();
74 $query =
'SELECT user_id, sco_id, rvalue ' 75 .
'FROM scorm_tracking ' 76 .
'WHERE obj_id = %s ' 77 .
'AND '.$ilDB->in(
'user_id', $a_user,
false,
'integer') .
' ' 78 .
'AND '.$ilDB->in(
'sco_id', $a_sco,
false,
'integer') .
' ' 82 array(
'integer',
'text'),
83 array($obj_id,$lvalue)
94 $query =
'SELECT user_id, sco_id, rvalue ' 95 .
'FROM scorm_tracking ' 96 .
'WHERE obj_id = %s ' 97 .
'AND '.$ilDB->in(
'user_id', $a_user,
false,
'integer') .
' ' 98 .
'AND '.$ilDB->in(
'sco_id', $a_sco,
false,
'integer') .
' ' 100 $res = $ilDB->queryF(
102 array(
'integer',
'text'),
105 while (
$data = $ilDB->fetchAssoc(
$res)) {
113 $lng->loadLanguageModule(
"scormtrac");
116 $udh=self::userDataHeaderForExport();
118 'lm_id,lm_title,identifierref,sco_id,sco_marked_for_learning_progress,sco_title,'.$udh[
"cols"]
119 .
',c_timestamp,lvalue,rvalue');
120 $a_true=explode(
',',$udh[
"default"].
",identifierref,c_timestamp,lvalue,rvalue");
121 for ($i=0;$i<count($a_cols);$i++) {
122 $cols[$a_cols[$i]] =
array(
"txt" => $lng->txt($a_cols[$i]),
"default" =>
false);
124 for ($i=0;$i<count($a_true);$i++) {
125 $cols[$a_true[$i]][
"default"] =
true;
132 $lng->loadLanguageModule(
"scormtrac");
134 $returnData =
array();
136 $scoTitles = self::scoTitlesForExportSelected($obj_id);
138 $scoProgress = self::markedLearningStatusForExportSelected($scoTitles, $obj_id);
140 $query =
'SELECT user_id, st.obj_id, sco_id, identifierref, c_timestamp, lvalue, rvalue ' 141 .
'FROM scorm_tracking st ' 142 .
'JOIN sc_item si ON st.sco_id = si.obj_id ' 143 .
'WHERE '.$ilDB->in(
'sco_id', $a_sco,
false,
'integer') .
' ' 144 .
'AND '.$ilDB->in(
'user_id', $a_user,
false,
'integer') .
' ' 147 if ($b_orderBySCO)
$query.=
'sco_id, user_id';
148 else $query.=
'user_id, sco_id';
152 $data[
"lm_id"] = $obj_id;
153 $data[
"lm_title"] = $this->lmTitle;
154 $data=array_merge(
$data,self::userDataArrayForExport(
$data[
"user_id"], $allowExportPrivacy));
155 $data[
"sco_marked_for_learning_progress"] = $scoProgress[
$data[
"sco_id"]];
156 $data[
"sco_title"] = $scoTitles[$data[
"sco_id"]];
157 $data[
"rvalue"] =
"".$data[
"rvalue"];
167 $lng->loadLanguageModule(
"scormtrac");
170 $udh=self::userDataHeaderForExport();
172 'lm_id,lm_title,sco_id,sco_marked_for_learning_progress,sco_title,'.$udh[
"cols"]
173 .
',lesson_status,credit,c_entry,c_exit,c_max,c_min,c_raw,session_time,total_time,c_timestamp,suspend_data,launch_data');
174 $a_true=explode(
',',$udh[
"default"].
",sco_title,lesson_status");
175 for ($i=0;$i<count($a_cols);$i++) {
176 $cols[$a_cols[$i]] =
array(
"txt" => $lng->txt($a_cols[$i]),
"default" =>
false);
178 for ($i=0;$i<count($a_true);$i++) {
179 $cols[$a_true[$i]][
"default"] =
true;
186 $lng->loadLanguageModule(
"scormtrac");
188 $returnData =
array();
190 $scoTitles = self::scoTitlesForExportSelected($obj_id);
192 $scoProgress = self::markedLearningStatusForExportSelected($scoTitles, $obj_id);
196 for($i=0; $i<count($a_user); $i++) {
197 $a_empty[$a_user[$i]] =
array();
201 $query =
'SELECT user_id, sco_id, max(c_timestamp) as c_timestamp ' 202 .
'FROM scorm_tracking ' 203 .
'WHERE '.$ilDB->in(
'sco_id', $a_sco,
false,
'integer') .
' ' 204 .
'AND '.$ilDB->in(
'user_id', $a_user,
false,
'integer') .
' ' 205 .
'GROUP BY user_id, sco_id ' 207 if ($b_orderBySCO)
$query.=
'sco_id, user_id';
208 else $query.=
'user_id, sco_id';
210 while(
$row = $ilDB->fetchAssoc(
$res))
213 $a_empty[
$row[
"user_id"]][
$row[
"sco_id"]]=
"";
216 $a_lesson_status = self::getScormTrackingValue($obj_id, $a_user, $a_sco, $a_empty,
'cmi.core.lesson_status');
217 $a_credit = self::getScormTrackingValue($obj_id, $a_user, $a_sco, $a_empty,
'cmi.core.credit');
218 $a_c_entry = self::getScormTrackingValue($obj_id, $a_user, $a_sco, $a_empty,
'cmi.core.entry');
219 $a_c_exit = self::getScormTrackingValue($obj_id, $a_user, $a_sco, $a_empty,
'cmi.core.exit');
220 $a_c_max = self::getScormTrackingValue($obj_id, $a_user, $a_sco, $a_empty,
'cmi.core.score.max');
221 $a_c_min = self::getScormTrackingValue($obj_id, $a_user, $a_sco, $a_empty,
'cmi.core.score.min');
222 $a_c_raw = self::getScormTrackingValue($obj_id, $a_user, $a_sco, $a_empty,
'cmi.core.score.raw');
223 $a_session_time = self::getScormTrackingValue($obj_id, $a_user, $a_sco, $a_empty,
'cmi.core.session_time');
224 $a_total_time = self::getScormTrackingValue($obj_id, $a_user, $a_sco, $a_empty,
'cmi.core.total_time');
225 $a_suspend_data = self::getScormTrackingValue($obj_id, $a_user, $a_sco, $a_empty,
'cmi.suspend_data');
226 $a_launch_data = self::getScormTrackingValue($obj_id, $a_user, $a_sco, $a_empty,
'cmi.launch_data');
228 foreach($dbdata as
$data) {
229 $data[
"lm_id"] = $obj_id;
230 $data[
"lm_title"] = $this->lmTitle;
232 $data=array_merge($data,self::userDataArrayForExport($data[
"user_id"], $allowExportPrivacy));
234 $data[
"sco_marked_for_learning_progress"] = $scoProgress[$data[
"sco_id"]];
235 $data[
"sco_title"] = $scoTitles[$data[
"sco_id"]];
239 $data[
"lesson_status"] = $a_lesson_status[$data[
'user_id']][$data[
'sco_id']];
240 $data[
"credit"] = $a_credit[$data[
'user_id']][$data[
'sco_id']];
242 $data[
"c_entry"] = $a_c_entry[$data[
'user_id']][$data[
'sco_id']];
243 $data[
"c_exit"] = $a_c_exit[$data[
'user_id']][$data[
'sco_id']];
247 $data[
"c_max"] = $a_c_max[$data[
'user_id']][$data[
'sco_id']];
248 $data[
"c_min"] = $a_c_min[$data[
'user_id']][$data[
'sco_id']];
249 $data[
"c_raw"] = $a_c_raw[$data[
'user_id']][$data[
'sco_id']];
250 $data[
"session_time"] = $a_session_time[$data[
'user_id']][$data[
'sco_id']];
253 $data[
"total_time"] = $a_total_time[$data[
'user_id']][$data[
'sco_id']];
256 $data[
"c_timestamp"] = $data[
"c_timestamp"];
257 $data[
"suspend_data"] = $a_suspend_data[$data[
'user_id']][$data[
'sco_id']];
258 $data[
"launch_data"] = $a_launch_data[$data[
'user_id']][$data[
'sco_id']];
267 $lng->loadLanguageModule(
"scormtrac");
269 $udh=self::userDataHeaderForExport();
271 'lm_id,lm_title,sco_id,sco_marked_for_learning_progress,sco_title,'.$udh[
"cols"]
272 .
',counter,id,weighting,type,result,student_response,latency,time,c_timestamp');
273 $a_true=explode(
',',$udh[
"default"].
",sco_title,id,result,student_response");
274 for ($i=0;$i<count($a_cols);$i++) {
275 $cols[$a_cols[$i]] =
array(
"txt" => $lng->txt($a_cols[$i]),
"default" =>
false);
277 for ($i=0;$i<count($a_true);$i++) {
278 $cols[$a_true[$i]][
"default"] =
true;
286 $returnData =
array();
288 $scoTitles = self::scoTitlesForExportSelected($obj_id);
290 $scoProgress = self::markedLearningStatusForExportSelected($scoTitles, $obj_id);
294 $interactionsCounter =
array();
297 $query =
'SELECT user_id, sco_id, lvalue, c_timestamp ' 298 .
'FROM scorm_tracking ' 299 .
'WHERE obj_id = %s AND '.$ilDB->in(
'sco_id', $a_sco,
false,
'integer') .
' ' 300 .
'AND '.$ilDB->in(
'user_id', $a_user,
false,
'integer') .
' ' 301 .
'AND left(lvalue,17) = %s ' 303 if ($b_orderBySCO)
$query.=
'sco_id, user_id, lvalue';
304 else $query.=
'user_id, sco_id, lvalue';
305 $res = $ilDB->queryF(
307 array(
'integer',
'text'),
308 array($obj_id,
'cmi.interactions.'));
310 while(
$row = $ilDB->fetchAssoc(
$res))
312 $tmpar = explode(
'.',
$row[
"lvalue"]);
313 $tmpcounter = $tmpar[2];
314 if (in_array($tmpcounter,$interactionsCounter) ==
false) $interactionsCounter[] = $tmpcounter;
315 if ($tmpcounter != $prevcounter) {
317 $tmpar[
"user_id"] =
$row[
"user_id"];
318 $tmpar[
"sco_id"] =
$row[
"sco_id"];
319 $tmpar[
"counter"] = $tmpcounter;
321 $tmpar[
"weighting"] =
"";
323 $tmpar[
"result"] =
"";
324 $tmpar[
"student_response"] =
"";
325 $tmpar[
"latency"] =
"";
327 $tmpar[
"c_timestamp"] =
$row[
"c_timestamp"];
329 $prevcounter = $tmpcounter;
335 $a_weighting =
array();
338 $a_student_response =
array();
339 $a_latency =
array();
341 for($i=0;$i<count($interactionsCounter);$i++) {
342 $a_id=array_merge($a_id,self::getScormTrackingValueForInteractionsOrObjectives($obj_id, $a_user, $a_sco,
'id', $interactionsCounter[$i],
'interactions'));
343 $a_weighting=array_merge($a_weighting,self::getScormTrackingValueForInteractionsOrObjectives($obj_id, $a_user, $a_sco,
'weighting', $interactionsCounter[$i],
'interactions'));
344 $a_type=array_merge(
$a_type,self::getScormTrackingValueForInteractionsOrObjectives($obj_id, $a_user, $a_sco,
'type', $interactionsCounter[$i],
'interactions'));
345 $a_result=array_merge($a_result,self::getScormTrackingValueForInteractionsOrObjectives($obj_id, $a_user, $a_sco,
'result', $interactionsCounter[$i],
'interactions'));
346 $a_student_response=array_merge($a_student_response,self::getScormTrackingValueForInteractionsOrObjectives($obj_id, $a_user, $a_sco,
'student_response', $interactionsCounter[$i],
'interactions'));
347 $a_latency=array_merge($a_latency,self::getScormTrackingValueForInteractionsOrObjectives($obj_id, $a_user, $a_sco,
'latency', $interactionsCounter[$i],
'interactions'));
348 $a_time=array_merge($a_time,self::getScormTrackingValueForInteractionsOrObjectives($obj_id, $a_user, $a_sco,
'time', $interactionsCounter[$i],
'interactions'));
350 foreach($dbdata as
$data) {
351 $data[
"lm_id"] = $obj_id;
352 $data[
"lm_title"] = $this->lmTitle;
354 $data=array_merge($data,self::userDataArrayForExport($data[
"user_id"], $allowExportPrivacy));
356 $data[
"sco_marked_for_learning_progress"] = $scoProgress[$data[
"sco_id"]];
357 $data[
"sco_title"] = $scoTitles[$data[
"sco_id"]];
359 $combinedId =
''.$data[
"user_id"].
'-'.$data[
"sco_id"].
'-'.$data[
"counter"];
360 if (array_key_exists($combinedId,$a_id)) $data[
"id"] = $a_id[$combinedId];
361 if (array_key_exists($combinedId,$a_weighting)) $data[
"weighting"] = $a_weighting[$combinedId];
362 if (array_key_exists($combinedId,
$a_type)) $data[
"type"] =
$a_type[$combinedId];
363 if (array_key_exists($combinedId,$a_result)) $data[
"result"] = $a_result[$combinedId];
364 if (array_key_exists($combinedId,$a_student_response)) $data[
"student_response"] = $a_student_response[$combinedId];
365 if (array_key_exists($combinedId,$a_latency)) $data[
"latency"] = $a_latency[$combinedId];
366 if (array_key_exists($combinedId,$a_time)) $data[
"time"] = $a_time[$combinedId];
379 $lng->loadLanguageModule(
"scormtrac");
381 $udh=self::userDataHeaderForExport();
383 'lm_id,lm_title,sco_id,sco_marked_for_learning_progress,sco_title,'.$udh[
"cols"]
384 .
',counter,id,c_max,c_min,c_raw,ostatus,c_timestamp');
385 $a_true=explode(
',',$udh[
"default"].
",sco_title,id,c_raw,ostatus");
386 for ($i=0;$i<count($a_cols);$i++) {
387 $cols[$a_cols[$i]] =
array(
"txt" => $lng->txt($a_cols[$i]),
"default" =>
false);
389 for ($i=0;$i<count($a_true);$i++) {
390 $cols[$a_true[$i]][
"default"] =
true;
398 $returnData =
array();
400 $scoTitles = self::scoTitlesForExportSelected($obj_id);
402 $scoProgress = self::markedLearningStatusForExportSelected($scoTitles, $obj_id);
406 $objectivesCounter =
array();
409 $query =
'SELECT user_id, sco_id, lvalue, c_timestamp ' 410 .
'FROM scorm_tracking ' 411 .
'WHERE obj_id = %s AND '.$ilDB->in(
'sco_id', $a_sco,
false,
'integer') .
' ' 412 .
'AND '.$ilDB->in(
'user_id', $a_user,
false,
'integer') .
' ' 413 .
'AND left(lvalue,15) = %s ' 415 if ($b_orderBySCO)
$query.=
'sco_id, user_id, lvalue';
416 else $query.=
'user_id, sco_id, lvalue';
417 $res = $ilDB->queryF(
419 array(
'integer',
'text'),
420 array($obj_id,
'cmi.objectives.'));
422 while(
$row = $ilDB->fetchAssoc(
$res))
424 $tmpar = explode(
'.',
$row[
"lvalue"]);
425 $tmpcounter = $tmpar[2];
426 if (in_array($tmpcounter,$objectivesCounter) ==
false) $objectivesCounter[] = $tmpcounter;
427 if ($tmpcounter != $prevcounter) {
429 $tmpar[
"user_id"] =
$row[
"user_id"];
430 $tmpar[
"sco_id"] =
$row[
"sco_id"];
431 $tmpar[
"counter"] = $tmpcounter;
433 $tmpar[
"c_max"] =
"";
434 $tmpar[
"c_min"] =
"";
435 $tmpar[
"c_raw"] =
"";
436 $tmpar[
"ostatus"] =
"";
437 $tmpar[
"c_timestamp"] =
$row[
"c_timestamp"];
439 $prevcounter = $tmpcounter;
447 for($i=0;$i<count($objectivesCounter);$i++) {
448 $a_id=array_merge($a_id,self::getScormTrackingValueForInteractionsOrObjectives($obj_id, $a_user, $a_sco,
'id', $objectivesCounter[$i],
'objectives'));
449 $a_c_max=array_merge($a_c_max,self::getScormTrackingValueForInteractionsOrObjectives($obj_id, $a_user, $a_sco,
'score.max', $objectivesCounter[$i],
'objectives'));
450 $a_c_min=array_merge($a_c_min,self::getScormTrackingValueForInteractionsOrObjectives($obj_id, $a_user, $a_sco,
'score.min', $objectivesCounter[$i],
'objectives'));
451 $a_c_raw=array_merge($a_c_raw,self::getScormTrackingValueForInteractionsOrObjectives($obj_id, $a_user, $a_sco,
'score.raw', $objectivesCounter[$i],
'objectives'));
452 $a_status=array_merge($a_status,self::getScormTrackingValueForInteractionsOrObjectives($obj_id, $a_user, $a_sco,
'status', $objectivesCounter[$i],
'objectives'));
454 foreach($dbdata as
$data) {
455 $data[
"lm_id"] = $obj_id;
456 $data[
"lm_title"] = $this->lmTitle;
458 $data=array_merge($data,self::userDataArrayForExport($data[
"user_id"], $allowExportPrivacy));
460 $data[
"sco_marked_for_learning_progress"] = $scoProgress[$data[
"sco_id"]];
461 $data[
"sco_title"] = $scoTitles[$data[
"sco_id"]];
463 $combinedId =
''.$data[
"user_id"].
'-'.$data[
"sco_id"].
'-'.$data[
"counter"];
464 if (array_key_exists($combinedId,$a_id)) $data[
"id"] = $a_id[$combinedId];
465 if (array_key_exists($combinedId,$a_c_max)) $data[
"c_max"] = $a_c_max[$combinedId];
466 if (array_key_exists($combinedId,$a_c_min)) $data[
"c_min"] = $a_c_min[$combinedId];
467 if (array_key_exists($combinedId,$a_c_raw)) $data[
"c_raw"] = $a_c_raw[$combinedId];
468 if (array_key_exists($combinedId,$a_status)) $data[
"ostatus"] = $a_status[$combinedId];
480 $lng->loadLanguageModule(
"scormtrac");
484 $udh=self::userDataHeaderForExport();
485 $a_cols=explode(
',',
'LearningModuleId,LearningModuleTitle,LearningModuleVersion,'.$udh[
"cols"]
486 .
',status,Percentage,Attempts,existingSCOs,startedSCOs,completedSCOs,passedSCOs,roundedTotal_timeSeconds,offline_mode,last_access');
487 $a_true=explode(
',',$udh[
"default"].
",LearningModuleTitle,status,Percentage,Attempts");
489 for ($i=0;$i<count($a_cols);$i++) {
490 $cols[$a_cols[$i]] =
array(
"txt" => $lng->txt($a_cols[$i]),
"default" =>
false);
492 for ($i=0;$i<count($a_true);$i++) {
493 $cols[$a_true[$i]][
"default"] =
true;
500 foreach($dbdata as
$data) {
502 $dat[
"LearningModuleId"] = $obj_id;
503 $dat[
"LearningModuleTitle"] =
"".$this->lmTitle;
504 $dat[
"LearningModuleVersion"]=
"".$data[
"module_version"];
506 $dat=array_merge($dat,self::userDataArrayForExport($data[
"user_id"], $allowExportPrivacy));
508 $dat[
"status"]=
"".$data[
"status"];
509 $dat[
"Percentage"]=
"".$data[
"percentage_completed"];
510 $dat[
"Attempts"]=
"".$data[
"package_attempts"];
511 $dat[
"existingSCOs"]=
"".$scoCounter;
512 $dat[
"startedSCOs"]=
"".$u_startedSCO[$data[
"user_id"]];
513 $dat[
"completedSCOs"]=
"".$u_completedSCO[$data[
"user_id"]];
514 $dat[
"passedSCOs"]=
"".$u_passedSCO[$data[
"user_id"]];
515 $dat[
"roundedTotal_timeSeconds"]=
"".$data[
"sco_total_time_sec"];
516 if (is_null($data[
"offline_mode"])) $dat[
"offline_mode"]=
"";
517 else $dat[
"offline_mode"]=$data[
"offline_mode"];
518 $dat[
"last_access"]=
"".$data[
"last_access"];
528 $query =
'SELECT count(distinct(scorm_object.obj_id)) counter ' 529 .
'FROM scorm_object, sc_item, sc_resource ' 530 .
'WHERE scorm_object.slm_id = %s ' 531 .
'AND scorm_object.obj_id = sc_item.obj_id ' 532 .
'AND sc_item.identifierref = sc_resource.import_id ' 533 .
'AND (sc_resource.scormtype = %s OR sc_resource.scormtype is null)';
534 $res = $ilDB->queryF(
536 array(
'integer',
'text'),
539 while(
$row = $ilDB->fetchAssoc(
$res))
541 $scoCounter =
$row[
'counter'];
545 $u_startedSCO =
array();
546 $u_completedSCO =
array();
547 $u_passedSCO =
array();
548 for($i=0; $i<count($a_user); $i++) {
549 $u_startedSCO[$a_user[$i]] = 0;
550 $u_completedSCO[$a_user[$i]] = 0;
551 $u_passedSCO[$a_user[$i]] = 0;
554 $query =
'SELECT user_id, count(distinct(SCO_ID)) counter ' 555 .
'FROM scorm_tracking ' 556 .
'WHERE obj_id = %s ' 558 .
'AND '.$ilDB->in(
'user_id', $a_user,
false,
'integer') .
' ' 559 .
'GROUP BY user_id';
560 $res = $ilDB->queryF(
565 while (
$data = $ilDB->fetchAssoc(
$res)) {
566 $u_startedSCO[
$data[
'user_id']] = $data[
'counter'];
569 $query =
'SELECT user_id, count(*) counter ' 570 .
'FROM scorm_tracking ' 571 .
'WHERE obj_id = %s AND lvalue = %s AND rvalue like %s ' 572 .
'AND '.$ilDB->in(
'user_id', $a_user,
false,
'integer') .
' ' 574 $res = $ilDB->queryF(
576 array(
'integer',
'text',
'text'),
577 array($obj_id,
'cmi.core.lesson_status',
'completed')
579 while (
$data = $ilDB->fetchAssoc(
$res)) {
580 $u_completedSCO[
$data[
'user_id']] = $data[
'counter'];
583 $res = $ilDB->queryF(
585 array(
'integer',
'text',
'text'),
586 array($obj_id,
'cmi.core.lesson_status',
'passed')
588 while (
$data = $ilDB->fetchAssoc(
$res)) {
589 $u_passedSCO[
$data[
'user_id']] = $data[
'counter'];
594 $query =
'SELECT * FROM sahs_user WHERE obj_id = '.$ilDB->quote($obj_id,
'integer')
595 .
' AND '.$ilDB->in(
'user_id', $a_user,
false,
'integer')
596 .
' ORDER BY user_id';
598 while(
$row = $ilDB->fetchAssoc(
$res))
603 return $this->
exportSelectedSuccessRows($a_user, $allowExportPrivacy, $dbdata, $scoCounter, $u_startedSCO, $u_completedSCO, $u_passedSCO, $obj_id);
607 include_once(
'./Services/PrivacySecurity/classes/class.ilPrivacySettings.php');
609 $allowExportPrivacy = $privacy->enabledExportSCORM();
610 $returnData =
array();
611 if ($allowExportPrivacy ==
true) {
612 $returnData[
"cols"] =
'login,user,email,department';
614 $returnData[
"cols"] =
'user';
616 $returnData[
"default"] =
'user';
622 if ($a_time ==
"")
return "";
623 $tarr = explode(
":", $a_time);
625 if (count($tarr) != 3 || is_nan($tarr[0]) || is_nan($tarr[1]) || is_nan($tarr[2]))
return "";
626 $csec = (int) $tarr[0] * 360000 + (
int) $tarr[1] * 6000 + $tarr[2] * 100;
627 return round($csec/100);
static exportSelectedRawColumns()
exportSelectedInteractions($a_user=array(), $a_sco=array(), $b_orderBySCO=false, $allowExportPrivacy=false, $obj_id)
static _exists($a_id, $a_reference=false, $a_type=null)
checks if an object exists in object_data
getScormTrackingValue($obj_id, $a_user=array(), $a_sco=array(), $a_empty=array(), $lvalue)
exportSelectedObjectives($a_user=array(), $a_sco=array(), $b_orderBySCO=false, $allowExportPrivacy=false, $obj_id)
getScormTrackingValueForInteractionsOrObjectives($obj_id, $a_user=array(), $a_sco=array(), $lvalue, $counter, $topic)
static exportSelectedInteractionsColumns()
static exportSelectedSuccessColumns()
markedLearningStatusForExportSelected($a_scos, $obj_id)
static exportSelectedCoreColumns($b_orderBySCO, $b_allowExportPrivacy)
exportSelectedSuccessRows($a_user=array(), $allowExportPrivacy=false, $dbdata=array(), $scoCounter, $u_startedSCO, $u_completedSCO, $u_passedSCO, $obj_id)
exportSelectedCore($a_user=array(), $a_sco=array(), $b_orderBySCO=false, $allowExportPrivacy=false, $obj_id)
static userDataHeaderForExport()
static exportSelectedObjectivesColumns()
Create styles array
The data for the language used.
scoTitlesForExportSelected($obj_id)
exportSelectedSuccess($a_user=array(), $allowExportPrivacy=false, $obj_id)
exportSelectedRaw($a_user=array(), $a_sco=array(), $b_orderBySCO=false, $allowExportPrivacy=false, $obj_id)
SCORMTimeToSeconds($a_time)
static _getInstance()
Get instance of ilPrivacySettings.
static userDataArrayForExport($user, $b_allowExportPrivacy=false)
Class ilSCORMTrackingItems.
static getInstance($a_obj_id)