ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
ilSkillUserLevelDBRepository Class Reference
+ Inheritance diagram for ilSkillUserLevelDBRepository:
+ Collaboration diagram for ilSkillUserLevelDBRepository:

Public Member Functions

 __construct (?ilDBInterface $db=null)
 
 deleteUserLevelsOfSkill (int $skill_id, bool $is_referenece=false)
 
 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)
 @inheritDoc More...
 
 hasRecentSelfEvaluation (int $trigger_obj_id, int $a_user_id, int $a_skill_id, int $a_tref_id=0, int $a_trigger_ref_id=0)
 @inheritDoc More...
 
 getNewAchievementsPerUser (string $a_timestamp, ?string $a_timestamp_to=null, int $a_user_id=0, int $a_self_eval=0)
 
 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="")
 @inheritDoc More...
 
 removeAllUserSkillLevelStatusOfObject (int $a_user_id, int $a_trigger_obj_id, bool $a_self_eval=false, string $a_unique_identifier="")
 @inheritDoc More...
 
 removeAllUserData (int $a_user_id)
 
 getMaxLevelPerType (int $skill_id, array $levels, int $a_tref_id, string $a_type, int $a_user_id=0, int $a_self_eval=0)
 
 getNextLevelFulfilmentPerType (int $skill_id, int $a_tref_id, string $a_type, 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)
 
 getAllHistoricLevelEntriesOfUser (int $skill_id, int $a_tref_id, int $a_user_id=0, int $a_eval_by=0, int $trigger_object_id=0, string $trigger_user="")
 
 getLastLevelEntryOfUser (int $skill_id, int $a_tref_id, int $a_user_id, int $a_object_id=0, int $a_self_eval=0, string $trigger_user="")
 
 getMaxLevelPerObject (int $skill_id, array $levels, int $a_tref_id, int $a_object_id, int $a_user_id=0, int $a_self_eval=0, string $trigger_user="")
 
 getNextLevelFulfilmentPerObject (int $skill_id, int $a_tref_id, int $a_object_id, int $a_user_id=0, int $a_self_eval=0)
 
 getMaxLevel (int $skill_id, array $levels, int $a_tref_id, int $a_user_id=0, int $a_self_eval=0)
 
 getNextLevelFulfilment (int $skill_id, int $a_tref_id, int $a_user_id=0, int $a_self_eval=0)
 
 hasSelfEvaluated (int $a_user_id, int $a_skill_id, int $a_tref_id)
 
 getLastLevelPerObject (int $skill_id, int $a_tref_id, int $a_object_id, 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)
 
- Public Member Functions inherited from ilSkillUserLevelRepository
 deleteUserLevelsOfSkill (int $skill_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)
 Reset skill level status. More...
 
 hasRecentSelfEvaluation (int $trigger_obj_id, int $a_user_id, int $a_skill_id, int $a_tref_id=0, int $a_trigger_ref_id=0)
 Has recent self evaluation. More...
 
 getNewAchievementsPerUser (string $a_timestamp, ?string $a_timestamp_to=null, int $a_user_id=0, int $a_self_eval=0)
 
 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="")
 Write skill level status. More...
 
 removeAllUserSkillLevelStatusOfObject (int $a_user_id, int $a_trigger_obj_id, bool $a_self_eval=false, string $a_unique_identifier="")
 Remove a user skill completely. More...
 
 removeAllUserData (int $a_user_id)
 
 getMaxLevelPerType (int $skill_id, array $levels, int $a_tref_id, string $a_type, int $a_user_id=0, int $a_self_eval=0)
 
 getNextLevelFulfilmentPerType (int $skill_id, int $a_tref_id, string $a_type, 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)
 
 getAllHistoricLevelEntriesOfUser (int $skill_id, int $a_tref_id, int $a_user_id=0, int $a_eval_by=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)
 
 getNextLevelFulfilmentPerObject (int $skill_id, int $a_tref_id, int $a_object_id, int $a_user_id=0, int $a_self_eval=0)
 
 getMaxLevel (int $skill_id, array $levels, int $a_tref_id, int $a_user_id=0, int $a_self_eval=0)
 
 getNextLevelFulfilment (int $skill_id, int $a_tref_id, int $a_user_id=0, int $a_self_eval=0)
 
 hasSelfEvaluated (int $a_user_id, int $a_skill_id, int $a_tref_id)
 
 getLastLevelPerObject (int $skill_id, int $a_tref_id, int $a_object_id, 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)
 

Protected Attributes

ilDBInterface $db
 

Detailed Description

Definition at line 21 of file class.ilSkillUserLevelDBRepository.php.

Constructor & Destructor Documentation

◆ __construct()

