19 declare(strict_types=1);
38 protected \ILIAS\DI\Container
$dic;
50 $this->
lng = $DIC->language();
51 $this->
ctrl = $DIC->ctrl();
52 $this->tpl = $DIC[
"tpl"];
54 $this->
lng->loadLanguageModule(
"content");
55 $this->
lng->loadLanguageModule(
"search");
57 $this->refId = $DIC->http()->wrapper()->query()->retrieve(
'ref_id', $DIC->refinery()->kindlyTo()->int());
69 if ($this->call_by_reference) {
83 $ilToolbar = $DIC->toolbar();
84 $ilTabs = $DIC->tabs();
89 $ilTabs->setSubTabActive(
'general');
92 $ilToolbar->addButtonInstance($this->
object->getViewButton());
98 $this->tpl->setContent($this->
form->getHTML());
108 $this->
form->setTitle($this->
lng->txt(
"cont_lm_properties"));
111 $this->
object->checkMasteryScoreValues();
115 $ti->setMaxLength(200);
116 $this->
form->addItem($ti);
122 $this->
form->addItem($ti);
127 $this->
form->addItem($ne);
131 $ne->setValue($this->
object->getModuleVersion());
132 $ne->setInfo($this->
lng->txt(
"cont_sc_version_info"));
133 $this->
form->addItem($ne);
139 $sh->setTitle($this->
lng->txt(
"activation"));
140 $this->
form->addItem($sh);
144 $cb->setInfo($this->
lng->txt(
"cont_online_info"));
145 $this->
form->addItem($cb);
152 $sh->setTitle($this->
lng->txt(
"cont_presentation"));
153 $this->
form->addItem($sh);
157 $op0->
setInfo($this->
lng->txt(
"cont_open_normal_info"));
158 $radg->addOption($op0);
160 $op1->
setInfo($this->
lng->txt(
"cont_open_iframe_info"));
161 $radg->addOption($op1);
163 $op2->
setInfo($this->
lng->txt(
"cont_open_window_info"));
164 $radg->addOption($op2);
170 $op1->addSubItem($ni);
174 $op2->addSubItem($ni);
179 $ni->setInfo($this->
lng->txt(
"cont_width_height_info"));
180 $op1->addSubItem($ni);
184 $ni->setInfo($this->
lng->txt(
"cont_width_height_info"));
185 $op2->addSubItem($ni);
187 $this->
form->addItem($radg);
192 $cb->setInfo($this->
lng->txt(
"cont_auto_last_visited_info"));
193 $this->
form->addItem($cb);
198 $cb->setInfo($this->
lng->txt(
"cont_sc_auto_continue_info"));
199 $this->
form->addItem($cb);
202 $obj_service->commonSettings()->legacyForm($this->
form, $this->
object)->addTileImage();
208 $sh->setTitle($this->
lng->txt(
"cont_scorm_options"));
209 $this->
form->addItem($sh);
213 $op0 =
new ilRadioOption($this->
lng->txt(
"cont_sc_less_mode_normal"),
"normal");
214 $op0->
setInfo($this->
lng->txt(
"cont_sc_less_mode_normal_info"));
215 $radg->addOption($op0);
216 $op1 =
new ilRadioOption($this->
lng->txt(
"cont_sc_less_mode_browse"),
"browse");
217 $op1->
setInfo($this->
lng->txt(
"cont_sc_less_mode_browse_info"));
218 $radg->addOption($op1);
223 "n" => $this->
lng->txt(
"cont_sc_auto_review_no"),
224 "y" => $this->
lng->txt(
"cont_sc_auto_review_completed_or_passed"),
231 $this->
form->addItem($radg);
234 if ($this->
object->getMasteryScoreValues() !=
"") {
238 $ni->setInfo($this->
lng->txt(
"cont_mastery_score_12_info") .
' ' . $this->
object->getMasteryScoreValues());
239 $this->
form->addItem($ni);
246 $sh->setTitle($this->
lng->txt(
"cont_rte_settings"));
247 $this->
form->addItem($sh);
252 $cb->setInfo($this->
lng->txt(
"cont_sc_usession_info"));
253 $this->
form->addItem($cb);
258 $cb->setInfo($this->
lng->txt(
"cont_interactions_info_12"));
259 $this->
form->addItem($cb);
264 $cb->setInfo($this->
lng->txt(
"cont_objectives_info"));
265 $this->
form->addItem($cb);
270 $cb->setInfo($this->
lng->txt(
"cont_time_from_lms_info"));
271 $this->
form->addItem($cb);
276 $cb->setInfo($this->
lng->txt(
"cont_check_values_info"));
277 $this->
form->addItem($cb);
282 $cb->setInfo($this->
lng->txt(
"cont_auto_suspend_info"));
283 $this->
form->addItem($cb);
287 0 => $this->
lng->txt(
"cont_sc_id_setting_user_id"),
288 1 => $this->
lng->txt(
"cont_sc_id_setting_user_login"),
289 2 => $this->
lng->txt(
"cont_sc_id_setting_user_id_plus_ref_id"),
290 3 => $this->
lng->txt(
"cont_sc_id_setting_user_login_plus_ref_id"),
291 4 => $this->
lng->txt(
"cont_sc_id_setting_user_id_plus_obj_id"),
292 5 => $this->
lng->txt(
"cont_sc_id_setting_user_login_plus_obj_id")
296 $si->setInfo($this->
lng->txt(
"cont_sc_id_setting_info"));
297 $this->
form->addItem($si);
301 0 => $this->
lng->txt(
"cont_sc_name_setting_last_firstname"),
302 1 => $this->
lng->txt(
"cont_sc_name_setting_first_lastname"),
303 2 => $this->
lng->txt(
"cont_sc_name_setting_fullname"),
304 3 => $this->
lng->txt(
"cont_sc_name_setting_salutation_lastname"),
305 4 => $this->
lng->txt(
"cont_sc_name_setting_first_name"),
306 9 => $this->
lng->txt(
"cont_sc_name_setting_no_name")
310 $si->setInfo($this->
lng->txt(
"cont_sc_name_setting_info"));
311 $this->
form->addItem($si);
317 $sh->setTitle($this->
lng->txt(
"cont_debugging"));
318 $this->
form->addItem($sh);
323 if ($this->
object->getDebugActivated() ==
false) {
324 $cb->setDisabled(
true);
325 $cb->setInfo($this->
lng->txt(
"cont_debug_deactivated"));
327 $cb->setInfo($this->
lng->txt(
"cont_debug_deactivate12"));
329 $this->
form->addItem($cb);
330 $this->
form->addCommandButton(
"saveProperties", $this->
lng->txt(
"save"));
331 $this->
form->setFormAction($this->
ctrl->getFormAction($this));
341 $values[
"Fobject_title"] = $this->
object->getTitle();
342 $values[
"Fobject_description"] = $this->
object->getLongDescription();
343 if (!$this->
object->getOfflineStatus()) {
344 $values[
"cobj_online"] =
true;
347 $values[
"open_mode"] = $this->
object->getOpenMode();
348 $values[
"width_0"] = $this->
object->getWidth();
349 $values[
"width_1"] = $this->
object->getWidth();
350 $values[
"height_0"] = $this->
object->getHeight();
351 $values[
"height_1"] = $this->
object->getHeight();
352 $values[
"cobj_auto_last_visited"] = $this->
object->getAuto_last_visited();
353 $values[
"auto_continue"] = $this->
object->getAutoContinue();
354 $values[
"lesson_mode"] = $this->
object->getDefaultLessonMode();
355 $values[
"auto_review"] = $this->
object->getAutoReviewChar();
356 $values[
"mastery_score"] = $this->
object->getMasteryScore();
357 $values[
"cobj_session"] = $this->
object->getSession();
358 $values[
"cobj_interactions"] = $this->
object->getInteractions();
359 $values[
"cobj_objectives"] = $this->
object->getObjectives();
360 $values[
"cobj_time_from_lms"] = $this->
object->getTime_from_lms();
361 $values[
"cobj_check_values"] = $this->
object->getCheck_values();
362 $values[
"cobj_auto_suspend"] = $this->
object->getAutoSuspend();
363 $values[
"id_setting"] = $this->
object->getIdSetting();
364 $values[
"name_setting"] = $this->
object->getNameSetting();
365 $values[
"cobj_debug"] = $this->
object->getDebug();
366 $this->
form->setValuesByArray($values);
375 $ilTabs = $DIC->tabs();
377 $ilTabs->setSubTabActive(
'cont_sc_new_version');
383 $this->
form->setTitle($this->
lng->txt(
"import_sahs_new"));
385 $this->
form->setDescription($this->
lng->txt(
"import_sahs_info"));
390 $this->
form->addItem($ne);
394 $options[
""] = $this->
lng->txt(
"cont_select_from_upload_dir");
396 foreach ($files as $file) {
397 $file = htmlspecialchars($file, ENT_QUOTES,
"utf-8");
398 $options[$file] = $file;
401 if (count($options) > 1) {
405 $radg->addOption($op0);
406 $op1 =
new ilRadioOption($this->
lng->txt(
"cont_choose_upload_dir"),
"upload_dir");
407 $radg->addOption($op1);
416 $op1->addSubItem($si);
418 $this->
form->addItem($radg);
422 $this->
form->addItem($fi);
424 $this->
form->addCommandButton(
"newModuleVersionUpload", $this->
lng->txt(
"upload"));
425 $this->
form->addCommandButton(
"cancel", $this->
lng->txt(
"cancel"));
426 $this->
form->setFormAction($DIC->ctrl()->getFormAction($this,
"newModuleVersionUpload"));
427 $DIC[
'tpl']->setContent($this->
form->getHTML());
433 $umf = get_cfg_var(
"upload_max_filesize");
435 $pms = get_cfg_var(
"post_max_size");
438 $multiplier_a = array(
"K" => 1024,
"M" => 1024 * 1024,
"G" => 1024 * 1024 * 1024);
440 $umf_parts = preg_split(
"/(\d+)([K|G|M])/", $umf, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
441 $pms_parts = preg_split(
"/(\d+)([K|G|M])/", $pms, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
443 if (count($umf_parts) == 2) {
444 $umf = $umf_parts[0] * $multiplier_a[$umf_parts[1]];
446 if (count($pms_parts) == 2) {
447 $pms = $pms_parts[0] * $multiplier_a[$pms_parts[1]];
451 $max_filesize = min($umf, $pms);
453 if (!$max_filesize) {
454 $max_filesize = max($umf, $pms);
458 return $max_filesize = sprintf(
"%.1f MB", $max_filesize / 1024 / 1024);
468 $rbacsystem = $DIC->access();
471 $unzip = PATH_TO_UNZIP;
472 $tocheck =
"imsmanifest.xml";
475 if (!$rbacsystem->checkAccess(
"write",
"", $this->refId)) {
476 $ilErr->raiseError($this->
lng->txt(
"no_create_permission"),
$ilErr->WARNING);
477 } elseif ($_FILES[
"scormfile"][
"name"]) {
479 $source = $_FILES[
"scormfile"][
"tmp_name"];
480 if (($source ===
'none') || (!$source)) {
481 $this->tpl->setOnScreenMessage(
'info', $this->
lng->txt(
"upload_error_file_not_found"),
true);
485 } elseif ($DIC->http()->wrapper()->post()->has(
'uploaded_file')) {
486 $uploadedFile = $DIC->http()->wrapper()->post()->retrieve(
'uploaded_file', $DIC->refinery()->kindlyTo()->string());
489 $ilErr->raiseError($this->
lng->txt(
"upload_error_file_not_found"),
$ilErr->MESSAGE);
495 $source_is_copy =
true;
497 $this->tpl->setOnScreenMessage(
'info', $this->
lng->txt(
"upload_error_file_not_found"),
true);
504 $pathinfo = pathinfo($source);
505 $dir = $pathinfo[
"dirname"];
506 $file = $pathinfo[
"basename"];
514 $tmp_file = $dir .
"/" . $this->refId .
"." . $tocheck;
517 $new_manifest = file_get_contents($tmp_file);
523 $old_manifest = file_get_contents($this->
object->getDataDirectory() .
"/" . $tocheck);
526 $check =
'/xmlns="http:\/\/www.imsglobal.org\/xsd\/imscp_v1p1"/';
527 $replace =
"xmlns=\"http://www.imsproject.org/xsd/imscp_rootv1p1p2\"";
528 $reload_manifest = preg_replace($check, $replace, $new_manifest);
531 if (strcmp($new_manifest, $old_manifest) == 0 || strcmp(mb_convert_encoding($new_manifest,
"UTF-8", mb_detect_encoding($new_manifest)), $old_manifest) == 0 ||
532 strcmp($reload_manifest, $old_manifest) == 0 || strcmp(mb_convert_encoding($reload_manifest,
"UTF-8", mb_detect_encoding($reload_manifest)), $old_manifest) == 0) {
535 $module_version = $this->
object->getModuleVersion() + 1;
537 if ($_FILES[
"scormfile"][
"name"]) {
539 $file_path = $this->
object->getDataDirectory() .
"/" . $_FILES[
"scormfile"][
"name"] .
"." . $module_version;
540 $file_path = str_replace(
".zip." . $module_version,
"." . $module_version .
".zip", $file_path);
543 $_FILES[
"scormfile"][
"tmp_name"],
544 $_FILES[
"scormfile"][
"name"],
549 $uploadedFile = $DIC->http()->wrapper()->post()->retrieve(
'uploaded_file', $DIC->refinery()->kindlyTo()->string());
550 $file_path = $this->
object->getDataDirectory() .
"/" . $uploadedFile .
"." . $module_version;
551 $file_path = str_replace(
".zip." . $module_version,
"." . $module_version .
".zip", $file_path);
557 $DIC->legacyArchives()->unzip($file_path,
null,
true);
561 $this->
object->setModuleVersion($module_version);
562 $this->
object->update();
565 $this->tpl->setOnScreenMessage(
'info', $this->
lng->txt(
"cont_new_module_added"),
true);
566 ilUtil::redirect(
"ilias.php?baseClass=ilSAHSEditGUI&ref_id=" . $this->refId);
570 if (isset($source_is_copy)) {
574 $this->tpl->setOnScreenMessage(
'info', $this->
lng->txt(
"cont_invalid_new_module"),
true);
585 if ($this->
form->checkInput()) {
586 $this->
object->setTitle($this->dic->http()->wrapper()->post()->retrieve(
'Fobject_title', $this->dic->refinery()->kindlyTo()->string()));
587 $this->
object->setDescription($this->dic->http()->wrapper()->post()->retrieve(
'Fobject_description', $this->dic->refinery()->kindlyTo()->string()));
589 if ($this->dic->http()->wrapper()->post()->has(
'mastery_score')) {
590 $sMasteryScore = $this->dic->http()->wrapper()->post()->retrieve(
'mastery_score', $this->dic->refinery()->kindlyTo()->string());
591 if ($sMasteryScore !==
"") {
592 $this->
object->setMasteryScore((
int) $sMasteryScore);
594 $this->
object->setMasteryScore(
null);
598 $t_height = $this->
object->getHeight();
599 if ($this->dic->http()->wrapper()->post()->retrieve(
'height_0', $this->dic->refinery()->kindlyTo()->int()) != $this->
object->getHeight()) {
600 $t_height = $this->dic->http()->wrapper()->post()->retrieve(
'height_0', $this->dic->refinery()->kindlyTo()->int());
602 if ($this->dic->http()->wrapper()->post()->retrieve(
'height_1', $this->dic->refinery()->kindlyTo()->int()) != $this->
object->getHeight()) {
603 $t_height = $this->dic->http()->wrapper()->post()->retrieve(
'height_1', $this->dic->refinery()->kindlyTo()->int());
606 $t_width = $this->
object->getWidth();
607 if ($this->dic->http()->wrapper()->post()->retrieve(
'width_0', $this->dic->refinery()->kindlyTo()->int()) != $this->
object->getWidth()) {
608 $t_width = $this->dic->http()->wrapper()->post()->retrieve(
'width_0', $this->dic->refinery()->kindlyTo()->int());
610 if ($this->dic->http()->wrapper()->post()->retrieve(
'width_1', $this->dic->refinery()->kindlyTo()->int()) != $this->
object->getWidth()) {
611 $t_width = $this->dic->http()->wrapper()->post()->retrieve(
'width_1', $this->dic->refinery()->kindlyTo()->int());
614 $this->
object->setOfflineStatus(!($this->dic->http()->wrapper()->post()->has(
'cobj_online')));
616 $this->
object->setOpenMode($this->dic->http()->wrapper()->post()->retrieve(
'open_mode', $this->dic->refinery()->kindlyTo()->int()));
617 $this->
object->setWidth($t_width);
618 $this->
object->setHeight($t_height);
619 $this->
object->setAuto_last_visited($this->dic->http()->wrapper()->post()->has(
'cobj_auto_last_visited'));
620 $this->
object->setAutoContinue($this->dic->http()->wrapper()->post()->has(
'auto_continue'));
622 $this->
object->setDefaultLessonMode($this->dic->http()->wrapper()->post()->retrieve(
'lesson_mode', $this->dic->refinery()->kindlyTo()->string()));
623 $this->
object->setAutoReview(
ilUtil::yn2tf($this->dic->http()->wrapper()->post()->retrieve(
'auto_review', $this->dic->refinery()->kindlyTo()->string())));
624 $this->
object->setSession($this->dic->http()->wrapper()->post()->has(
'cobj_session'));
625 $this->
object->setInteractions($this->dic->http()->wrapper()->post()->has(
'cobj_interactions'));
626 $this->
object->setObjectives($this->dic->http()->wrapper()->post()->has(
'cobj_objectives'));
627 $this->
object->setTime_from_lms($this->dic->http()->wrapper()->post()->has(
'cobj_time_from_lms'));
628 $this->
object->setCheck_values($this->dic->http()->wrapper()->post()->has(
'cobj_check_values'));
629 $this->
object->setAutoSuspend($this->dic->http()->wrapper()->post()->has(
'cobj_auto_suspend'));
630 $this->
object->setDebug($this->dic->http()->wrapper()->post()->has(
'cobj_debug'));
631 $this->
object->setIdSetting($this->dic->http()->wrapper()->post()->retrieve(
'id_setting', $this->dic->refinery()->kindlyTo()->int()));
632 $this->
object->setNameSetting($this->dic->http()->wrapper()->post()->retrieve(
'name_setting', $this->dic->refinery()->kindlyTo()->int()));
633 $this->
object->update();
636 $obj_service->commonSettings()->legacyForm($this->
form, $this->
object)->saveTileImage();
638 $this->tpl->setOnScreenMessage(
'info', $this->
lng->txt(
"msg_obj_modified"),
true);
639 $this->
ctrl->redirect($this,
"properties");
648 $ilTabs = $DIC->tabs();
651 $ilTabs->setTabActive(
"cont_tracking_data");
652 $ilTabs->setSubTabActive(
"cont_tracking_bysco");
654 $reports = array(
'exportSelectedCore',
'exportSelectedInteractions',
'exportSelectedObjectives',
'exportSelectedRaw');
655 $scoSelected =
"all";
656 if ($this->dic->http()->wrapper()->query()->has(
'scoSelected')) {
657 $scoSelected =
ilUtil::stripSlashes($this->dic->http()->wrapper()->query()->retrieve(
'scoSelected', $this->dic->refinery()->kindlyTo()->string()));
659 if ($this->dic->http()->wrapper()->post()->has(
'scoSelected')) {
660 $scoSelected =
ilUtil::stripSlashes($this->dic->http()->wrapper()->post()->retrieve(
'scoSelected', $this->dic->refinery()->kindlyTo()->string()));
662 $this->
ctrl->setParameter($this,
'scoSelected', $scoSelected);
665 if ($this->dic->http()->wrapper()->query()->has(
'report')) {
666 $report =
ilUtil::stripSlashes($this->dic->http()->wrapper()->query()->retrieve(
'report', $this->dic->refinery()->kindlyTo()->string()));
668 if ($this->dic->http()->wrapper()->post()->has(
'report')) {
669 $report =
ilUtil::stripSlashes($this->dic->http()->wrapper()->post()->retrieve(
'report', $this->dic->refinery()->kindlyTo()->string()));
671 $this->
ctrl->setParameter($this,
'report', $report);
673 $filter->parse($scoSelected, $report, $reports);
674 if ($report ===
"choose") {
675 $this->tpl->setContent($filter->form->getHTML());
677 $scosSelected = array();
678 if ($scoSelected !==
"all") {
679 $scosSelected[] = $scoSelected;
681 $scos = $this->
object->getTrackedItems();
682 foreach ($scos as $row) {
683 $scosSelected[] = (
int) $row->getId();
688 $this->tpl->setContent($filter->form->getHTML() . $tbl->getHTML());
700 $ilTabs = $DIC->tabs();
701 $ilAccess = $DIC->access();
703 $ilTabs->setTabActive(
'cont_tracking_data');
705 if ($ilAccess->checkAccess(
"read_learning_progress",
"", $this->refId)) {
707 $ilTabs->setSubTabActive(
'cont_tracking_byuser');
709 $reports = array(
'exportSelectedSuccess',
'exportSelectedCore',
'exportSelectedInteractions',
'exportSelectedObjectives',
'exportSelectedRaw');
711 $userSelected =
"all";
712 if ($this->dic->http()->wrapper()->query()->has(
'userSelected')) {
713 $userSelected =
ilUtil::stripSlashes($this->dic->http()->wrapper()->query()->retrieve(
'userSelected', $this->dic->refinery()->kindlyTo()->string()));
715 if ($this->dic->http()->wrapper()->post()->has(
'userSelected')) {
716 $userSelected =
ilUtil::stripSlashes($this->dic->http()->wrapper()->post()->retrieve(
'userSelected', $this->dic->refinery()->kindlyTo()->string()));
718 $this->
ctrl->setParameter($this,
'userSelected', $userSelected);
721 if ($this->dic->http()->wrapper()->query()->has(
'report')) {
722 $report =
ilUtil::stripSlashes($this->dic->http()->wrapper()->query()->retrieve(
'report', $this->dic->refinery()->kindlyTo()->string()));
724 if ($this->dic->http()->wrapper()->post()->has(
'report')) {
725 $report =
ilUtil::stripSlashes($this->dic->http()->wrapper()->post()->retrieve(
'report', $this->dic->refinery()->kindlyTo()->string()));
727 $this->
ctrl->setParameter($this,
'report', $report);
729 $filter->parse($userSelected, $report, $reports);
730 if ($report ===
"choose") {
731 $this->tpl->setContent($filter->form->getHTML());
733 $usersSelected = array();
734 if ($userSelected !==
"all") {
735 $usersSelected[] = $userSelected;
738 foreach ($users as
$user) {
739 if (
ilObject::_exists((
int) $user) && ilObject::_lookUpType((
int) $user) ===
'usr') {
740 $usersSelected[] = (
int) $user;
744 $scosSelected = array();
745 $scos = $this->
object->getTrackedItems();
746 foreach ($scos as $row) {
747 $scosSelected[] = (
int) $row->getId();
750 $this->tpl->setContent($filter->form->getHTML() . $tbl->getHTML());
752 } elseif ($ilAccess->checkAccess(
"edit_learning_progress",
"", $this->refId)) {
764 $ilAccess = $DIC->access();
766 if ($ilAccess->checkAccess(
"edit_learning_progress",
"", $this->refId)) {
768 if (!$privacy->enabledSahsProtocolData()) {
769 $ilErr->raiseError($this->
lng->txt(
'permission_denied'),
$ilErr->MESSAGE);
773 $ilTabs = $DIC->tabs();
774 $ilToolbar = $DIC->toolbar();
775 $ilToolbar->addButton(
776 $this->
lng->txt(
'import'),
777 $this->
ctrl->getLinkTarget($this,
'trackingImportForm')
779 $ilToolbar->addButton(
780 $this->
lng->txt(
'cont_export_all'),
781 $this->
ctrl->getLinkTarget($this,
'exportAll')
785 $ilTabs->setTabActive(
'cont_tracking_data');
786 $ilTabs->setSubTabActive(
'cont_tracking_modify');
789 $this->tpl->setContent($tbl->getHTML());
825 if (!$DIC->http()->wrapper()->post()->has(
'user')) {
831 $cgui->setFormAction($this->
ctrl->getFormAction($this));
832 $cgui->setHeaderText($this->
lng->txt(
"info_delete_sure"));
833 $cgui->setCancel($this->
lng->txt(
"cancel"),
"cancelDeleteTracking");
834 $cgui->setConfirm($this->
lng->txt(
"confirm"),
"confirmedDeleteTracking");
835 foreach ($DIC->http()->wrapper()->post()->retrieve(
'user', $DIC->refinery()->kindlyTo()->listOf($DIC->refinery()->kindlyTo()->int())) as
$id) {
842 $cgui->addItem(
"user[]", (
string) $id, $caption);
846 $this->tpl->setContent($cgui->getHTML());
855 $this->tpl->setOnScreenMessage(
'info', $this->
lng->txt(
"msg_cancel"),
true);
856 $this->
ctrl->redirect($this,
"modifyTrackingItems");
864 $this->
object->deleteTrackingDataOfUsers($this->post_wrapper->retrieve(
'user', $this->refinery->kindlyTo()->listOf($this->
refinery->kindlyTo()->int())));
865 $this->
ctrl->redirect($this,
"modifyTrackingItems");
874 $this->tpl->setOnScreenMessage(
'info', $this->
lng->txt(
"msg_cancel"),
true);
875 $this->
ctrl->redirect($this,
"properties");
887 $success = $this->
object->importTrackingData($source[
'tmp_name']);
890 $this->tpl->setOnScreenMessage(
'info',
'Tracking data imported',
true);
891 $this->
ctrl->redirect($this,
"showTrackingItems");
894 $this->tpl->setOnScreenMessage(
'info', $this->
lng->txt(
'err_check_input'));
899 $this->tpl->setOnScreenMessage(
'info', $this->
lng->txt(
'err_check_input'));
911 $ilTabs = $DIC->tabs();
913 $ilTabs->clearTargets();
914 $ilTabs->setBackTarget($this->
lng->txt(
'back'), $this->
ctrl->getLinkTarget($this,
'showTrackingItems'));
917 $this->tpl->setContent($form->
getHTML());
928 $form->
setTitle($this->
lng->txt(
'cont_import_tracking'));
934 $csv->setSuffixes(array(
'csv'));
945 $this->
object->exportSelected(
true);
954 if (!$this->post_wrapper->has(
'user')) {
957 $this->tpl->setOnScreenMessage(
'info', $this->
lng->txt(
"no_checkbox"),
true);
958 $this->
ctrl->redirect($this,
'modifyTrackingItems');
960 $this->
object->exportSelected(
false, $this->post_wrapper->retrieve(
'user', $this->refinery->kindlyTo()->listOf($this->
refinery->kindlyTo()->int())));
971 $lng = $DIC->language();
972 $ilTabs = $DIC->tabs();
973 $ilCtrl = $DIC->ctrl();
974 $ilAccess = $DIC->access();
976 if ($ilAccess->checkAccess(
"read_learning_progress",
"", $this->refId)) {
977 $ilTabs->addSubTabTarget(
978 "cont_tracking_byuser",
979 $this->
ctrl->getLinkTarget($this,
"showTrackingItems"),
984 $ilTabs->addSubTabTarget(
985 "cont_tracking_bysco",
986 $this->
ctrl->getLinkTarget($this,
"showTrackingItemsBySco"),
991 if ($ilAccess->checkAccess(
"edit_learning_progress",
"", $this->refId)) {
992 $ilTabs->addSubTabTarget(
993 "cont_tracking_modify",
994 $this->
ctrl->getLinkTarget($this,
"modifyTrackingItems"),
resetUserTableFilter()
Reset table filter.
Class ilSCORMTrackingItemsTableGUI.
This class represents an option in a radio group.
showTrackingItems()
Show tracking table.
Class ilObjSCORMLearningModuleGUI.
exportAll()
Show export section for all users.
trackingImportForm()
Show import form.
static _copyUploadFile(string $a_file, string $a_target, bool $a_raise_errors=true)
initPropertiesForm()
Init properties form.
cancelDeleteTracking()
cancel deletion of export files
Class ilSCORMTrackingItemsPerScoFilterGUI.
getPropertiesFormValues()
Get values for properties form.
static stripSlashes(string $a_str, bool $a_strip_html=true, string $a_allow="")
assignObject()
assign scorm object to scorm gui object
initTrackingImportForm()
Init import form.
static _getUploadDirectory()
static escapeShellArg(string $a_arg)
setSettingsSubTabs()
List files.
confirmedDeleteTracking()
static _lookupSubType(int $a_obj_id)
lookup subtype id (scorm, )
exportSelectionUsers()
Export selection for selected users.
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
static renameExecutables(string $a_dir)
deleteTrackingForUser()
display deletion confirmation screen
static _exists(int $id, bool $reference=false, ?string $type=null)
checks if an object exists in object_data
setValue(string $a_value)
static _lookupObjectId(int $ref_id)
ilObjectService $object_service
static moveUploadedFile(string $a_file, string $a_name, string $a_target, bool $a_raise_errors=true, string $a_mode="move_uploaded")
move uploaded file
importTracking()
gui functions for GUI export
newModuleVersion()
upload new version of module
static redirect(string $a_script)
parse()
Parse table content.
form( $class_path, string $cmd, string $submit_caption="")
__construct(Container $dic, ilPlugin $plugin)
This class represents a text area property in a property form.
static getParticipantsForObject(int $a_ref_id)
Get participant ids for given object.
static _checkUploadFile(string $a_file)
static yn2tf(string $a_yn)
static rename(string $a_source, string $a_target)
Class ilSCORMTrackingItemsPerUserFilterGUI.
Class ilObjSCORMLearningModule.
properties()
scorm module properties
cancel()
overwrite..jump back to trackingdata not parent
__construct($data, int $id, bool $call_by_reference, bool $prepare_output=true)
Constructor.