3 declare(strict_types=1);
    72     protected \ILIAS\DI\UIServices 
$ui;
    79     public function __construct(
int $a_id = 0, 
bool $a_call_by_reference = 
true)
    82         $this->
ui = $DIC->ui();
    93         $ilDB = $DIC->database();
    95         $id = parent::create();
   103                         INSERT INTO sahs_lm (id, api_adapter, c_type, editable, seq_exp_mode,localization)    104                         VALUES (%s,%s,%s,%s,%s,%s)',
   105             array(
'integer', 
'text', 
'text', 
'integer',
'integer',
'text'),
   122         $ilDB = $DIC->database();
   127             'SELECT * FROM sahs_lm WHERE id = %s',
   129             array($this->
getId())
   137             $this->
setSubType((
string) $lm_rec[
"c_type"]);
   143             $this->
setTries((
int) $lm_rec[
"question_tries"]);
   158             $this->
setWidth((
int) $lm_rec[
"width"]);
   159             $this->
setHeight((
int) $lm_rec[
"height"]);
   166             if ($lm_rec[
"mastery_score"] != null) {
   183         $ilDB = $DIC->database();
   184         $lng = $DIC->language();
   187             'SELECT localization FROM sahs_lm WHERE id = %s',
   193         if ($lm_rec[
"localization"] != 
"" && in_array($lm_rec[
"localization"], $inst_lang)) {
   194             return $lm_rec[
"localization"];
   205         $ilDB = $DIC->database();
   207         $obj_set = 
$ilDB->queryF(
   208             'SELECT c_type FROM sahs_lm WHERE id = %s',
   212         $obj_rec = 
$ilDB->fetchAssoc($obj_set);
   213         if ($obj_rec == null || $obj_rec[
"c_type"] == null) {
   216         return $obj_rec[
"c_type"];
   239         $this->tries = $a_tries;
   249         $this->localization = $a_val;
   263         $ilDB = $DIC->database();
   266             'SELECT question_tries FROM sahs_lm WHERE id = %s',
   272         return (
int) $lm_rec[
'question_tries'];
   303         return $lm_data_dir . 
"/lm_" . $this->
getId();
   319         $this->api_adapter = $a_api;
   336         $this->api_func_prefix = $a_prefix;
   345         $currentMode = $learningProgress->getCurrentMode();
   358         $this->lesson_mode = $a_lesson_mode;
   367         if ($DIC->user()->getId() == 13) {
   386         $this->style_id = $a_style_id;
   410         if ($a_auto_review == null) {
   411             $this->auto_review = 
'n';
   413             $this->auto_review = $a_auto_review;
   432         $this->max_attempt = $a_max_attempt;
   447         $this->assigned_glossary = $a_assigned_glossary;
   452         $this->module_version = $a_module_version;
   462         $this->session = $a_session;
   478         $this->no_menu = $a_no_menu;
   494         $this->hide_navig = $a_hide_navig;
   505         return $lm_set->get(
"scormdebug_disable_cache") == 
"1";
   516         return $lm_set->get(
"scorm_without_session") == 
"1";
   527         return $lm_set->get(
"scormdebug_global_activate") === 
"1";
   540         $this->ie_force_render = $a_ie_force_render;
   553         $this->fourth_edition = $a_fourth_edition;
   563         $this->sequencing = $a_sequencing;
   573         $this->interactions = $a_interactions;
   583         $this->objectives = $a_objectives;
   593         $this->comments = $a_comments;
   603         $this->time_from_lms = $a_time_from_lms;
   613         $this->check_values = $a_check_values;
   636         $this->debug = $a_debug;
   657         $this->auto_continue = $a_auto_continue;
   672         $this->auto_last_visited = $a_auto_last_visited;
   698         $this->auto_suspend = $a_auto_suspend;
   723         $this->open_mode = $a_open_mode;
   733         $this->width = $a_width;
   743         $this->height = $a_height;
   753         $this->mastery_score = $a_mastery_score;
   762         $ilDB = $DIC->database();
   765         $type = self::_lookupSubType($this->getID());
   767         if (
$type === 
"scorm2004") {
   768             $set = 
$ilDB->query(
"SELECT minnormalmeasure FROM cp_objective, cp_node" .
   769                 " WHERE satisfiedbymeasure=1 AND minnormalmeasure is not null AND cp_objective.cp_node_id=cp_node.cp_node_id AND" .
   770                 " slm_id = " . 
$ilDB->quote($this->getID(), 
"integer"));
   771             while ($rec = 
$ilDB->fetchAssoc($set)) {
   772                 $tmpval = $rec[
"minnormalmeasure"] * 100;
   773                 if (!in_array($tmpval, $a_result)) {
   774                     $a_result[] = $tmpval;
   778             $set = 
$ilDB->query(
"SELECT masteryscore FROM sc_item,scorm_object" .
   779                 " WHERE sc_item.masteryscore is not null AND sc_item.obj_id=scorm_object.obj_id AND" .
   780                 " slm_id = " . 
$ilDB->quote($this->getID(), 
"integer"));
   781             while ($rec = 
$ilDB->fetchAssoc($set)) {
   782                 if (!in_array($rec[
"masteryscore"], $a_result)) {
   783                     $a_result[] = $rec[
"masteryscore"];
   787         $s_result = implode(
", ", $a_result);
   788         $this->mastery_score_values = $s_result;
   803         $this->id_setting = $a_id_setting;
   813         $this->name_setting = $a_name_setting;
   819         $ilDB = $DIC->database();
   824         $statement = 
$ilDB->manipulateF(
   827                         SET api_adapter = %s,    828                                 api_func_prefix = %s,   830                                 default_lesson_mode = %s,   839                                 unlimited_session = %s,   855                                 auto_last_visited = %s,   858                                 ie_force_render = %s,   947         $ilDB = $DIC->database();
   949         $set = 
$ilDB->query(
"SELECT DISTINCT id FROM sahs_lm WHERE " .
   950             " glossary = " . 
$ilDB->quote($a_glo_id, 
"integer"));
   952         while ($rec = 
$ilDB->fetchAssoc($set)) {
   966         $ilDB = $DIC->database();
   968         $set = 
$ilDB->query(
"SELECT DISTINCT glossary FROM sahs_lm WHERE " .
   969             " id = " . 
$ilDB->quote($a_slm_id, 
"integer"));
   970         $rec = 
$ilDB->fetchAssoc($set);
   971         $glo_id = $rec[
"glossary"];
   980         $this->sub_type = $a_sub_type;
   998     public function delete(): 
bool  1001         $ilDB = $DIC->database();
  1005         if (!parent::delete()) {
  1017             'DELETE FROM sahs_lm WHERE id = %s',
  1019             array($this->
getId())
  1022         $ilLog->debug(
"SAHS Delete(SAHSLM), Subtype: " . $this->
getSubType());
  1026             $r_id = $sc_tree->readRootId();
  1028                 $items = $sc_tree->getSubTree($sc_tree->getNodeData($r_id));
  1029                 foreach ($items as $item) {
  1031                     if (is_object($sc_object)) {
  1032                         $sc_object->delete();
  1035                 $sc_tree->removeTree($sc_tree->getTreeId());
  1043                                 SELECT aicc_object.obj_id FROM aicc_object, aicc_units  1044                                 WHERE aicc_object.obj_id = aicc_units.obj_id  1045                                 AND aicc_object.slm_id = %s',
  1047                 array($this->
getId())
  1050             while ($row = 
$ilDB->fetchAssoc(
$res)) {
  1051                 $obj_id = $row[
'obj_id'];
  1054                                         DELETE FROM aicc_units WHERE obj_id = %s',
  1062                                 SELECT aicc_object.obj_id FROM aicc_object, aicc_course  1063                                 WHERE aicc_object.obj_id = aicc_course.obj_id  1064                                 AND aicc_object.slm_id = %s',
  1066                 array($this->
getId())
  1069             while ($row = 
$ilDB->fetchAssoc(
$res)) {
  1070                 $obj_id = $row[
'obj_id'];
  1073                                         DELETE FROM aicc_course WHERE obj_id = %s',
  1081                                 DELETE FROM aicc_object WHERE slm_id = %s',
  1083                 array($this->
getId())
  1087         $q_log = 
"DELETE FROM scorm_tracking WHERE obj_id = " . 
$ilDB->quote($this->
getId());
  1088         $ilLog->write(
"SAHS Delete(SAHSLM): " . $q_log);
  1091             'DELETE FROM scorm_tracking WHERE obj_id = %s',
  1093             array($this->
getId())
  1096         $q_log = 
"DELETE FROM sahs_user WHERE obj_id = " . 
$ilDB->quote($this->
getId());
  1097         $ilLog->write(
"SAHS Delete(SAHSLM): " . $q_log);
  1100             'DELETE FROM sahs_user WHERE obj_id = %s',
  1102             array($this->
getId())
  1117         $ilUser = $DIC->user();
  1118         if (strcmp($this->
getSubType(), 
"scorm2004") == 0) {
  1120             if (!is_null(
$res)) {
  1121                 return $res * 100.0;
  1138         $ilUser = $DIC->user();
  1140         if (strcmp($this->
getSubType(), 
'scorm2004') == 0) {
  1175     public function cloneObject(
int $a_target_id, 
int $a_copy_id = 0, 
bool $a_omit_tree = 
false): ?
ilObject  1178         $ilDB = $DIC->database();
  1179         $ilUser = $DIC->user();
  1180         $lng = $DIC->language();
  1182         $new_obj = parent::cloneObject($a_target_id, $a_copy_id, $a_omit_tree);
  1183         if ($new_obj !== null) {
  1189             if ($cp_options->isRootNode($this->getRefId())) {
  1190                 $new_obj->setOfflineStatus(
true);
  1204             $new_obj->setModuleVersion(1);
  1207             $new_obj->setTries($this->
getTries());
  1209             $new_obj->setNoMenu($this->
getNoMenu());
  1211             $new_obj->setFourth_edition($this->getFourth_edition());
  1217             $new_obj->setDebug($this->
getDebug());
  1222             $new_obj->setWidth($this->
getWidth());
  1223             $new_obj->setHeight($this->
getHeight());
  1269             $new_obj->readObject();
  1272             $obj_settings->cloneSettings($new_obj->getId());
  1275             $collection = $olp->getCollectionInstance();
  1277                 $collection->cloneCollection($new_obj->getRefId(), $cp_options->getCopyId());
  1290         $usr = $DIC->user();
  1292         $studentId = (string) $usr->getId();
  1293         if ($idSetting % 2 == 1) {
  1294             $studentId = $usr->getLogin();
  1296         if ($idSetting > 3) {
  1297             $studentId .= 
'_o_' . $this->
getId();
  1298         } elseif ($idSetting > 1) {
  1299             $studentId .= 
'_r_' . $this->
getRefId();
  1311         $lng = $DIC->language();
  1312         $usr = $DIC->user();
  1316                 $studentName = $usr->getLastname() . 
', ' . $usr->getFirstname();
  1319                 $studentName = $usr->getFirstname() . 
' ' . $usr->getLastname();
  1322                 $studentName = $usr->getFullname();
  1325                 switch ($usr->getGender()) {
  1327                         $studentName = 
$lng->
txt(
'salutation_f') . 
' ';
  1331                         $studentName = 
$lng->
txt(
'salutation_m') . 
' ';
  1339                         $studentName = 
$lng->
txt(
'salutation') . 
' ';
  1341                 $studentName .= $usr->getLastname();
  1344                 $studentName = $usr->getFirstname();
  1347         return $studentName;
  1355         $setUrl = 
"ilias.php?baseClass=ilSAHSPresentationGUI&ref_id=" . $this->getRefID();
  1357         $setTarget = 
"ilContObj" . $this->
getId();
  1361         if (($om == 5 || $om == 1) && $width > 0 && $height > 0) {
  1365             $setUrl = 
"javascript:void(0); onclick=startSAHS('" . $setUrl . 
"','ilContObj" . $this->
getId() . 
"'," . $om . 
"," . $width . 
"," . $height . 
");";
  1377         $button->setCaption(
"start_lm");
  1378         $button->setPrimary(
true);
  1379         $button->setUrl($setUrl);
  1380         $button->setTarget($setTarget);
 
static getWebspaceDir(string $mode="filesystem")
get webspace directory 
 
setAPIFunctionsPrefix(string $a_prefix)
set api functions prefix 
 
setComments(bool $a_comments)
 
setNameSetting(int $a_name_setting)
 
setAPIAdapterName(string $a_api)
set api adapter name 
 
setHideNavig(bool $a_hide_navig)
disable menu 
 
getStyleSheetId()
get ID of assigned style sheet object 
 
getFourth_Edition()
SCORM 2004 4th edition features. 
 
setDefaultLessonMode(string $a_lesson_mode)
set default lesson mode 
 
setAutoContinue(bool $a_auto_continue)
debug pw 
 
getDiskUsage()
Gets the disk usage of the object in bytes. 
 
static getLogger(string $a_component_id)
Get component logger. 
 
txt(string $a_topic, string $a_default_lang_fallback_mod="")
gets the text for a given topic if the topic is not in the list, the topic itself with "-" will be re...
 
getMaxPoints()
Returns score.max for the learning module, refered to the last sco where score.max is set...
 
setCheck_values(bool $a_check_values)
 
getSessionDeactivated()
sessionDisabled for SCORM 2004 
 
static getAffectiveLocalization(int $a_id)
Get affective localization. 
 
getLangKey()
Return lang key. 
 
static getScormModulesForGlossary(int $a_glo_id)
Get SCORM modules that assign a certain glossary. 
 
getAutoReviewChar()
get auto review as Char for SCORM 2004 
 
getAPIAdapterName()
get api adapter name 
 
static _hasUntrashedReference(int $obj_id)
checks whether an object has at least one reference that is not in trash 
 
static rCopy(string $a_sdir, string $a_tdir, bool $preserveTimeAttributes=false)
Copies content of a directory $a_sdir recursively to a directory $a_tdir. 
 
getAutoReview()
get auto review as true/false for SCORM 1.2 
 
checkMasteryScoreValues()
check mastery_score / min_normalized_measure of SCOs (SCORM 1.2) / objectives (SCORM 2004) ...
 
setObjectives(bool $a_objectives)
 
setSession(bool $a_session)
 
getEditable()
Set Editable. 
 
getAPIFunctionsPrefix()
get api functions prefix 
 
createDataDirectory()
creates data directory for package files ("./data/lm_data/lm_<id>") 
 
setAutoReview(bool $a_auto_review)
set auto review as true/false for SCORM 1.2 
 
populateByDirectoy(string $a_dir, string $a_filename="")
Populate by directory. 
 
__construct(int $a_id=0, bool $a_call_by_reference=true)
Constructor. 
 
setStyleSheetId(int $a_style_id)
set ID of assigned style sheet object 
 
setLocalization(string $a_val)
 
static _lookupSubType(int $a_obj_id)
lookup subtype id (scorm, ) 
 
const LP_MODE_SCORM_PACKAGE
 
setMaxAttempt(int $a_max_attempt)
 
static renameExecutables(string $a_dir)
 
string $mastery_score_values
 
getIe_force_render()
force Internet Explorer to render again after some Milliseconds - useful for learning Modules with a ...
 
setOpenMode(int $a_open_mode)
 
cloneMetaData(ilObject $target_obj)
Copy meta data. 
 
getOpenMode()
open_mode 0: in Tab/new Window like in previous versions 1: in iFrame with width=100% and heigth=100%...
 
static _getUniqueScaledScoreForUser(int $a_id, int $a_user)
Get the Unique Scaled Score of a course Conditions: Only one SCO may set cmi.score.scaled. 
 
static delDir(string $a_dir, bool $a_clean_only=false)
removes a dir and all its content (subdirs and files) recursively 
 
setMasteryScore(?int $a_mastery_score)
 
setSequencing(bool $a_sequencing)
 
getApiStudentId()
Get cmi.core.student_id / cmi.learner_id for API. 
 
setIe_force_render(bool $a_ie_force_render)
 
getHideNavig()
hide navigation tree 
 
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
 
getInstalledLanguages()
Get installed languages. 
 
setTries(int $a_tries)
Set default tries for questions. 
 
static lookupAssignedGlossary(int $a_slm_id)
Get SCORM modules that assign a certain glossary. 
 
setAutoSuspend(bool $a_auto_suspend)
Set sequencing expert mode. 
 
getApiStudentName()
Get cmi.core.student_name / cmi.learner_name for API note: 'lastname, firstname' is required for SCOR...
 
setAuto_last_visited(bool $a_auto_last_visited)
 
getDataDirectory(?string $mode="filesystem")
get data directory of lm 
 
getDebugActivated()
debugActivated 
 
setModuleVersion(int $a_module_version)
 
static _getTries(int $a_id)
obsolet? 
 
getCreditMode()
get credit mode 
 
getPointsInPercent()
Returns the points in percent for the learning module This is called by the certificate generator if ...
 
create(bool $upload=false)
create file based lm 
 
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
 
static _lookupDiskUsage(int $a_id)
Returns the number of bytes used on the harddisk by the learning module with the specified object id...
 
$id
plugin.php for ilComponentBuildPluginInfoObjectiveTest::testAddPlugins 
 
static & _getInstance(int $a_id, int $a_slm_id)
 
setTime_from_lms(bool $a_time_from_lms)
 
setAssignedGlossary(int $a_assigned_glossary)
 
static yn2tf(string $a_yn)
 
getViewButton()
get button for view 
 
static _getInstance(int $a_copy_id)
 
setIdSetting(int $a_id_setting)
 
setSubType(string $a_sub_type)
 
setNoMenu(bool $a_no_menu)
disable menu 
 
setFourth_edition(bool $a_fourth_edition)
 
getDefaultLessonMode()
get default lesson mode 
 
static _lookupType(int $id, bool $reference=false)
 
setAutoReviewChar(?string $a_auto_review)
set auto review as Char for SCORM 2004 
 
static getInstance(int $obj_id)
 
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
 
setInteractions(bool $a_interactions)
 
static _getMaxScoreForUser(int $a_id, int $a_user)
Returns score.max for the learning module, refered to the last sco where score.max is set...
 
Class ilObjSCORMLearningModule. 
 
static makeDir(string $a_dir)
creates a new directory and inherits all filesystem permissions of the parent directory You may pass ...
 
getCacheDeactivated()
BrowserCacheDisabled for SCORM 2004 / ENABLE_JS_DEBUG.