ilSkillUserLevelDBRepository::__construct ( ?ilDBInterface  $db = null)

Definition at line 25 of file class.ilSkillUserLevelDBRepository.php.

26 {
27 global $DIC;
28
29 $this->db = ($db)
30 ?: $DIC->database();
31 }
global $DIC
Definition: shib_login.php:26

References $db, and $DIC.

Member Function Documentation

◆ deleteUserLevelsOfSkill()

ilSkillUserLevelDBRepository::deleteUserLevelsOfSkill ( int  $skill_id,
bool  $is_referenece = false 
)

Definition at line 33 of file class.ilSkillUserLevelDBRepository.php.

33 : void
34 {
36
37 if (!$is_referenece) {
38 $ilDB->manipulate(
39 "DELETE FROM skl_user_has_level WHERE "
40 . " skill_id = " . $ilDB->quote($skill_id, "integer")
41 );
42 $ilDB->manipulate(
43 "DELETE FROM skl_user_skill_level WHERE "
44 . " skill_id = " . $ilDB->quote($skill_id, "integer")
45 );
46 } else {
47 $ilDB->manipulate(
48 "DELETE FROM skl_user_has_level WHERE "
49 . " tref_id = " . $ilDB->quote($skill_id, "integer")
50 );
51 $ilDB->manipulate(
52 "DELETE FROM skl_user_skill_level WHERE "
53 . " tref_id = " . $ilDB->quote($skill_id, "integer")
54 );
55 }
56 }

References $db, and $ilDB.

◆ getAllHistoricLevelEntriesOfUser()

ilSkillUserLevelDBRepository::getAllHistoricLevelEntriesOfUser ( int  $skill_id,
int  $a_tref_id,
int  $a_user_id = 0,
int  $a_eval_by = 0,
int  $trigger_object_id = 0,
string  $trigger_user = "" 
)

Definition at line 454 of file class.ilSkillUserLevelDBRepository.php.

461 : array {
463
464 $by = ($a_eval_by != ilBasicSkill::EVAL_BY_ALL)
465 ? " AND self_eval = " . $ilDB->quote($a_eval_by, "integer")
466 : "";
467 $trigger_obj_str = ($trigger_object_id > 0)
468 ? " AND trigger_obj_id = " . $ilDB->quote($trigger_object_id, "integer")
469 : "";
470 $trigger_user_str = ($trigger_user !== "")
471 ? " AND trigger_user_id = " . $ilDB->quote($trigger_user, "text")
472 : "";
473
474 $set = $ilDB->query(
475 $q = "SELECT * FROM skl_user_skill_level " .
476 " WHERE skill_id = " . $ilDB->quote($skill_id, "integer") .
477 " AND tref_id = " . $ilDB->quote($a_tref_id, "integer") .
478 " AND user_id = " . $ilDB->quote($a_user_id, "integer") .
479 $by .
480 $trigger_obj_str .
481 $trigger_user_str .
482 " ORDER BY status_date DESC"
483 );
484 $levels = [];
485 while ($rec = $ilDB->fetchAssoc($set)) {
486 $rec['user_id'] = (int) $rec['user_id'];
487 $rec['level_id'] = (int) $rec['level_id'];
488 $rec['skill_id'] = (int) $rec['skill_id'];
489 $rec['status'] = (int) $rec['status'];
490 $rec['valid'] = (int) $rec['valid'];
491 $rec['trigger_ref_id'] = (int) $rec['trigger_ref_id'];
492 $rec['trigger_obj_id'] = (int) $rec['trigger_obj_id'];
493 $rec['tref_id'] = (int) $rec['tref_id'];
494 $rec['self_eval'] = (int) $rec['self_eval'];
495 $rec['next_level_fulfilment'] = (float) $rec['next_level_fulfilment'];
496 $levels[] = $rec;
497 }
498 return $levels;
499 }
$q
Definition: shib_logout.php:23

References ILIAS\Repository\int().

+ Here is the call graph for this function:

◆ getAllLevelEntriesOfUser()

ilSkillUserLevelDBRepository::getAllLevelEntriesOfUser ( int  $skill_id,
int  $a_tref_id,
int  $a_user_id = 0,
int  $a_self_eval = 0 
)

Implements ilSkillUserLevelRepository.

Definition at line 420 of file class.ilSkillUserLevelDBRepository.php.

