ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
ilSCORM2004DeleteData Class Reference

Class ilSCORM2004DeleteData. More...

+ Collaboration diagram for ilSCORM2004DeleteData:

Static Public Member Functions

static removeCMIDataForPackage (int $packageId)
 
static removeCMIDataForUser (int $user_id)
 
static removeCMIDataForUserAndPackage (int $user_id, int $packageId)
 
static removeCMIDataForNodes (array $cmi_node_values)
 
static getGlobalToSystemObjectiveIdStringForPackage (int $packageId)
 

Detailed Description

Member Function Documentation

◆ getGlobalToSystemObjectiveIdStringForPackage()

static ilSCORM2004DeleteData::getGlobalToSystemObjectiveIdStringForPackage ( int  $packageId)
static

Definition at line 218 of file class.ilSCORM2004DeleteData.php.

218 : string
219 {
220 global $DIC;
221
222 $ilDB = $DIC->database();
223
224 $existing_key_template = "";
225 $global_to_system = 1;
226
227 $res = $ilDB->queryF(
228 'SELECT global_to_system FROM cp_package WHERE obj_id = %s',
229 array('integer'),
230 array($packageId)
231 );
232 while ($data = $ilDB->fetchAssoc($res)) {
233 $global_to_system = $data['global_to_system'];
234 }
235 if ($global_to_system == 0) {
236 return "";
237 }
238
239 $res = $ilDB->queryF(
240 '
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')
248 );
249 while ($data = $ilDB->fetchAssoc($res)) {
250 $existing_key_template .= "'" . $data['targetobjectiveid'] . "',";
251 }
252 //remove trailing ','
253 $existing_key_template = substr($existing_key_template, 0, -1);
254 if ($existing_key_template == false) {
255 return "";
256 }
257
258 return $existing_key_template;
259 }
$res
Definition: ltiservices.php:69
global $DIC
Definition: shib_login.php:26
$packageId
Definition: storeScorm.php:24

References $data, $DIC, $ilDB, $packageId, and $res.

Referenced by removeCMIDataForPackage(), and removeCMIDataForUserAndPackage().

+ Here is the caller graph for this function:

◆ removeCMIDataForNodes()

static ilSCORM2004DeleteData::removeCMIDataForNodes ( array  $cmi_node_values)
static

Definition at line 171 of file class.ilSCORM2004DeleteData.php.

171 : void
172 {
173 global $DIC;
174
175 $ilDB = $DIC->database();
176
177 //cmi interaction nodes
178 $cmi_inode_values = array();
179
180 $query = 'SELECT cmi_interaction_id FROM cmi_interaction WHERE '
181 . $ilDB->in('cmi_interaction.cmi_node_id', $cmi_node_values, false, 'integer');
182 $res = $ilDB->query($query);
183 while ($data = $ilDB->fetchAssoc($res)) {
184 $cmi_inode_values[] = $data['cmi_interaction_id'];
185 }
186
187 //response
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);
191
192 //objective interaction
193 $query = 'DELETE FROM cmi_objective WHERE '
194 . $ilDB->in('cmi_objective.cmi_interaction_id', $cmi_inode_values, false, 'integer');
195 $ilDB->manipulate($query);
196
197 //objective
198 $query = 'DELETE FROM cmi_objective WHERE '
199 . $ilDB->in('cmi_objective.cmi_node_id', $cmi_node_values, false, 'integer');
200 $ilDB->manipulate($query);
201
202 //interaction
203 $query = 'DELETE FROM cmi_interaction WHERE '
204 . $ilDB->in('cmi_interaction.cmi_node_id', $cmi_node_values, false, 'integer');
205 $ilDB->manipulate($query);
206
207 //comment
208 $query = 'DELETE FROM cmi_comment WHERE '
209 . $ilDB->in('cmi_comment.cmi_node_id', $cmi_node_values, false, 'integer');
210 $ilDB->manipulate($query);
211
212 //node
213 $query = 'DELETE FROM cmi_node WHERE '
214 . $ilDB->in('cmi_node.cmi_node_id', $cmi_node_values, false, 'integer');
215 $ilDB->manipulate($query);
216 }

References $data, $DIC, $ilDB, and $res.

Referenced by removeCMIDataForPackage(), removeCMIDataForUser(), and removeCMIDataForUserAndPackage().

+ Here is the caller graph for this function:

◆ removeCMIDataForPackage()

static ilSCORM2004DeleteData::removeCMIDataForPackage ( int  $packageId)
static

Definition at line 30 of file class.ilSCORM2004DeleteData.php.

