ILIAS  release_8 Revision v8.19
All Data Structures Namespaces Files Functions Variables Modules Pages
ilSkillUserLevelDBRepository Class Reference

This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Learning e.V. More...

+ Inheritance diagram for ilSkillUserLevelDBRepository:
+ Collaboration diagram for ilSkillUserLevelDBRepository:

Public Member Functions

 __construct (ilDBInterface $db=null)
 
 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)
 
 hasRecentSelfEvaluation (int $trigger_obj_id, int $a_user_id, int $a_skill_id, int $a_tref_id=0, int $a_trigger_ref_id=0)
 
 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="")
 
 removeAllUserSkillLevelStatusOfObject (int $a_user_id, int $a_trigger_obj_id, bool $a_self_eval=false, string $a_unique_identifier="")
 
 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

This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Learning e.V.

ILIAS is licensed with the GPL-3.0, see https://www.gnu.org/licenses/gpl-3.0.en.html You should have received a copy of said license along with the source code, too.

If this is not the case or you just want to try ILIAS, you'll find us at: https://www.ilias.de https://github.com/ILIAS-eLearning

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

Constructor & Destructor Documentation

◆ __construct()

ilSkillUserLevelDBRepository::__construct ( ilDBInterface  $db = null)

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

References $db, and $DIC.

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

Member Function Documentation

◆ deleteUserLevelsOfSkill()

ilSkillUserLevelDBRepository::deleteUserLevelsOfSkill ( int  $skill_id)

Implements ilSkillUserLevelRepository.

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

References $db, and $ilDB.

32  : void
33  {
34  $ilDB = $this->db;
35 
36  $ilDB->manipulate(
37  "DELETE FROM skl_user_has_level WHERE "
38  . " skill_id = " . $ilDB->quote($skill_id, "integer")
39  );
40  }

◆ getAllHistoricLevelEntriesOfUser()

ilSkillUserLevelDBRepository::getAllHistoricLevelEntriesOfUser ( int  $skill_id,
int  $a_tref_id,
int  $a_user_id = 0,
int  $a_eval_by = 0 
)

Implements ilSkillUserLevelRepository.

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

References $db, $ilDB, ilBasicSkill\EVAL_BY_ALL, and ILIAS\Repository\int().

443  : array {
444  $ilDB = $this->db;
445 
446  $by = ($a_eval_by != ilBasicSkill::EVAL_BY_ALL)
447  ? " AND self_eval = " . $ilDB->quote($a_eval_by, "integer")
448  : "";
449 
450  $set = $ilDB->query(
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") .
455  $by .
456  " ORDER BY status_date DESC"
457  );
458  $levels = [];
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'];
470  $levels[] = $rec;
471  }
472  return $levels;
473  }
+ 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 404 of file class.ilSkillUserLevelDBRepository.php.

References $db, $ilDB, and ILIAS\Repository\int().

409  : array {
410  $ilDB = $this->db;
411 
412  $set = $ilDB->query(
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"
419  );
420 
421  $levels = [];
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'];
433  $levels[] = $rec;
434  }
435  return $levels;
436  }
+ Here is the call graph for this function:

◆ 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 600 of file class.ilSkillUserLevelDBRepository.php.

References $db, and $ilDB.

606  : int {
607  $ilDB = $this->db;
608 
609  $ilDB->setLimit(1, 0);
610  $set = $ilDB->query(
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"
618  );
619 
620  if ($rec = $ilDB->fetchAssoc($set)) {
621  return (int) $rec["level_id"];
622  }
623 
624  return 0;
625  }

◆ 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 627 of file class.ilSkillUserLevelDBRepository.php.

References $db, and $ilDB.

633  : ?string {
634  $ilDB = $this->db;
635 
636  $ilDB->setLimit(1, 0);
637  $set = $ilDB->query(
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"
645  );
646 
647  if ($rec = $ilDB->fetchAssoc($set)) {
648  return $rec["status_date"];
649  }
650 
651  return null;
652  }

◆ 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 532 of file class.ilSkillUserLevelDBRepository.php.

References $db, $ilDB, and ILIAS\Repository\int().