425 : array {
427
428 $set = $ilDB->query(
429 $q = "SELECT * FROM skl_user_has_level " .
430 " WHERE skill_id = " . $ilDB->quote($skill_id, "integer") .
431 " AND tref_id = " . $ilDB->quote($a_tref_id, "integer") .
432 " AND user_id = " . $ilDB->quote($a_user_id, "integer") .
433 " AND self_eval = " . $ilDB->quote($a_self_eval, "integer") .
434 " ORDER BY status_date DESC"
435 );
436
437 $levels = [];
438 while ($rec = $ilDB->fetchAssoc($set)) {
439 $rec['user_id'] = (int) $rec['user_id'];
440 $rec['level_id'] = (int) $rec['level_id'];
441 $rec['skill_id'] = (int) $rec['skill_id'];
442 $rec['status'] = (int) $rec['status'];
443 $rec['valid'] = (int) $rec['valid'];
444 $rec['trigger_ref_id'] = (int) $rec['trigger_ref_id'];
445 $rec['trigger_obj_id'] = (int) $rec['trigger_obj_id'];
446 $rec['tref_id'] = (int) $rec['tref_id'];
447 $rec['self_eval'] = (int) $rec['self_eval'];
448 $rec['next_level_fulfilment'] = (float) $rec['next_level_fulfilment'];
449 $levels[] = $rec;
450 }
451 return $levels;
452 }

References ILIAS\Repository\int().

+ Here is the call graph for this function:

◆ getLastLevelEntryOfUser()

ilSkillUserLevelDBRepository::getLastLevelEntryOfUser ( int  $skill_id,
int  $a_tref_id,
int  $a_user_id,
int  $a_object_id = 0,
int  $a_self_eval = 0,
string  $trigger_user = "" 
)

Definition at line 501 of file class.ilSkillUserLevelDBRepository.php.

508 : int {
509 foreach ($this->getAllHistoricLevelEntriesOfUser(
510 $skill_id,
511 $a_tref_id,
512 $a_user_id,
513 $a_self_eval,
514 $a_object_id,
515 $trigger_user
516 ) as $level) {
517 return $level["level_id"];
518 }
519 return 0;
520 }
getAllHistoricLevelEntriesOfUser(int $skill_id, int $a_tref_id, int $a_user_id=0, int $a_eval_by=0, int $trigger_object_id=0, string $trigger_user="")

◆ getLastLevelPerObject()

ilSkillUserLevelDBRepository::getLastLevelPerObject ( int  $skill_id,
int  $a_tref_id,
int  $a_object_id,
int  $a_user_id = 0,
int  $a_self_eval = 0 
)

Implements ilSkillUserLevelRepository.

Definition at line 654 of file class.ilSkillUserLevelDBRepository.php.

660 : int {
662
663 $ilDB->setLimit(1, 0);
664 $set = $ilDB->query(
665 $q = "SELECT level_id FROM skl_user_has_level " .
666 " WHERE trigger_obj_id = " . $ilDB->quote($a_object_id, "integer") .
667 " AND skill_id = " . $ilDB->quote($skill_id, "integer") .
668 " AND tref_id = " . $ilDB->quote($a_tref_id, "integer") .
669 " AND user_id = " . $ilDB->quote($a_user_id, "integer") .
670 " AND self_eval = " . $ilDB->quote($a_self_eval, "integer") .
671 " ORDER BY status_date DESC"
672 );
673
674 if ($rec = $ilDB->fetchAssoc($set)) {
675 return (int) $rec["level_id"];
676 }
677
678 return 0;
679 }

◆ getLastUpdatePerObject()

ilSkillUserLevelDBRepository::getLastUpdatePerObject ( int  $skill_id,
int  $a_tref_id,
int  $a_object_id,
int  $a_user_id = 0,
int  $a_self_eval = 0 
)

Implements ilSkillUserLevelRepository.

Definition at line 681 of file class.ilSkillUserLevelDBRepository.php.

687 : string {
689
690 $ilDB->setLimit(1, 0);
691 $set = $ilDB->query(
692 $q = "SELECT status_date FROM skl_user_has_level " .
693 " WHERE trigger_obj_id = " . $ilDB->quote($a_object_id, "integer") .
694 " AND skill_id = " . $ilDB->quote($skill_id, "integer") .
695 " AND tref_id = " . $ilDB->quote($a_tref_id, "integer") .
696 " AND user_id = " . $ilDB->quote($a_user_id, "integer") .
697 " AND self_eval = " . $ilDB->quote($a_self_eval, "integer") .
698 " ORDER BY status_date DESC"
699 );
700
701 if ($rec = $ilDB->fetchAssoc($set)) {
702 return $rec["status_date"];
703 }
704
705 return "";
706 }

◆ getMaxLevel()

ilSkillUserLevelDBRepository::getMaxLevel ( int  $skill_id,
array  $levels,
int  $a_tref_id,
int  $a_user_id = 0,
int  $a_self_eval = 0 
)

Implements ilSkillUserLevelRepository.

