3 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);
   168         $ni->setMaxLength(4);
   170         $op1->addSubItem($ni);
   172         $ni->setMaxLength(4);
   174         $op2->addSubItem($ni);
   177         $ni->setMaxLength(4);
   179         $ni->setInfo($this->
lng->txt(
"cont_width_height_info"));
   180         $op1->addSubItem($ni);
   182         $ni->setMaxLength(4);
   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() != 
"") {
   236             $ni->setMaxLength(3);
   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. 
 
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
 
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
 
showTrackingItems()
Show tracking table. 
 
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
 
exportAll()
Show export section for all users. 
 
trackingImportForm()
Show import form. 
 
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
 
static _copyUploadFile(string $a_file, string $a_target, bool $a_raise_errors=true)
 
initPropertiesForm()
Init properties form. 
 
cancelDeleteTracking()
cancel deletion of export files 
 
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
 
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. 
 
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)
 
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
 
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
 
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.