19 declare(strict_types=1);
34 $ilDB = $DIC->database();
38 SELECT cmi_node.cmi_node_id 39 FROM cmi_node, cp_node 40 WHERE cp_node.slm_id = %s AND cmi_node.cp_node_id = cp_node.cp_node_id',
44 $cmi_node_values = [];
46 $cmi_node_values[] =
$data[
'cmi_node_id'];
48 self::removeCMIDataForNodes($cmi_node_values);
52 $query =
'DELETE FROM cmi_custom WHERE obj_id = %s';
53 $ilDB->manipulateF($query, array(
'integer'), array($packageId));
56 $query =
'DELETE FROM sahs_user WHERE obj_id = %s';
57 $ilDB->manipulateF($query, array(
'integer'), array($packageId));
60 $query =
'DELETE FROM cmi_gobjective WHERE scope_id = %s';
61 $ilDB->manipulateF($query, array(
'integer'), array($packageId));
63 $s_globalObjectiveId = self::getGlobalToSystemObjectiveIdStringForPackage($packageId);
64 if ($s_globalObjectiveId !=
"") {
66 'DELETE FROM cmi_gobjective WHERE scope_id = %s AND objective_id in (' . $s_globalObjectiveId .
')',
77 $ilDB = $DIC->database();
82 SELECT cmi_node.cmi_node_id 83 FROM cmi_node, cp_node 84 WHERE cmi_node.user_id = %s AND cmi_node.cp_node_id = cp_node.cp_node_id',
89 $cmi_node_values = [];
91 $cmi_node_values[] =
$data[
'cmi_node_id'];
93 self::removeCMIDataForNodes($cmi_node_values);
98 'DELETE FROM cmi_custom WHERE user_id = %s',
105 'DELETE FROM sahs_user WHERE user_id = %s',
112 'DELETE FROM cmi_gobjective WHERE user_id = %s',
122 $ilDB = $DIC->database();
127 SELECT cmi_node.cmi_node_id 128 FROM cmi_node, cp_node 129 WHERE cmi_node.user_id = %s AND cmi_node.cp_node_id = cp_node.cp_node_id AND cp_node.slm_id = %s',
130 array(
'integer',
'integer'),
131 array($user_id,$packageId)
133 $cmi_node_values = [];
135 $cmi_node_values[] =
$data[
'cmi_node_id'];
137 self::removeCMIDataForNodes($cmi_node_values);
142 'DELETE FROM cmi_custom WHERE user_id = %s AND obj_id = %s',
143 array(
'integer',
'integer'),
144 array($user_id,$packageId)
149 'DELETE FROM sahs_user WHERE user_id = %s AND obj_id = %s',
150 array(
'integer',
'integer'),
151 array($user_id,$packageId)
156 'DELETE FROM cmi_gobjective WHERE user_id = %s AND scope_id = %s',
157 array(
'integer',
'integer'),
158 array($user_id,$packageId)
161 $s_globalObjectiveId = self::getGlobalToSystemObjectiveIdStringForPackage($packageId);
162 if ($s_globalObjectiveId !=
"") {
164 'DELETE FROM cmi_gobjective WHERE user_id = %s AND scope_id = %s AND objective_id in (' . $s_globalObjectiveId .
')',
165 array(
'integer',
'integer'),
175 $ilDB = $DIC->database();
178 $cmi_inode_values = array();
180 $query =
'SELECT cmi_interaction_id FROM cmi_interaction WHERE ' 181 .
$ilDB->in(
'cmi_interaction.cmi_node_id', $cmi_node_values,
false,
'integer');
184 $cmi_inode_values[] =
$data[
'cmi_interaction_id'];
188 $query =
'DELETE FROM cmi_correct_response WHERE ' 189 .
$ilDB->in(
'cmi_correct_response.cmi_interaction_id', $cmi_inode_values,
false,
'integer');
190 $ilDB->manipulate($query);
193 $query =
'DELETE FROM cmi_objective WHERE ' 194 .
$ilDB->in(
'cmi_objective.cmi_interaction_id', $cmi_inode_values,
false,
'integer');
195 $ilDB->manipulate($query);
198 $query =
'DELETE FROM cmi_objective WHERE ' 199 .
$ilDB->in(
'cmi_objective.cmi_node_id', $cmi_node_values,
false,
'integer');
200 $ilDB->manipulate($query);
203 $query =
'DELETE FROM cmi_interaction WHERE ' 204 .
$ilDB->in(
'cmi_interaction.cmi_node_id', $cmi_node_values,
false,
'integer');
205 $ilDB->manipulate($query);
208 $query =
'DELETE FROM cmi_comment WHERE ' 209 .
$ilDB->in(
'cmi_comment.cmi_node_id', $cmi_node_values,
false,
'integer');
210 $ilDB->manipulate($query);
213 $query =
'DELETE FROM cmi_node WHERE ' 214 .
$ilDB->in(
'cmi_node.cmi_node_id', $cmi_node_values,
false,
'integer');
215 $ilDB->manipulate($query);
222 $ilDB = $DIC->database();
224 $existing_key_template =
"";
225 $global_to_system = 1;
228 'SELECT global_to_system FROM cp_package WHERE obj_id = %s',
233 $global_to_system =
$data[
'global_to_system'];
235 if ($global_to_system == 0) {
241 SELECT targetobjectiveid 242 FROM cp_mapinfo, cp_node 243 WHERE cp_node.slm_id = %s 244 AND cp_node.nodename = %s 245 AND cp_mapinfo.cp_node_id = cp_node.cp_node_id',
246 array(
'integer',
'text'),
247 array($packageId,
'mapInfo')
250 $existing_key_template .=
"'" .
$data[
'targetobjectiveid'] .
"',";
253 $existing_key_template = substr($existing_key_template, 0, -1);
254 if ($existing_key_template ==
false) {
258 return $existing_key_template;
Class ilSCORM2004DeleteData.
static getGlobalToSystemObjectiveIdStringForPackage(int $packageId)
static removeCMIDataForNodes(array $cmi_node_values)
static removeCMIDataForUser(int $user_id)
static removeCMIDataForPackage(int $packageId)
static removeCMIDataForUserAndPackage(int $user_id, int $packageId)