Definition at line 586 of file class.ilSkillUserLevelDBRepository.php.

592 : int {
594
595 $set = $ilDB->query(
596 $q = "SELECT level_id FROM skl_user_has_level " .
597 " WHERE skill_id = " . $ilDB->quote($skill_id, "integer") .
598 " AND tref_id = " . $ilDB->quote($a_tref_id, "integer") .
599 " AND user_id = " . $ilDB->quote($a_user_id, "integer") .
600 " AND self_eval = " . $ilDB->quote($a_self_eval, "integer")
601 );
602
603 $has_level = [];
604 while ($rec = $ilDB->fetchAssoc($set)) {
605 $has_level[$rec["level_id"]] = true;
606 }
607 $max_level = 0;
608 foreach ($levels as $l) {
609 if (isset($has_level[$l["id"]])) {
610 $max_level = (int) $l["id"];
611 }
612 }
613 return $max_level;
614 }

◆ getMaxLevelPerObject()

ilSkillUserLevelDBRepository::getMaxLevelPerObject ( int  $skill_id,
array  $levels,
int  $a_tref_id,
int  $a_object_id,
int  $a_user_id = 0,
int  $a_self_eval = 0,
string  $trigger_user = "" 
)

Definition at line 523 of file class.ilSkillUserLevelDBRepository.php.

531 : int {
533
534 $tr_user = "";
535 if ($trigger_user !== "") {
536 $tr_user = " AND trigger_user_id = " . $ilDB->quote($skill_id, "text");
537 }
538
539 $set = $ilDB->query(
540 $q = "SELECT level_id FROM skl_user_has_level " .
541 " WHERE trigger_obj_id = " . $ilDB->quote($a_object_id, "integer") .
542 " AND skill_id = " . $ilDB->quote($skill_id, "integer") .
543 " AND tref_id = " . $ilDB->quote($a_tref_id, "integer") .
544 " AND user_id = " . $ilDB->quote($a_user_id, "integer") .
545 " AND self_eval = " . $ilDB->quote($a_self_eval, "integer") . $tr_user
546 );
547
548 $has_level = [];
549 while ($rec = $ilDB->fetchAssoc($set)) {
550 $has_level[$rec["level_id"]] = true;
551 }
552 $max_level = 0;
553 foreach ($levels as $l) {
554 if (isset($has_level[$l["id"]])) {
555 $max_level = (int) $l["id"];
556 }
557 }
558 return $max_level;
559 }

References $ilDB.

◆ getMaxLevelPerType()

ilSkillUserLevelDBRepository::getMaxLevelPerType ( int  $skill_id,
array  $levels,
int  $a_tref_id,
string  $a_type,
int  $a_user_id = 0,
int  $a_self_eval = 0 
)

Implements ilSkillUserLevelRepository.

Definition at line 363 of file class.ilSkillUserLevelDBRepository.php.

370 : int {
372
373 $set = $ilDB->query(
374 $q = "SELECT level_id FROM skl_user_has_level " .
375 " WHERE trigger_obj_type = " . $ilDB->quote($a_type, "text") .
376 " AND skill_id = " . $ilDB->quote($skill_id, "integer") .
377 " AND tref_id = " . $ilDB->quote($a_tref_id, "integer") .
378 " AND user_id = " . $ilDB->quote($a_user_id, "integer") .
379 " AND self_eval = " . $ilDB->quote($a_self_eval, "integer")
380 );
381
382 $has_level = [];
383 while ($rec = $ilDB->fetchAssoc($set)) {
384 $has_level[$rec["level_id"]] = true;
385 }
386 $max_level = 0;
387 foreach ($levels as $l) {
388 if (isset($has_level[$l["id"]])) {
389 $max_level = (int) $l["id"];
390 }
391 }
392 return $max_level;
393 }

◆ getNewAchievementsPerUser()

ilSkillUserLevelDBRepository::getNewAchievementsPerUser ( string  $a_timestamp,
?string  $a_timestamp_to = null,
int  $a_user_id = 0,
int  $a_self_eval = 0 
)
Returns
array<int, array[]>

Implements ilSkillUserLevelRepository.

Definition at line 159 of file class.ilSkillUserLevelDBRepository.php.