538  : int {
539  $ilDB = $this->db;
540 
541  $set = $ilDB->query(
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")
547  );
548 
549  $has_level = [];
550  while ($rec = $ilDB->fetchAssoc($set)) {
551  $has_level[$rec["level_id"]] = true;
552  }
553  $max_level = 0;
554  foreach ($levels as $l) {
555  if (isset($has_level[$l["id"]])) {
556  $max_level = (int) $l["id"];
557  }
558  }
559  return $max_level;
560  }
+ Here is the call graph for this function:

◆ 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 
)

Implements ilSkillUserLevelRepository.

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

References $db, $ilDB, and ILIAS\Repository\int().

482  : int {
483  $ilDB = $this->db;
484 
485  $set = $ilDB->query(
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")
492  );
493 
494  $has_level = [];
495  while ($rec = $ilDB->fetchAssoc($set)) {
496  $has_level[$rec["level_id"]] = true;
497  }
498  $max_level = 0;
499  foreach ($levels as $l) {
500  if (isset($has_level[$l["id"]])) {
501  $max_level = (int) $l["id"];
502  }
503  }
504  return $max_level;
505  }
+ Here is the call graph for this function:

◆ 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 347 of file class.ilSkillUserLevelDBRepository.php.

References $db, $ilDB, and ILIAS\Repository\int().

354  : int {
355  $ilDB = $this->db;
356 
357  $set = $ilDB->query(
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")
364  );
365 
366  $has_level = [];
367  while ($rec = $ilDB->fetchAssoc($set)) {
368  $has_level[$rec["level_id"]] = true;
369  }
370  $max_level = 0;
371  foreach ($levels as $l) {
372  if (isset($has_level[$l["id"]])) {
373  $max_level = (int) $l["id"];
374  }
375  }
376  return $max_level;
377  }
+ Here is the call graph for this function:

◆ 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 143 of file class.ilSkillUserLevelDBRepository.php.

References $db, $ilDB, ilBasicSkill\ACHIEVED, and ILIAS\Repository\int().

148  : array {
149  $ilDB = $this->db;
150 
151  $to = (!is_null($a_timestamp_to))
152  ? " AND status_date <= " . $ilDB->quote($a_timestamp_to, "timestamp")
153  : "";
154 
155  $user = ($a_user_id > 0)
156  ? " AND user_id = " . $ilDB->quote($a_user_id, "integer")
157  : "";
158 
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") .
162  " AND status = " . $ilDB->quote(ilBasicSkill::ACHIEVED, "integer") .
163  " AND self_eval = " . $ilDB->quote($a_self_eval, "integer") .
164  $to .
165  $user .
166  " ORDER BY user_id, status_date ASC ");
167  $achievements = [];
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;
180  }
181 
182  return $achievements;
183  }
+ 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 562 of file class.ilSkillUserLevelDBRepository.php.

References $db, and $ilDB.

567  : float {
568  $ilDB = $this->db;
569 
570  $set = $ilDB->query(
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")
576  );
577 
578  if ($rec = $ilDB->fetchAssoc($set)) {
579  return (float) $rec["next_level_fulfilment"];
580  }
581 
582  return 0;
583  }

◆ 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 507 of file class.ilSkillUserLevelDBRepository.php.

References $db, and $ilDB.

513  : float {
514  $ilDB = $this->db;
515 
516  $set = $ilDB->query(
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")
523  );
524 
525  if ($rec = $ilDB->fetchAssoc($set)) {
526  return (float) $rec["next_level_fulfilment"];
527  }
528 
529  return 0;
530  }

◆ 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 379 of file class.ilSkillUserLevelDBRepository.php.

References $db, and $ilDB.

385  : float {
386  $ilDB = $this->db;
387 
388  $set = $ilDB->query(
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")
395  );
396 
397  if ($rec = $ilDB->fetchAssoc($set)) {
398  return (float) $rec["next_level_fulfilment"];
399  }
400 
401  return 0;
402  }

◆ 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 
)

Implements ilSkillUserLevelRepository.

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

References $db, $ilDB, ilBasicSkill\ACHIEVED, and ilUtil\now().

