37 "DELETE FROM skl_user_has_level WHERE " 38 .
" skill_id = " .
$ilDB->quote($skill_id,
"integer")
52 int $a_trigger_ref_id = 0,
53 bool $a_self_eval =
false 61 "UPDATE skl_user_skill_level SET " .
62 " level_id = " .
$ilDB->quote(0,
"integer") .
"," .
63 " next_level_fulfilment = " .
$ilDB->quote(0.0,
"float") .
"," .
64 " status_date = " .
$ilDB->quote($now,
"timestamp") .
65 " WHERE user_id = " .
$ilDB->quote($a_user_id,
"integer") .
66 " AND status_date = " .
$ilDB->quote($status_date,
"timestamp") .
67 " AND skill_id = " .
$ilDB->quote($a_skill_id,
"integer") .
69 " AND trigger_obj_id = " .
$ilDB->quote($trigger_obj_id,
"integer") .
70 " AND tref_id = " .
$ilDB->quote($a_tref_id,
"integer") .
71 " AND self_eval = " .
$ilDB->quote($a_self_eval,
"integer")
74 $ilDB->manipulate(
"INSERT INTO skl_user_skill_level " .
75 "(level_id, user_id, tref_id, status_date, skill_id, status, valid, trigger_ref_id," .
76 "trigger_obj_id, trigger_obj_type, trigger_title, self_eval, unique_identifier," .
77 "next_level_fulfilment) VALUES (" .
78 $ilDB->quote(0,
"integer") .
"," .
79 $ilDB->quote($a_user_id,
"integer") .
"," .
80 $ilDB->quote($a_tref_id,
"integer") .
"," .
81 $ilDB->quote($now,
"timestamp") .
"," .
82 $ilDB->quote($a_skill_id,
"integer") .
"," .
84 $ilDB->quote(1,
"integer") .
"," .
85 $ilDB->quote($a_trigger_ref_id,
"integer") .
"," .
86 $ilDB->quote($trigger_obj_id,
"integer") .
"," .
87 $ilDB->quote(
"",
"text") .
"," .
88 $ilDB->quote(
"",
"text") .
"," .
89 $ilDB->quote($a_self_eval,
"integer") .
"," .
90 $ilDB->quote(
"",
"text") .
"," .
91 $ilDB->quote(0.0,
"float") .
96 "DELETE FROM skl_user_has_level WHERE " 97 .
" user_id = " .
$ilDB->quote($a_user_id,
"integer")
98 .
" AND skill_id = " .
$ilDB->quote($a_skill_id,
"integer")
99 .
" AND tref_id = " .
$ilDB->quote($a_tref_id,
"integer")
100 .
" AND trigger_obj_id = " .
$ilDB->quote($trigger_obj_id,
"integer")
101 .
" AND self_eval = " .
$ilDB->quote($a_self_eval,
"integer")
113 int $a_trigger_ref_id = 0
119 $ilDB->setLimit(1, 0);
121 "SELECT * FROM skl_user_skill_level WHERE " .
122 "skill_id = " .
$ilDB->quote($a_skill_id,
"integer") .
" AND " .
123 "user_id = " .
$ilDB->quote($a_user_id,
"integer") .
" AND " .
124 "tref_id = " .
$ilDB->quote($a_tref_id,
"integer") .
" AND " .
125 "trigger_obj_id = " .
$ilDB->quote($trigger_obj_id,
"integer") .
" AND " .
126 "self_eval = " .
$ilDB->quote(1,
"integer") .
127 " ORDER BY status_date DESC" 129 if ($rec =
$ilDB->fetchAssoc($set)) {
130 $status_day = substr($rec[
"status_date"], 0, 10);
133 $recent = $rec[
"status_date"];
145 string $a_timestamp_to = null,
151 $to = (!is_null($a_timestamp_to))
152 ?
" AND status_date <= " .
$ilDB->quote($a_timestamp_to,
"timestamp")
155 $user = ($a_user_id > 0)
156 ?
" AND user_id = " .
$ilDB->quote($a_user_id,
"integer")
159 $set =
$ilDB->query(
"SELECT * FROM skl_user_skill_level " .
160 " WHERE status_date >= " .
$ilDB->quote($a_timestamp,
"timestamp") .
161 " AND valid = " .
$ilDB->quote(1,
"integer") .
163 " AND self_eval = " .
$ilDB->quote($a_self_eval,
"integer") .
166 " ORDER BY user_id, status_date ASC ");
168 while ($rec =
$ilDB->fetchAssoc($set)) {
169 $rec[
'user_id'] = (
int) $rec[
'user_id'];
170 $rec[
'level_id'] = (
int) $rec[
'level_id'];
171 $rec[
'skill_id'] = (
int) $rec[
'skill_id'];
172 $rec[
'status'] = (
int) $rec[
'status'];
173 $rec[
'valid'] = (
int) $rec[
'valid'];
174 $rec[
'trigger_ref_id'] = (
int) $rec[
'trigger_ref_id'];
175 $rec[
'trigger_obj_id'] = (
int) $rec[
'trigger_obj_id'];
176 $rec[
'tref_id'] = (
int) $rec[
'tref_id'];
177 $rec[
'self_eval'] = (
int) $rec[
'self_eval'];
178 $rec[
'next_level_fulfilment'] = (float) $rec[
'next_level_fulfilment'];
179 $achievements[$rec[
"user_id"]][] = $rec;
182 return $achievements;
192 ?
string $trigger_title,
193 ?
string $trigger_type,
199 bool $a_self_eval =
false,
200 string $a_unique_identifier =
"",
201 float $a_next_level_fulfilment = 0.0,
202 string $trigger_user_id =
"" 207 if ($trigger_user_id ==
"") {
208 $trigger_user_id =
"-";
215 "UPDATE skl_user_skill_level SET " .
216 " level_id = " .
$ilDB->quote($a_level_id,
"integer") .
"," .
217 " status_date = " .
$ilDB->quote($now,
"timestamp") .
"," .
218 " next_level_fulfilment = " .
$ilDB->quote($a_next_level_fulfilment,
"float") .
219 " WHERE user_id = " .
$ilDB->quote($a_user_id,
"integer") .
220 " AND status_date = " .
$ilDB->quote($status_date,
"timestamp") .
221 " AND skill_id = " .
$ilDB->quote($skill_id,
"integer") .
222 " AND status = " .
$ilDB->quote($a_status,
"integer") .
223 " AND trigger_obj_id = " .
$ilDB->quote($trigger_obj_id,
"integer") .
224 " AND tref_id = " .
$ilDB->quote($a_tref_id,
"integer") .
225 " AND self_eval = " .
$ilDB->quote($a_self_eval,
"integer") .
226 " AND trigger_user_id = " .
$ilDB->quote($trigger_user_id,
"text")
229 if ($a_unique_identifier !=
"") {
231 "DELETE FROM skl_user_skill_level WHERE " .
232 " user_id = " .
$ilDB->quote($a_user_id,
"integer") .
233 " AND tref_id = " .
$ilDB->quote($a_tref_id,
"integer") .
234 " AND skill_id = " .
$ilDB->quote($skill_id,
"integer") .
235 " AND trigger_ref_id = " .
$ilDB->quote($trigger_ref_id,
"integer") .
236 " AND trigger_obj_id = " .
$ilDB->quote($trigger_obj_id,
"integer") .
237 " AND self_eval = " .
$ilDB->quote($a_self_eval,
"integer") .
238 " AND unique_identifier = " .
$ilDB->quote($a_unique_identifier,
"text") .
239 " AND trigger_user_id = " .
$ilDB->quote($trigger_user_id,
"text")
244 $ilDB->manipulate(
"INSERT INTO skl_user_skill_level " .
245 "(level_id, user_id, tref_id, status_date, skill_id, status, valid, trigger_ref_id," .
246 "trigger_obj_id, trigger_obj_type, trigger_title, self_eval, unique_identifier," .
247 "next_level_fulfilment, trigger_user_id) VALUES (" .
248 $ilDB->quote($a_level_id,
"integer") .
"," .
249 $ilDB->quote($a_user_id,
"integer") .
"," .
250 $ilDB->quote($a_tref_id,
"integer") .
"," .
251 $ilDB->quote($now,
"timestamp") .
"," .
252 $ilDB->quote($skill_id,
"integer") .
"," .
253 $ilDB->quote($a_status,
"integer") .
"," .
254 $ilDB->quote(1,
"integer") .
"," .
255 $ilDB->quote($trigger_ref_id,
"integer") .
"," .
256 $ilDB->quote($trigger_obj_id,
"integer") .
"," .
257 $ilDB->quote($trigger_type,
"text") .
"," .
258 $ilDB->quote($trigger_title,
"text") .
"," .
259 $ilDB->quote($a_self_eval,
"integer") .
"," .
260 $ilDB->quote($a_unique_identifier,
"text") .
"," .
261 $ilDB->quote($a_next_level_fulfilment,
"float") .
"," .
262 $ilDB->quote($trigger_user_id,
"text") .
269 "DELETE FROM skl_user_has_level WHERE " 270 .
" user_id = " .
$ilDB->quote($a_user_id,
"integer")
271 .
" AND skill_id = " .
$ilDB->quote($skill_id,
"integer")
272 .
" AND tref_id = " .
$ilDB->quote($a_tref_id,
"integer")
273 .
" AND trigger_obj_id = " .
$ilDB->quote($trigger_obj_id,
"integer")
274 .
" AND self_eval = " .
$ilDB->quote($a_self_eval,
"integer")
278 $ilDB->manipulate(
"INSERT INTO skl_user_has_level " .
279 "(level_id, user_id, tref_id, status_date, skill_id, trigger_ref_id, trigger_obj_id, trigger_obj_type," .
280 "trigger_title, self_eval, next_level_fulfilment, trigger_user_id) VALUES (" .
281 $ilDB->quote($a_level_id,
"integer") .
"," .
282 $ilDB->quote($a_user_id,
"integer") .
"," .
283 $ilDB->quote($a_tref_id,
"integer") .
"," .
284 $ilDB->quote($now,
"timestamp") .
"," .
285 $ilDB->quote($skill_id,
"integer") .
"," .
286 $ilDB->quote($trigger_ref_id,
"integer") .
"," .
287 $ilDB->quote($trigger_obj_id,
"integer") .
"," .
288 $ilDB->quote($trigger_type,
"text") .
"," .
289 $ilDB->quote($trigger_title,
"text") .
"," .
290 $ilDB->quote($a_self_eval,
"integer") .
"," .
291 $ilDB->quote($a_next_level_fulfilment,
"float") .
"," .
292 $ilDB->quote($trigger_user_id,
"text") .
302 int $a_trigger_obj_id,
303 bool $a_self_eval =
false,
304 string $a_unique_identifier =
"" 310 $aff_rows =
$ilDB->manipulate(
311 "DELETE FROM skl_user_skill_level WHERE " 312 .
" user_id = " .
$ilDB->quote($a_user_id,
"integer")
313 .
" AND trigger_obj_id = " .
$ilDB->quote($a_trigger_obj_id,
"integer")
314 .
" AND self_eval = " .
$ilDB->quote($a_self_eval,
"integer")
315 .
" AND unique_identifier = " .
$ilDB->quote($a_unique_identifier,
"text")
321 $aff_rows =
$ilDB->manipulate(
322 "DELETE FROM skl_user_has_level WHERE " 323 .
" user_id = " .
$ilDB->quote($a_user_id,
"integer")
324 .
" AND trigger_obj_id = " .
$ilDB->quote($a_trigger_obj_id,
"integer")
325 .
" AND self_eval = " .
$ilDB->quote($a_self_eval,
"integer")
338 "DELETE FROM skl_user_skill_level WHERE " 339 .
" user_id = " .
$ilDB->quote($a_user_id,
"integer")
342 "DELETE FROM skl_user_has_level WHERE " 343 .
" user_id = " .
$ilDB->quote($a_user_id,
"integer")
358 $q =
"SELECT level_id FROM skl_user_has_level " .
359 " WHERE trigger_obj_type = " .
$ilDB->quote($a_type,
"text") .
360 " AND skill_id = " .
$ilDB->quote($skill_id,
"integer") .
361 " AND tref_id = " .
$ilDB->quote($a_tref_id,
"integer") .
362 " AND user_id = " .
$ilDB->quote($a_user_id,
"integer") .
363 " AND self_eval = " .
$ilDB->quote($a_self_eval,
"integer")
367 while ($rec =
$ilDB->fetchAssoc($set)) {
368 $has_level[$rec[
"level_id"]] =
true;
371 foreach ($levels as $l) {
372 if (isset($has_level[$l[
"id"]])) {
373 $max_level = (
int) $l[
"id"];
389 $q =
"SELECT next_level_fulfilment FROM skl_user_has_level " .
390 " WHERE trigger_obj_type = " .
$ilDB->quote($a_type,
"text") .
391 " AND skill_id = " .
$ilDB->quote($skill_id,
"integer") .
392 " AND tref_id = " .
$ilDB->quote($a_tref_id,
"integer") .
393 " AND user_id = " .
$ilDB->quote($a_user_id,
"integer") .
394 " AND self_eval = " .
$ilDB->quote($a_self_eval,
"integer")
397 if ($rec =
$ilDB->fetchAssoc($set)) {
398 return (
float) $rec[
"next_level_fulfilment"];
413 $q =
"SELECT * FROM skl_user_has_level " .
414 " WHERE skill_id = " .
$ilDB->quote($skill_id,
"integer") .
415 " AND tref_id = " .
$ilDB->quote($a_tref_id,
"integer") .
416 " AND user_id = " .
$ilDB->quote($a_user_id,
"integer") .
417 " AND self_eval = " .
$ilDB->quote($a_self_eval,
"integer") .
418 " ORDER BY status_date DESC" 422 while ($rec =
$ilDB->fetchAssoc($set)) {
423 $rec[
'user_id'] = (
int) $rec[
'user_id'];
424 $rec[
'level_id'] = (
int) $rec[
'level_id'];
425 $rec[
'skill_id'] = (
int) $rec[
'skill_id'];
426 $rec[
'status'] = (
int) $rec[
'status'];
427 $rec[
'valid'] = (
int) $rec[
'valid'];
428 $rec[
'trigger_ref_id'] = (
int) $rec[
'trigger_ref_id'];
429 $rec[
'trigger_obj_id'] = (
int) $rec[
'trigger_obj_id'];
430 $rec[
'tref_id'] = (
int) $rec[
'tref_id'];
431 $rec[
'self_eval'] = (
int) $rec[
'self_eval'];
432 $rec[
'next_level_fulfilment'] = (float) $rec[
'next_level_fulfilment'];
447 ?
" AND self_eval = " .
$ilDB->quote($a_eval_by,
"integer")
451 $q =
"SELECT * FROM skl_user_skill_level " .
452 " WHERE skill_id = " .
$ilDB->quote($skill_id,
"integer") .
453 " AND tref_id = " .
$ilDB->quote($a_tref_id,
"integer") .
454 " AND user_id = " .
$ilDB->quote($a_user_id,
"integer") .
456 " ORDER BY status_date DESC" 459 while ($rec =
$ilDB->fetchAssoc($set)) {
460 $rec[
'user_id'] = (
int) $rec[
'user_id'];
461 $rec[
'level_id'] = (
int) $rec[
'level_id'];
462 $rec[
'skill_id'] = (
int) $rec[
'skill_id'];
463 $rec[
'status'] = (
int) $rec[
'status'];
464 $rec[
'valid'] = (
int) $rec[
'valid'];
465 $rec[
'trigger_ref_id'] = (
int) $rec[
'trigger_ref_id'];
466 $rec[
'trigger_obj_id'] = (
int) $rec[
'trigger_obj_id'];
467 $rec[
'tref_id'] = (
int) $rec[
'tref_id'];
468 $rec[
'self_eval'] = (
int) $rec[
'self_eval'];
469 $rec[
'next_level_fulfilment'] = (float) $rec[
'next_level_fulfilment'];
486 $q =
"SELECT level_id FROM skl_user_has_level " .
487 " WHERE trigger_obj_id = " .
$ilDB->quote($a_object_id,
"integer") .
488 " AND skill_id = " .
$ilDB->quote($skill_id,
"integer") .
489 " AND tref_id = " .
$ilDB->quote($a_tref_id,
"integer") .
490 " AND user_id = " .
$ilDB->quote($a_user_id,
"integer") .
491 " AND self_eval = " .
$ilDB->quote($a_self_eval,
"integer")
495 while ($rec =
$ilDB->fetchAssoc($set)) {
496 $has_level[$rec[
"level_id"]] =
true;
499 foreach ($levels as $l) {
500 if (isset($has_level[$l[
"id"]])) {
501 $max_level = (
int) $l[
"id"];
517 $q =
"SELECT next_level_fulfilment FROM skl_user_has_level " .
518 " WHERE trigger_obj_id = " .
$ilDB->quote($a_object_id,
"integer") .
519 " AND skill_id = " .
$ilDB->quote($skill_id,
"integer") .
520 " AND tref_id = " .
$ilDB->quote($a_tref_id,
"integer") .
521 " AND user_id = " .
$ilDB->quote($a_user_id,
"integer") .
522 " AND self_eval = " .
$ilDB->quote($a_self_eval,
"integer")
525 if ($rec =
$ilDB->fetchAssoc($set)) {
526 return (
float) $rec[
"next_level_fulfilment"];
542 $q =
"SELECT level_id FROM skl_user_has_level " .
543 " WHERE skill_id = " .
$ilDB->quote($skill_id,
"integer") .
544 " AND tref_id = " .
$ilDB->quote($a_tref_id,
"integer") .
545 " AND user_id = " .
$ilDB->quote($a_user_id,
"integer") .
546 " AND self_eval = " .
$ilDB->quote($a_self_eval,
"integer")
550 while ($rec =
$ilDB->fetchAssoc($set)) {
551 $has_level[$rec[
"level_id"]] =
true;
554 foreach ($levels as $l) {
555 if (isset($has_level[$l[
"id"]])) {
556 $max_level = (
int) $l[
"id"];
571 $q =
"SELECT next_level_fulfilment FROM skl_user_has_level " .
572 " WHERE skill_id = " .
$ilDB->quote($skill_id,
"integer") .
573 " AND tref_id = " .
$ilDB->quote($a_tref_id,
"integer") .
574 " AND user_id = " .
$ilDB->quote($a_user_id,
"integer") .
575 " AND self_eval = " .
$ilDB->quote($a_self_eval,
"integer")
578 if ($rec =
$ilDB->fetchAssoc($set)) {
579 return (
float) $rec[
"next_level_fulfilment"];
590 $q =
"SELECT level_id FROM skl_user_has_level " .
591 " WHERE skill_id = " .
$ilDB->quote($a_skill_id,
"integer") .
592 " AND tref_id = " .
$ilDB->quote($a_tref_id,
"integer") .
593 " AND user_id = " .
$ilDB->quote($a_user_id,
"integer") .
594 " AND self_eval = " .
$ilDB->quote(1,
"integer")
597 return !!
$ilDB->fetchAssoc($set);
609 $ilDB->setLimit(1, 0);
611 $q =
"SELECT level_id FROM skl_user_has_level " .
612 " WHERE trigger_obj_id = " .
$ilDB->quote($a_object_id,
"integer") .
613 " AND skill_id = " .
$ilDB->quote($skill_id,
"integer") .
614 " AND tref_id = " .
$ilDB->quote($a_tref_id,
"integer") .
615 " AND user_id = " .
$ilDB->quote($a_user_id,
"integer") .
616 " AND self_eval = " .
$ilDB->quote($a_self_eval,
"integer") .
617 " ORDER BY status_date DESC" 620 if ($rec =
$ilDB->fetchAssoc($set)) {
621 return (
int) $rec[
"level_id"];
636 $ilDB->setLimit(1, 0);
638 $q =
"SELECT status_date FROM skl_user_has_level " .
639 " WHERE trigger_obj_id = " .
$ilDB->quote($a_object_id,
"integer") .
640 " AND skill_id = " .
$ilDB->quote($skill_id,
"integer") .
641 " AND tref_id = " .
$ilDB->quote($a_tref_id,
"integer") .
642 " AND user_id = " .
$ilDB->quote($a_user_id,
"integer") .
643 " AND self_eval = " .
$ilDB->quote($a_self_eval,
"integer") .
644 " ORDER BY status_date DESC" 647 if ($rec =
$ilDB->fetchAssoc($set)) {
648 return $rec[
"status_date"];
hasRecentSelfEvaluation(int $trigger_obj_id, int $a_user_id, int $a_skill_id, int $a_tref_id=0, int $a_trigger_ref_id=0)
hasSelfEvaluated(int $a_user_id, int $a_skill_id, int $a_tref_id)
resetUserSkillLevelStatus(bool $update, int $trigger_obj_id, string $status_date, int $a_user_id, int $a_skill_id, int $a_tref_id=0, int $a_trigger_ref_id=0, bool $a_self_eval=false)
getNextLevelFulfilmentPerType(int $skill_id, int $a_tref_id, string $a_type, int $a_user_id=0, int $a_self_eval=0)
getLastUpdatePerObject(int $skill_id, int $a_tref_id, int $a_object_id, int $a_user_id=0, int $a_self_eval=0)
getNewAchievementsPerUser(string $a_timestamp, string $a_timestamp_to=null, int $a_user_id=0, int $a_self_eval=0)
getMaxLevelPerObject(int $skill_id, array $levels, int $a_tref_id, int $a_object_id, int $a_user_id=0, int $a_self_eval=0)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static now()
Return current timestamp in Y-m-d H:i:s format.
getNextLevelFulfilmentPerObject(int $skill_id, int $a_tref_id, int $a_object_id, int $a_user_id=0, int $a_self_eval=0)
removeAllUserData(int $a_user_id)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
__construct(ilDBInterface $db=null)
writeUserSkillLevelStatus(int $skill_id, int $trigger_ref_id, int $trigger_obj_id, ?string $trigger_title, ?string $trigger_type, bool $update, string $status_date, int $a_level_id, int $a_user_id, int $a_tref_id=0, bool $a_self_eval=false, string $a_unique_identifier="", float $a_next_level_fulfilment=0.0, string $trigger_user_id="")
deleteUserLevelsOfSkill(int $skill_id)
getMaxLevel(int $skill_id, array $levels, int $a_tref_id, int $a_user_id=0, int $a_self_eval=0)
getAllLevelEntriesOfUser(int $skill_id, int $a_tref_id, int $a_user_id=0, int $a_self_eval=0)
removeAllUserSkillLevelStatusOfObject(int $a_user_id, int $a_trigger_obj_id, bool $a_self_eval=false, string $a_unique_identifier="")
getNextLevelFulfilment(int $skill_id, int $a_tref_id, int $a_user_id=0, int $a_self_eval=0)
getLastLevelPerObject(int $skill_id, int $a_tref_id, int $a_object_id, int $a_user_id=0, int $a_self_eval=0)
getAllHistoricLevelEntriesOfUser(int $skill_id, int $a_tref_id, int $a_user_id=0, int $a_eval_by=0)
getMaxLevelPerType(int $skill_id, array $levels, int $a_tref_id, string $a_type, int $a_user_id=0, int $a_self_eval=0)