164 : array {
166
167 $to = (!is_null($a_timestamp_to))
168 ? " AND status_date <= " . $ilDB->quote($a_timestamp_to, "timestamp")
169 : "";
170
171 $user = ($a_user_id > 0)
172 ? " AND user_id = " . $ilDB->quote($a_user_id, "integer")
173 : "";
174
175 $set = $ilDB->query("SELECT * FROM skl_user_skill_level " .
176 " WHERE status_date >= " . $ilDB->quote($a_timestamp, "timestamp") .
177 " AND valid = " . $ilDB->quote(1, "integer") .
178 " AND status = " . $ilDB->quote(ilBasicSkill::ACHIEVED, "integer") .
179 " AND self_eval = " . $ilDB->quote($a_self_eval, "integer") .
180 $to .
181 $user .
182 " ORDER BY user_id, status_date ASC ");
183 $achievements = [];
184 while ($rec = $ilDB->fetchAssoc($set)) {
185 $rec['user_id'] = (int) $rec['user_id'];
186 $rec['level_id'] = (int) $rec['level_id'];
187 $rec['skill_id'] = (int) $rec['skill_id'];
188 $rec['status'] = (int) $rec['status'];
189 $rec['valid'] = (int) $rec['valid'];
190 $rec['trigger_ref_id'] = (int) $rec['trigger_ref_id'];
191 $rec['trigger_obj_id'] = (int) $rec['trigger_obj_id'];
192 $rec['tref_id'] = (int) $rec['tref_id'];
193 $rec['self_eval'] = (int) $rec['self_eval'];
194 $rec['next_level_fulfilment'] = (float) $rec['next_level_fulfilment'];
195 $achievements[$rec["user_id"]][] = $rec;
196 }
197
198 return $achievements;
199 }

References ILIAS\Repository\int().

+ Here is the call graph for this function:

◆ getNextLevelFulfilment()

ilSkillUserLevelDBRepository::getNextLevelFulfilment ( int  $skill_id,
int  $a_tref_id,
int  $a_user_id = 0,
int  $a_self_eval = 0 
)

Implements ilSkillUserLevelRepository.

Definition at line 616 of file class.ilSkillUserLevelDBRepository.php.

621 : float {
623
624 $set = $ilDB->query(
625 $q = "SELECT next_level_fulfilment FROM skl_user_has_level " .
626 " WHERE skill_id = " . $ilDB->quote($skill_id, "integer") .
627 " AND tref_id = " . $ilDB->quote($a_tref_id, "integer") .
628 " AND user_id = " . $ilDB->quote($a_user_id, "integer") .
629 " AND self_eval = " . $ilDB->quote($a_self_eval, "integer")
630 );
631
632 if ($rec = $ilDB->fetchAssoc($set)) {
633 return (float) $rec["next_level_fulfilment"];
634 }
635
636 return 0;
637 }

◆ getNextLevelFulfilmentPerObject()

ilSkillUserLevelDBRepository::getNextLevelFulfilmentPerObject ( int  $skill_id,
int  $a_tref_id,
int  $a_object_id,
int  $a_user_id = 0,
int  $a_self_eval = 0 
)

Implements ilSkillUserLevelRepository.

Definition at line 561 of file class.ilSkillUserLevelDBRepository.php.

567 : float {
569
570 $set = $ilDB->query(
571 $q = "SELECT next_level_fulfilment FROM skl_user_has_level " .
572 " WHERE trigger_obj_id = " . $ilDB->quote($a_object_id, "integer") .
573 " AND skill_id = " . $ilDB->quote($skill_id, "integer") .
574 " AND tref_id = " . $ilDB->quote($a_tref_id, "integer") .
575 " AND user_id = " . $ilDB->quote($a_user_id, "integer") .
576 " AND self_eval = " . $ilDB->quote($a_self_eval, "integer")
577 );
578
579 if ($rec = $ilDB->fetchAssoc($set)) {
580 return (float) $rec["next_level_fulfilment"];
581 }
582
583 return 0;
584 }

◆ getNextLevelFulfilmentPerType()

ilSkillUserLevelDBRepository::getNextLevelFulfilmentPerType ( int  $skill_id,
int  $a_tref_id,
string  $a_type,
int  $a_user_id = 0,
int  $a_self_eval = 0 
)

Implements ilSkillUserLevelRepository.

Definition at line 395 of file class.ilSkillUserLevelDBRepository.php.

401 : float {
403
404 $set = $ilDB->query(
405 $q = "SELECT next_level_fulfilment FROM skl_user_has_level " .
406 " WHERE trigger_obj_type = " . $ilDB->quote($a_type, "text") .
407 " AND skill_id = " . $ilDB->quote($skill_id, "integer") .
408 " AND tref_id = " . $ilDB->quote($a_tref_id, "integer") .
409 " AND user_id = " . $ilDB->quote($a_user_id, "integer") .
410 " AND self_eval = " . $ilDB->quote($a_self_eval, "integer")
411 );
412
413 if ($rec = $ilDB->fetchAssoc($set)) {
414 return (float) $rec["next_level_fulfilment"];
415 }
416
417 return 0;
418 }

◆ hasRecentSelfEvaluation()

ilSkillUserLevelDBRepository::hasRecentSelfEvaluation ( int  $trigger_obj_id,
int  $a_user_id,
int  $a_skill_id,
int  $a_tref_id = 0,
int  $a_trigger_ref_id = 0 
)

@inheritDoc

Implements ilSkillUserLevelRepository.

Definition at line 124 of file class.ilSkillUserLevelDBRepository.php.

130 : string {
132
133 $recent = "";
134
135 $ilDB->setLimit(1, 0);
136 $set = $ilDB->query(
137 "SELECT * FROM skl_user_skill_level WHERE " .
138 "skill_id = " . $ilDB->quote($a_skill_id, "integer") . " AND " .
139 "user_id = " . $ilDB->quote($a_user_id, "integer") . " AND " .
140 "tref_id = " . $ilDB->quote($a_tref_id, "integer") . " AND " .
141 "trigger_obj_id = " . $ilDB->quote($trigger_obj_id, "integer") . " AND " .
142 "self_eval = " . $ilDB->quote(1, "integer") .
143 " ORDER BY status_date DESC"
144 );
145 if ($rec = $ilDB->fetchAssoc($set)) {
146 $status_day = substr($rec["status_date"], 0, 10);
147 $today = substr(ilUtil::now(), 0, 10);
148 if ($rec["valid"] && $rec["status"] == ilBasicSkill::ACHIEVED && $status_day == $today) {
149 $recent = $rec["status_date"];
150 }
151 }
152
153 return $recent;
154 }
static now()
Return current timestamp in Y-m-d H:i:s format.

References ilBasicSkill\ACHIEVED, and ilUtil\now().

+ Here is the call graph for this function:

◆ hasSelfEvaluated()

ilSkillUserLevelDBRepository::hasSelfEvaluated ( int  $a_user_id,
int  $a_skill_id,
int  $a_tref_id 
)

Implements ilSkillUserLevelRepository.

Definition at line 639 of file class.ilSkillUserLevelDBRepository.php.

639 : bool
640 {
642
643 $set = $ilDB->query(
644 $q = "SELECT level_id FROM skl_user_has_level " .
645 " WHERE skill_id = " . $ilDB->quote($a_skill_id, "integer") .
646 " AND tref_id = " . $ilDB->quote($a_tref_id, "integer") .
647 " AND user_id = " . $ilDB->quote($a_user_id, "integer") .
648 " AND self_eval = " . $ilDB->quote(1, "integer")
649 );
650
651 return !!$ilDB->fetchAssoc($set);
652 }

References $ilDB, and $q.

◆ removeAllUserData()

ilSkillUserLevelDBRepository::removeAllUserData ( int  $a_user_id)

Implements ilSkillUserLevelRepository.

Definition at line 349 of file class.ilSkillUserLevelDBRepository.php.

349 : void
350 {
352
353 $ilDB->manipulate(
354 "DELETE FROM skl_user_skill_level WHERE "
355 . " user_id = " . $ilDB->quote($a_user_id, "integer")
356 );
357 $ilDB->manipulate(
358 "DELETE FROM skl_user_has_level WHERE "
359 . " user_id = " . $ilDB->quote($a_user_id, "integer")
360 );
361 }

References $ilDB.

◆ removeAllUserSkillLevelStatusOfObject()

ilSkillUserLevelDBRepository::removeAllUserSkillLevelStatusOfObject ( int  $a_user_id,
int  $a_trigger_obj_id,
bool  $a_self_eval = false,
string  $a_unique_identifier = "" 
)

@inheritDoc

Implements ilSkillUserLevelRepository.

Definition at line 316 of file class.ilSkillUserLevelDBRepository.php.

321 : bool {
323
324 $changed = false;
325
326 $aff_rows = $ilDB->manipulate(
327 "DELETE FROM skl_user_skill_level WHERE "
328 . " user_id = " . $ilDB->quote($a_user_id, "integer")
329 . " AND trigger_obj_id = " . $ilDB->quote($a_trigger_obj_id, "integer")
330 . " AND self_eval = " . $ilDB->quote($a_self_eval, "integer")
331 . " AND unique_identifier = " . $ilDB->quote($a_unique_identifier, "text")
332 );
333 if ($aff_rows > 0) {
334 $changed = true;
335 }
336
337 $aff_rows = $ilDB->manipulate(
338 "DELETE FROM skl_user_has_level WHERE "
339 . " user_id = " . $ilDB->quote($a_user_id, "integer")
340 . " AND trigger_obj_id = " . $ilDB->quote($a_trigger_obj_id, "integer")
341 . " AND self_eval = " . $ilDB->quote($a_self_eval, "integer")
342 );
343 if ($aff_rows > 0) {
344 $changed = true;
345 }
346 return $changed;
347 }