114  : string {
115  $ilDB = $this->db;
116 
117  $recent = "";
118 
119  $ilDB->setLimit(1, 0);
120  $set = $ilDB->query(
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"
128  );
129  if ($rec = $ilDB->fetchAssoc($set)) {
130  $status_day = substr($rec["status_date"], 0, 10);
131  $today = substr(ilUtil::now(), 0, 10);
132  if ($rec["valid"] && $rec["status"] == ilBasicSkill::ACHIEVED && $status_day == $today) {
133  $recent = $rec["status_date"];
134  }
135  }
136 
137  return $recent;
138  }
static now()
Return current timestamp in Y-m-d H:i:s format.
+ 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 585 of file class.ilSkillUserLevelDBRepository.php.

References $db, and $ilDB.

585  : bool
586  {
587  $ilDB = $this->db;
588 
589  $set = $ilDB->query(
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")
595  );
596 
597  return !!$ilDB->fetchAssoc($set);
598  }

◆ removeAllUserData()

ilSkillUserLevelDBRepository::removeAllUserData ( int  $a_user_id)

Implements ilSkillUserLevelRepository.

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

References $db, and $ilDB.

333  : void
334  {
335  $ilDB = $this->db;
336 
337  $ilDB->manipulate(
338  "DELETE FROM skl_user_skill_level WHERE "
339  . " user_id = " . $ilDB->quote($a_user_id, "integer")
340  );
341  $ilDB->manipulate(
342  "DELETE FROM skl_user_has_level WHERE "
343  . " user_id = " . $ilDB->quote($a_user_id, "integer")
344  );
345  }

◆ removeAllUserSkillLevelStatusOfObject()

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

Implements ilSkillUserLevelRepository.

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

References $db, and $ilDB.

305  : bool {
306  $ilDB = $this->db;
307 
308  $changed = false;
309 
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")
316  );
317  if ($aff_rows > 0) {
318  $changed = true;
319  }
320 
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")
326  );
327  if ($aff_rows > 0) {
328  $changed = true;
329  }
330  return $changed;
331  }

◆ 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 
)

Implements ilSkillUserLevelRepository.

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

References $db, $ilDB, ilBasicSkill\ACHIEVED, and ilUtil\now().

54  : void {
55  $ilDB = $this->db;
56 
57  $now = ilUtil::now();
58  if ($update) {
59  // this will only be set in self eval case, means this will always have a $rec
60  $ilDB->manipulate(
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") .
68  " AND status = " . $ilDB->quote(ilBasicSkill::ACHIEVED, "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")
72  );
73  } else {
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") . "," .
83  $ilDB->quote(ilBasicSkill::ACHIEVED, "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") .
92  ")");
93  }
94 
95  $ilDB->manipulate(
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")
102  );
103  }
$update
Definition: imgupload.php:92
static now()
Return current timestamp in Y-m-d H:i:s format.
+ Here is the call graph for this function:

◆ 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 = "" 
)

Implements ilSkillUserLevelRepository.

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

References $db, $ilDB, ilBasicSkill\ACHIEVED, and ilUtil\now().

203  : void {
204  $ilDB = $this->db;
205  $a_status = ilBasicSkill::ACHIEVED;
206 
207  if ($trigger_user_id == "") {
208  $trigger_user_id = "-";
209  }
210 
211  if ($update) {
212  // this will only be set in self eval case, means this will always have a $rec
213  $now = ilUtil::now();
214  $ilDB->manipulate(
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")
227  );
228  } else {
229  if ($a_unique_identifier != "") {
230  $ilDB->manipulate(
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")
240  );
241  }
242 
243  $now = ilUtil::now();
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") .
263  ")");
264  }
265 
266  // fix (removed level_id and added skill id, since table should hold only
267  // one entry per skill)
268  $ilDB->manipulate(
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")
275  );
276 
277  if ($a_status == ilBasicSkill::ACHIEVED) {
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") .
293  ")");
294  }
295  }
$update
Definition: imgupload.php:92
static now()
Return current timestamp in Y-m-d H:i:s format.
+ Here is the call graph for this function:

Field Documentation

◆ $db


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