ILIAS  release_7 Revision v7.30-3-g800a261c036
class.ilPersonalSkill.php
Go to the documentation of this file.
1<?php
2
3/* Copyright (c) 1998-2020 ILIAS open source, Extended GPL, see docs/LICENSE */
4
11{
18 public static function getSelectedUserSkills($a_user_id)
19 {
20 global $DIC;
21
22 $ilDB = $DIC->database();
23
24 $stree = new ilSkillTree();
25
26 $set = $ilDB->query(
27 "SELECT * FROM skl_personal_skill " .
28 " WHERE user_id = " . $ilDB->quote($a_user_id, "integer")
29 );
30 $pskills = array();
31 while ($rec = $ilDB->fetchAssoc($set)) {
32 if ($stree->isInTree($rec["skill_node_id"])) {
33 $pskills[$rec["skill_node_id"]] = array("skill_node_id" => $rec["skill_node_id"],
34 "title" => ilSkillTreeNode::_lookupTitle($rec["skill_node_id"]));
35 }
36 }
37 return $pskills;
38 }
39
46 public static function addPersonalSkill($a_user_id, $a_skill_node_id)
47 {
48 global $DIC;
49
50 $ilDB = $DIC->database();
51
52 $set = $ilDB->query(
53 "SELECT * FROM skl_personal_skill " .
54 " WHERE user_id = " . $ilDB->quote($a_user_id, "integer") .
55 " AND skill_node_id = " . $ilDB->quote($a_skill_node_id, "integer")
56 );
57 if (!$ilDB->fetchAssoc($set)) {
58 $ilDB->manipulate("INSERT INTO skl_personal_skill " .
59 "(user_id, skill_node_id) VALUES (" .
60 $ilDB->quote($a_user_id, "integer") . "," .
61 $ilDB->quote($a_skill_node_id, "integer") .
62 ")");
63 }
64 }
65
72 public static function removeSkill($a_user_id, $a_skill_node_id)
73 {
74 global $DIC;
75
76 $ilDB = $DIC->database();
77
78 $ilDB->manipulate(
79 "DELETE FROM skl_personal_skill WHERE " .
80 " user_id = " . $ilDB->quote($a_user_id, "integer") .
81 " AND skill_node_id = " . $ilDB->quote($a_skill_node_id, "integer")
82 );
83 }
84
90 public static function removeSkills($a_user_id)
91 {
92 global $DIC;
93
94 $ilDB = $DIC->database();
95
96 $ilDB->manipulate(
97 "DELETE FROM skl_personal_skill WHERE " .
98 " user_id = " . $ilDB->quote($a_user_id, "integer")
99 );
100 }
101
102
103 //
104 // Assigned materials
105 //
106
117 public static function assignMaterial($a_user_id, $a_top_skill, $a_tref_id, $a_basic_skill, $a_level, $a_wsp_id)
118 {
119 global $DIC;
120
121 $ilDB = $DIC->database();
122
123 $set = $ilDB->query(
124 "SELECT * FROM skl_assigned_material " .
125 " WHERE user_id = " . $ilDB->quote($a_user_id, "integer") .
126 " AND top_skill_id = " . $ilDB->quote($a_top_skill, "integer") .
127 " AND tref_id = " . $ilDB->quote((int) $a_tref_id, "integer") .
128 " AND skill_id = " . $ilDB->quote($a_basic_skill, "integer") .
129 " AND level_id = " . $ilDB->quote($a_level, "integer") .
130 " AND wsp_id = " . $ilDB->quote($a_wsp_id, "integer")
131 );
132 if (!$ilDB->fetchAssoc($set)) {
133 $ilDB->manipulate("INSERT INTO skl_assigned_material " .
134 "(user_id, top_skill_id, tref_id, skill_id, level_id, wsp_id) VALUES (" .
135 $ilDB->quote($a_user_id, "integer") . "," .
136 $ilDB->quote($a_top_skill, "integer") . "," .
137 $ilDB->quote((int) $a_tref_id, "integer") . "," .
138 $ilDB->quote($a_basic_skill, "integer") . "," .
139 $ilDB->quote($a_level, "integer") . "," .
140 $ilDB->quote($a_wsp_id, "integer") .
141 ")");
142 }
143 }
144
152 public static function getAssignedMaterial($a_user_id, $a_tref_id, $a_level)
153 {
154 global $DIC;
155
156 $ilDB = $DIC->database();
157
158 $set = $ilDB->query(
159 "SELECT * FROM skl_assigned_material " .
160 " WHERE level_id = " . $ilDB->quote($a_level, "integer") .
161 " AND tref_id = " . $ilDB->quote((int) $a_tref_id, "integer") .
162 " AND user_id = " . $ilDB->quote($a_user_id, "integer")
163 );
164 $mat = array();
165 while ($rec = $ilDB->fetchAssoc($set)) {
166 $mat[] = $rec;
167 }
168 return $mat;
169 }
170
178 public static function countAssignedMaterial($a_user_id, $a_tref_id, $a_level)
179 {
180 global $DIC;
181
182 $ilDB = $DIC->database();
183
184 $set = $ilDB->query(
185 "SELECT count(*) as cnt FROM skl_assigned_material " .
186 " WHERE level_id = " . $ilDB->quote($a_level, "integer") .
187 " AND tref_id = " . $ilDB->quote((int) $a_tref_id, "integer") .
188 " AND user_id = " . $ilDB->quote($a_user_id, "integer")
189 );
190 $rec = $ilDB->fetchAssoc($set);
191 return $rec["cnt"];
192 }
193
200 public static function removeMaterial($a_user_id, $a_tref_id, $a_level_id, $a_wsp_id)
201 {
202 global $DIC;
203
204 $ilDB = $DIC->database();
205
206 $t = "DELETE FROM skl_assigned_material WHERE " .
207 " user_id = " . $ilDB->quote($a_user_id, "integer") .
208 " AND tref_id = " . $ilDB->quote((int) $a_tref_id, "integer") .
209 " AND level_id = " . $ilDB->quote($a_level_id, "integer") .
210 " AND wsp_id = " . $ilDB->quote($a_wsp_id, "integer");
211
212 $ilDB->manipulate($t);
213 }
214
220 public static function removeMaterials($a_user_id)
221 {
222 global $DIC;
223
224 $ilDB = $DIC->database();
225
226 $t = "DELETE FROM skl_assigned_material WHERE " .
227 " user_id = " . $ilDB->quote($a_user_id, "integer");
228 $ilDB->manipulate($t);
229 }
230
231 //
232 // Self evaluation
233 //
234
244 public static function saveSelfEvaluation($a_user_id, $a_top_skill, $a_tref_id, $a_basic_skill, $a_level)
245 {
246 if ($a_level > 0) {
248 $a_level,
249 $a_user_id,
250 0,
251 $a_tref_id,
253 false,
254 1
255 );
256 } else {
257 ilBasicSkill::resetUserSkillLevelStatus($a_user_id, $a_basic_skill, $a_tref_id, 0, true);
258 }
259 }
260
270 public static function getSelfEvaluation($a_user_id, $a_top_skill, $a_tref_id, $a_basic_skill)
271 {
272 $bs = new ilBasicSkill($a_basic_skill);
273 return $bs->getLastLevelPerObject($a_tref_id, 0, $a_user_id, 1);
274 }
275
285 public static function getSelfEvaluationDate($a_user_id, $a_top_skill, $a_tref_id, $a_basic_skill)
286 {
287 $bs = new ilBasicSkill($a_basic_skill);
288 return $bs->getLastUpdatePerObject($a_tref_id, 0, $a_user_id, 1);
289 }
290
297 public static function getUsageInfo($a_cskill_ids, &$a_usages)
298 {
299 global $DIC;
300
301 $ilDB = $DIC->database();
302
303 // material
305 $a_cskill_ids,
306 $a_usages,
308 "skl_assigned_material",
309 "user_id"
310 );
311
312 // self evaluations
314 $a_cskill_ids,
315 $a_usages,
317 "skl_self_eval_level",
318 "user_id"
319 );
320
321 // users that use the skills as personal skills
322 $pskill_ids = array();
323 $tref_ids = array();
324 foreach ($a_cskill_ids as $cs) {
325 if ($cs["tref_id"] > 0) {
326 if (ilSkillTemplateReference::_lookupTemplateId($cs["tref_id"]) == $cs["skill_id"]) {
327 $pskill_ids[$cs["tref_id"]] = $cs["tref_id"];
328 $tref_ids[(int) $cs["tref_id"]] = $cs["skill_id"];
329 }
330 } else {
331 $pskill_ids[$cs["skill_id"]] = $cs["skill_id"];
332 }
333 }
334 $set = $ilDB->query(
335 "SELECT skill_node_id, user_id FROM skl_personal_skill " .
336 " WHERE " . $ilDB->in("skill_node_id", $pskill_ids, false, "integer") .
337 " GROUP BY skill_node_id, user_id"
338 );
339 while ($rec = $ilDB->fetchAssoc($set)) {
340 if (isset($tref_ids[(int) $rec["skill_node_id"]])) {
341 $a_usages[$tref_ids[$rec["skill_node_id"]] . ":" . $rec["skill_node_id"]][ilSkillUsage::PERSONAL_SKILL][] =
342 array("key" => $rec["user_id"]);
343 } else {
344 $a_usages[$rec["skill_node_id"] . ":0"][ilSkillUsage::PERSONAL_SKILL][] =
345 array("key" => $rec["user_id"]);
346 }
347 }
348 }
349}
An exception for terminatinating execution or to throw for unit testing.
static writeUserSkillLevelStatus(int $a_level_id, int $a_user_id, int $a_trigger_ref_id, int $a_tref_id=0, int $a_status=ilBasicSkill::ACHIEVED, bool $a_force=false, bool $a_self_eval=false, string $a_unique_identifier="", float $a_next_level_fulfilment=0.0)
static resetUserSkillLevelStatus(int $a_user_id, int $a_skill_id, int $a_tref_id=0, int $a_trigger_ref_id=0, bool $a_self_eval=false)
static getAssignedMaterial($a_user_id, $a_tref_id, $a_level)
Get assigned material (for a skill level and user)
static removeMaterial($a_user_id, $a_tref_id, $a_level_id, $a_wsp_id)
Remove material.
static getSelectedUserSkills($a_user_id)
Get personal selected user skills.
static getSelfEvaluationDate($a_user_id, $a_top_skill, $a_tref_id, $a_basic_skill)
Get self evaluation.
static addPersonalSkill($a_user_id, $a_skill_node_id)
Add personal skill.
static assignMaterial($a_user_id, $a_top_skill, $a_tref_id, $a_basic_skill, $a_level, $a_wsp_id)
Assign material to skill level.
static removeSkill($a_user_id, $a_skill_node_id)
Remove personal skill.
static getSelfEvaluation($a_user_id, $a_top_skill, $a_tref_id, $a_basic_skill)
Get self evaluation.
static removeSkills($a_user_id)
Remove personal skills of user.
static getUsageInfo($a_cskill_ids, &$a_usages)
Get usage info.
static countAssignedMaterial($a_user_id, $a_tref_id, $a_level)
Get assigned material (for a skill level and user)
static saveSelfEvaluation($a_user_id, $a_top_skill, $a_tref_id, $a_basic_skill, $a_level)
Save self evaluation.
static removeMaterials($a_user_id)
Remove materials of user.
static _lookupTemplateId($a_obj_id)
Lookup template ID.
static _lookupTitle($a_obj_id, $a_tref_id=0)
Lookup Title.
static getUsageInfoGeneric( $a_cskill_ids, &$a_usages, $a_usage_type, $a_table, $a_key_field, $a_skill_field="skill_id", $a_tref_field="tref_id")
Get standard usage query.
global $DIC
Definition: goto.php:24
Get info on usages of skills.
global $ilDB