◆ resetUserSkillLevelStatus()

ilSkillUserLevelDBRepository::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 
)

@inheritDoc

Implements ilSkillUserLevelRepository.

Definition at line 61 of file class.ilSkillUserLevelDBRepository.php.

70 : void {
72
73 $now = ilUtil::now();
74 if ($update) {
75 // this will only be set in self eval case, means this will always have a $rec
76 $ilDB->manipulate(
77 "UPDATE skl_user_skill_level SET " .
78 " level_id = " . $ilDB->quote(0, "integer") . "," .
79 " next_level_fulfilment = " . $ilDB->quote(0.0, "float") . "," .
80 " status_date = " . $ilDB->quote($now, "timestamp") .
81 " WHERE user_id = " . $ilDB->quote($a_user_id, "integer") .
82 " AND status_date = " . $ilDB->quote($status_date, "timestamp") .
83 " AND skill_id = " . $ilDB->quote($a_skill_id, "integer") .
84 " AND status = " . $ilDB->quote(ilBasicSkill::ACHIEVED, "integer") .
85 " AND trigger_obj_id = " . $ilDB->quote($trigger_obj_id, "integer") .
86 " AND tref_id = " . $ilDB->quote($a_tref_id, "integer") .
87 " AND self_eval = " . $ilDB->quote($a_self_eval, "integer")
88 );
89 } else {
90 $ilDB->manipulate("INSERT INTO skl_user_skill_level " .
91 "(level_id, user_id, tref_id, status_date, skill_id, status, valid, trigger_ref_id," .
92 "trigger_obj_id, trigger_obj_type, trigger_title, self_eval, unique_identifier," .
93 "next_level_fulfilment) VALUES (" .
94 $ilDB->quote(0, "integer") . "," .
95 $ilDB->quote($a_user_id, "integer") . "," .
96 $ilDB->quote($a_tref_id, "integer") . "," .
97 $ilDB->quote($now, "timestamp") . "," .
98 $ilDB->quote($a_skill_id, "integer") . "," .
99 $ilDB->quote(ilBasicSkill::ACHIEVED, "integer") . "," .
100 $ilDB->quote(1, "integer") . "," .
101 $ilDB->quote($a_trigger_ref_id, "integer") . "," .
102 $ilDB->quote($trigger_obj_id, "integer") . "," .
103 $ilDB->quote("", "text") . "," .
104 $ilDB->quote("", "text") . "," .
105 $ilDB->quote($a_self_eval, "integer") . "," .
106 $ilDB->quote("", "text") . "," .
107 $ilDB->quote(0.0, "float") .
108 ")");
109 }
110
111 $ilDB->manipulate(
112 "DELETE FROM skl_user_has_level WHERE "
113 . " user_id = " . $ilDB->quote($a_user_id, "integer")
114 . " AND skill_id = " . $ilDB->quote($a_skill_id, "integer")
115 . " AND tref_id = " . $ilDB->quote($a_tref_id, "integer")
116 . " AND trigger_obj_id = " . $ilDB->quote($trigger_obj_id, "integer")
117 . " AND self_eval = " . $ilDB->quote($a_self_eval, "integer")
118 );
119 }

◆ writeUserSkillLevelStatus()

ilSkillUserLevelDBRepository::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 = "" 
)

@inheritDoc

Implements ilSkillUserLevelRepository.

Definition at line 204 of file class.ilSkillUserLevelDBRepository.php.

219 : void {
221 $a_status = ilBasicSkill::ACHIEVED;
222
223 if ($trigger_user_id == "") {
224 $trigger_user_id = "-";
225 }
226
227 if ($update) {
228 // this will only be set in self eval case, means this will always have a $rec
229 $now = ilUtil::now();
230 $ilDB->manipulate(
231 "UPDATE skl_user_skill_level SET " .
232 " level_id = " . $ilDB->quote($a_level_id, "integer") . "," .
233 " status_date = " . $ilDB->quote($now, "timestamp") . "," .
234 " next_level_fulfilment = " . $ilDB->quote($a_next_level_fulfilment, "float") .
235 " WHERE user_id = " . $ilDB->quote($a_user_id, "integer") .
236 " AND status_date = " . $ilDB->quote($status_date, "timestamp") .
237 " AND skill_id = " . $ilDB->quote($skill_id, "integer") .
238 " AND status = " . $ilDB->quote($a_status, "integer") .
239 " AND trigger_obj_id = " . $ilDB->quote($trigger_obj_id, "integer") .
240 " AND tref_id = " . $ilDB->quote($a_tref_id, "integer") .
241 " AND self_eval = " . $ilDB->quote($a_self_eval, "integer") .
242 " AND trigger_user_id = " . $ilDB->quote($trigger_user_id, "text")
243 );
244 } else {
245 if ($a_unique_identifier != "") {
246 $ilDB->manipulate(
247 "DELETE FROM skl_user_skill_level WHERE " .
248 " user_id = " . $ilDB->quote($a_user_id, "integer") .
249 " AND tref_id = " . $ilDB->quote($a_tref_id, "integer") .
250 " AND skill_id = " . $ilDB->quote($skill_id, "integer") .
251 " AND trigger_ref_id = " . $ilDB->quote($trigger_ref_id, "integer") .
252 " AND trigger_obj_id = " . $ilDB->quote($trigger_obj_id, "integer") .
253 " AND self_eval = " . $ilDB->quote($a_self_eval, "integer") .
254 " AND unique_identifier = " . $ilDB->quote($a_unique_identifier, "text") .
255 " AND trigger_user_id = " . $ilDB->quote($trigger_user_id, "text")
256 );
257 }
258
259 $now = ilUtil::now();
260 $ilDB->manipulate("INSERT INTO skl_user_skill_level " .
261 "(level_id, user_id, tref_id, status_date, skill_id, status, valid, trigger_ref_id," .
262 "trigger_obj_id, trigger_obj_type, trigger_title, self_eval, unique_identifier," .
263 "next_level_fulfilment, trigger_user_id) VALUES (" .
264 $ilDB->quote($a_level_id, "integer") . "," .
265 $ilDB->quote($a_user_id, "integer") . "," .
266 $ilDB->quote($a_tref_id, "integer") . "," .
267 $ilDB->quote($now, "timestamp") . "," .
268 $ilDB->quote($skill_id, "integer") . "," .
269 $ilDB->quote($a_status, "integer") . "," .
270 $ilDB->quote(1, "integer") . "," .
271 $ilDB->quote($trigger_ref_id, "integer") . "," .
272 $ilDB->quote($trigger_obj_id, "integer") . "," .
273 $ilDB->quote($trigger_type, "text") . "," .
274 $ilDB->quote($trigger_title, "text") . "," .
275 $ilDB->quote($a_self_eval, "integer") . "," .
276 $ilDB->quote($a_unique_identifier, "text") . "," .
277 $ilDB->quote($a_next_level_fulfilment, "float") . "," .
278 $ilDB->quote($trigger_user_id, "text") .
279 ")");
280 }
281
282 // fix (removed level_id and added skill id, since table should hold only
283 // one entry per skill)
284 $ilDB->manipulate(
285 "DELETE FROM skl_user_has_level WHERE "
286 . " user_id = " . $ilDB->quote($a_user_id, "integer")
287 . " AND skill_id = " . $ilDB->quote($skill_id, "integer")
288 . " AND tref_id = " . $ilDB->quote($a_tref_id, "integer")
289 . " AND trigger_obj_id = " . $ilDB->quote($trigger_obj_id, "integer")
290 . " AND self_eval = " . $ilDB->quote($a_self_eval, "integer")
291 );
292
293 if ($a_status == ilBasicSkill::ACHIEVED) {
294 $ilDB->manipulate("INSERT INTO skl_user_has_level " .
295 "(level_id, user_id, tref_id, status_date, skill_id, trigger_ref_id, trigger_obj_id, trigger_obj_type," .
296 "trigger_title, self_eval, next_level_fulfilment, trigger_user_id) VALUES (" .
297 $ilDB->quote($a_level_id, "integer") . "," .
298 $ilDB->quote($a_user_id, "integer") . "," .
299 $ilDB->quote($a_tref_id, "integer") . "," .
300 $ilDB->quote($now, "timestamp") . "," .
301 $ilDB->quote($skill_id, "integer") . "," .
302 $ilDB->quote($trigger_ref_id, "integer") . "," .
303 $ilDB->quote($trigger_obj_id, "integer") . "," .
304 $ilDB->quote($trigger_type, "text") . "," .
305 $ilDB->quote($trigger_title, "text") . "," .
306 $ilDB->quote($a_self_eval, "integer") . "," .
307 $ilDB->quote($a_next_level_fulfilment, "float") . "," .
308 $ilDB->quote($trigger_user_id, "text") .
309 ")");
310 }
311 }

Field Documentation

◆ $db

ilDBInterface ilSkillUserLevelDBRepository::$db
protected

Definition at line 23 of file class.ilSkillUserLevelDBRepository.php.

Referenced by __construct(), and deleteUserLevelsOfSkill().


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