ILIAS  trunk Revision v11.0_alpha-1761-g6dbbfa7b760
All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Modules Pages
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.

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

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:66
$packageId
Definition: storeScorm.php:24
global $DIC
Definition: shib_login.php:22

◆ removeCMIDataForNodes()

static ilSCORM2004DeleteData::removeCMIDataForNodes ( array  $cmi_node_values)
static

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

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

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  }
$res
Definition: ltiservices.php:66
global $DIC
Definition: shib_login.php:22

◆ removeCMIDataForPackage()

static ilSCORM2004DeleteData::removeCMIDataForPackage ( int  $packageId)
static

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

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

Referenced by ilSCORM13Package\removeCMIData().

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 
63  $s_globalObjectiveId = self::getGlobalToSystemObjectiveIdStringForPackage($packageId);
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  }
$res
Definition: ltiservices.php:66
$packageId
Definition: storeScorm.php:24
global $DIC
Definition: shib_login.php:22
+ 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.

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

Referenced by ilSCORM13Package\_removeTrackingDataForUser().

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  }
$res
Definition: ltiservices.php:66
global $DIC
Definition: shib_login.php:22
+ 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.

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

Referenced by ilObjSCORM2004LearningModule\deleteTrackingDataOfUsers().

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 
161  $s_globalObjectiveId = self::getGlobalToSystemObjectiveIdStringForPackage($packageId);
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  }
$res
Definition: ltiservices.php:66
$packageId
Definition: storeScorm.php:24
global $DIC
Definition: shib_login.php:22
+ Here is the caller graph for this function:

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