30 : void
31 {
32 global $DIC;
33
34 $ilDB = $DIC->database();
35
36 $res = $ilDB->queryF(
37 '
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',
41 array('integer'),
42 array($packageId)
43 );
44 $cmi_node_values = [];
45 while ($data = $ilDB->fetchAssoc($res)) {
46 $cmi_node_values[] = $data['cmi_node_id'];
47 }
48 self::removeCMIDataForNodes($cmi_node_values);
49
50 //custom
51 //TODO: delete cmi_custom
52 $query = 'DELETE FROM cmi_custom WHERE obj_id = %s';
53 $ilDB->manipulateF($query, array('integer'), array($packageId));
54
55 //sahs_user
56 $query = 'DELETE FROM sahs_user WHERE obj_id = %s';
57 $ilDB->manipulateF($query, array('integer'), array($packageId));
58
59 //g_objective
60 $query = 'DELETE FROM cmi_gobjective WHERE scope_id = %s';
61 $ilDB->manipulateF($query, array('integer'), array($packageId));
62
64 if ($s_globalObjectiveId != "") {
65 $ilDB->manipulateF(
66 'DELETE FROM cmi_gobjective WHERE scope_id = %s AND objective_id in (' . $s_globalObjectiveId . ')',
67 array('integer'),
68 array(0)
69 );
70 }
71 }
static getGlobalToSystemObjectiveIdStringForPackage(int $packageId)
static removeCMIDataForNodes(array $cmi_node_values)

References $data, $DIC, $ilDB, $packageId, $res, getGlobalToSystemObjectiveIdStringForPackage(), and removeCMIDataForNodes().

Referenced by ilSCORM13Package\removeCMIData().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ removeCMIDataForUser()

static ilSCORM2004DeleteData::removeCMIDataForUser ( int  $user_id)
static

Definition at line 73 of file class.ilSCORM2004DeleteData.php.

73 : void
74 {
75 global $DIC;
76
77 $ilDB = $DIC->database();
78
79 //get all cmi_nodes to delete
80 $res = $ilDB->queryF(
81 '
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',
85 array('integer'),
86 array($user_id)
87 );
88
89 $cmi_node_values = [];
90 while ($data = $ilDB->fetchAssoc($res)) {
91 $cmi_node_values[] = $data['cmi_node_id'];
92 }
93 self::removeCMIDataForNodes($cmi_node_values);
94
95 //custom
96 //TODO: delete cmi_custom
97 $ilDB->manipulateF(
98 'DELETE FROM cmi_custom WHERE user_id = %s',
99 array('integer'),
100 array($user_id)
101 );
102
103 //sahs_user
104 $ilDB->manipulateF(
105 'DELETE FROM sahs_user WHERE user_id = %s',
106 array('integer'),
107 array($user_id)
108 );
109
110 //gobjective
111 $ilDB->manipulateF(
112 'DELETE FROM cmi_gobjective WHERE user_id = %s',
113 array('integer'),
114 array($user_id)
115 );
116 }

References $data, $DIC, $ilDB, $res, $user_id, and removeCMIDataForNodes().

Referenced by ilSCORM13Package\_removeTrackingDataForUser().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ removeCMIDataForUserAndPackage()

static ilSCORM2004DeleteData::removeCMIDataForUserAndPackage ( int  $user_id,
int  $packageId 
)
static

Definition at line 118 of file class.ilSCORM2004DeleteData.php.

118 : void
119 {
120 global $DIC;
121
122 $ilDB = $DIC->database();
123
124 //get all cmi_nodes to delete
125 $res = $ilDB->queryF(
126 '
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)
132 );
133 $cmi_node_values = [];
134 while ($data = $ilDB->fetchAssoc($res)) {
135 $cmi_node_values[] = $data['cmi_node_id'];
136 }
137 self::removeCMIDataForNodes($cmi_node_values);
138
139 //custom
140 //TODO: delete cmi_custom
141 $ilDB->manipulateF(
142 'DELETE FROM cmi_custom WHERE user_id = %s AND obj_id = %s',
143 array('integer','integer'),
144 array($user_id,$packageId)
145 );
146
147 //sahs_user
148 $ilDB->manipulateF(
149 'DELETE FROM sahs_user WHERE user_id = %s AND obj_id = %s',
150 array('integer','integer'),
151 array($user_id,$packageId)
152 );
153
154 //gobjective
155 $ilDB->manipulateF(
156 'DELETE FROM cmi_gobjective WHERE user_id = %s AND scope_id = %s',
157 array('integer','integer'),
158 array($user_id,$packageId)
159 );
160
162 if ($s_globalObjectiveId != "") {
163 $ilDB->manipulateF(
164 'DELETE FROM cmi_gobjective WHERE user_id = %s AND scope_id = %s AND objective_id in (' . $s_globalObjectiveId . ')',
165 array('integer','integer'),
166 array($user_id,0)
167 );
168 }
169 }

References $data, $DIC, $ilDB, $packageId, $res, $user_id, getGlobalToSystemObjectiveIdStringForPackage(), and removeCMIDataForNodes().

Referenced by ilObjSCORM2004LearningModule\deleteTrackingDataOfUsers().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

The documentation for this class was generated from the following file: