Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -1034,9 +1034,79 @@ public function delete(): bool
}
$sc_tree->removeTree($sc_tree->getTreeId());
}
}

if ($this->getSubType() !== "scorm") {
} elseif ($this->getSubType() === "scorm2004") {
$object_id = $ilDB->quote($this->getId(), 'integer');
$queries = array();

$queries[] = "DELETE FROM cmi_gobjective WHERE scope_id = " . $object_id;
$queries[] = "DELETE FROM cmi_correct_response WHERE cmi_interaction_id IN (" .
"SELECT cmi_interaction_id FROM cmi_interaction WHERE cmi_node_id IN (" .
"SELECT child FROM cp_tree WHERE obj_id = " . $object_id .
")" .
")";
$queries[] = "DELETE FROM cmi_interaction WHERE cmi_node_id IN (" .
"SELECT child FROM cp_tree WHERE obj_id = " . $object_id .
")";
$queries[] = "DELETE FROM cmi_comment WHERE cmi_node_id IN (" .
"SELECT child FROM cp_tree WHERE obj_id = " . $object_id .
")";
$queries[] = "DELETE FROM cmi_objective WHERE cmi_node_id IN (" .
"SELECT child FROM cp_tree WHERE obj_id = " . $object_id .
")";
$queries[] = "DELETE FROM cmi_custom WHERE cmi_node_id IN (" .
"SELECT child FROM cp_tree WHERE obj_id = " . $object_id .
")";
$queries[] = "DELETE FROM cmi_node WHERE cmi_node_id IN (" .
"SELECT child FROM cp_tree WHERE obj_id = " . $object_id .
")";

$queries[] = "DELETE FROM cp_sequencing WHERE cp_node_id IN (" .
"SELECT child FROM cp_tree WHERE obj_id = " . $object_id .
")";
$queries[] = "DELETE FROM cp_rule WHERE cp_node_id IN (" .
"SELECT child FROM cp_tree WHERE obj_id = " . $object_id .
")";
$queries[] = "DELETE FROM cp_resource WHERE cp_node_id IN (" .
"SELECT child FROM cp_tree WHERE obj_id = " . $object_id .
")";
$queries[] = "DELETE FROM cp_package WHERE obj_id = " . $object_id;
$queries[] = "DELETE FROM cp_organization WHERE cp_node_id IN (" .
"SELECT child FROM cp_tree WHERE obj_id = " . $object_id .
")";
$queries[] = "DELETE FROM cp_objective WHERE cp_node_id IN (" .
"SELECT child FROM cp_tree WHERE obj_id = " . $object_id .
")";
$queries[] = "DELETE FROM cp_mapinfo WHERE cp_node_id IN (" .
"SELECT child FROM cp_tree WHERE obj_id = " . $object_id .
")";
$queries[] = "DELETE FROM cp_hidelmsui WHERE cp_node_id IN (" .
"SELECT child FROM cp_tree WHERE obj_id = " . $object_id .
")";
$queries[] = "DELETE FROM cp_file WHERE cp_node_id IN (" .
"SELECT child FROM cp_tree WHERE obj_id = " . $object_id .
")";
$queries[] = "DELETE FROM cp_condition WHERE cp_node_id IN (" .
"SELECT child FROM cp_tree WHERE obj_id = " . $object_id .
")";
$queries[] = "DELETE FROM cp_auxilaryresource WHERE cp_node_id IN (" .
"SELECT child FROM cp_tree WHERE obj_id = " . $object_id .
")";
$queries[] = "DELETE FROM cp_manifest WHERE cp_node_id IN (" .
"SELECT child FROM cp_tree WHERE obj_id = " . $object_id .
")";
$queries[] = "DELETE FROM cp_node WHERE cp_node_id IN (" .
"SELECT child FROM cp_tree WHERE obj_id = " . $object_id .
")";
$queries[] = "DELETE FROM cp_item WHERE cp_node_id IN (" .
"SELECT child FROM cp_tree WHERE obj_id = " . $object_id .
")";
$queries[] = "DELETE FROM cp_tree WHERE obj_id = " . $object_id;

foreach ($queries as $query) {
$ilLog->debug("SAHS Delete(SAHSLM): " . $query);
$ilDB->manipulate($query);
}
} else {
// delete aicc data
$res = $ilDB->queryF(
'
Expand Down Expand Up @@ -1077,14 +1147,13 @@ public function delete(): bool
}

$ilDB->manipulateF(
'
DELETE FROM aicc_object WHERE slm_id = %s',
'DELETE FROM aicc_object WHERE slm_id = %s',
array('integer'),
array($this->getId())
);
}

$q_log = "DELETE FROM scorm_tracking WHERE obj_id = " . $ilDB->quote($this->getId());
$q_log = "DELETE FROM scorm_tracking WHERE obj_id = " . $ilDB->quote($this->getId(), "integer");
$ilLog->write("SAHS Delete(SAHSLM): " . $q_log);

$ilDB->manipulateF(
Expand All @@ -1093,7 +1162,7 @@ public function delete(): bool
array($this->getId())
);

$q_log = "DELETE FROM sahs_user WHERE obj_id = " . $ilDB->quote($this->getId());
$q_log = "DELETE FROM sahs_user WHERE obj_id = " . $ilDB->quote($this->getId(), "integer");
$ilLog->write("SAHS Delete(SAHSLM): " . $q_log);

$ilDB->manipulateF(
Expand Down
30 changes: 14 additions & 16 deletions components/ILIAS/Tracking/classes/class.ilLPObjSettings.php
Original file line number Diff line number Diff line change
Expand Up @@ -403,11 +403,19 @@ public static function _delete(int $a_obj_id): bool
global $DIC;

$ilDB = $DIC['ilDB'];
$query = "DELETE FROM ut_lp_settings WHERE obj_id = " . $ilDB->quote(
$a_obj_id,
'integer'
);
$res = $ilDB->manipulate($query);
$obj_id = $ilDB->quote($a_obj_id, 'integer');
$queries = array();

$queries[] = "DELETE FROM ut_lp_settings WHERE obj_id = " . $obj_id;
$queries[] = "DELETE FROM ut_lp_collections WHERE obj_id = " . $obj_id;
$queries[] = "DELETE FROM ut_lp_marks WHERE obj_id = " . $obj_id;
$queries[] = "DELETE FROM ut_lp_coll_manual WHERE obj_id = " . $obj_id;
$queries[] = "DELETE FROM ut_lp_user_status WHERE obj_id = " . $obj_id;

foreach ($queries as $query) {
$ilDB->manipulate($query);
}

return true;
}

Expand Down Expand Up @@ -499,16 +507,6 @@ public static function getClassMap(): array

public static function _deleteByObjId(int $a_obj_id): void
{
global $DIC;

$ilDB = $DIC['ilDB'];
// we are only removing settings for now
// invalid ut_lp_collections-entries are filtered
// ut_lp_marks is deemed private user data

$ilDB->manipulate(
"DELETE FROM ut_lp_settings" .
" WHERE obj_id = " . $ilDB->quote($a_obj_id, "integer")
);
self::_delete($a_obj_id);
}
}
Loading