ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
class.ilPersonalSkill.php
Go to the documentation of this file.
1<?php
2
3/* Copyright (c) 1998-2011 ILIAS open source, Extended GPL, see docs/LICENSE */
4
5include_once("./Services/Skill/interfaces/interface.ilSkillUsageInfo.php");
6
15{
22 public static function getSelectedUserSkills($a_user_id)
23 {
24 global $DIC;
25
26 $ilDB = $DIC->database();
27
28 include_once "Services/Skill/classes/class.ilSkillTreeNode.php";
29
30 include_once("./Services/Skill/classes/class.ilSkillTree.php");
31 $stree = new ilSkillTree();
32
33 $set = $ilDB->query(
34 "SELECT * FROM skl_personal_skill " .
35 " WHERE user_id = " . $ilDB->quote($a_user_id, "integer")
36 );
37 $pskills = array();
38 while ($rec = $ilDB->fetchAssoc($set)) {
39 if ($stree->isInTree($rec["skill_node_id"])) {
40 $pskills[$rec["skill_node_id"]] = array("skill_node_id" => $rec["skill_node_id"],
41 "title" => ilSkillTreeNode::_lookupTitle($rec["skill_node_id"]));
42 }
43 }
44 return $pskills;
45 }
46
53 public static function addPersonalSkill($a_user_id, $a_skill_node_id)
54 {
55 global $DIC;
56
57 $ilDB = $DIC->database();
58
59 $set = $ilDB->query(
60 "SELECT * FROM skl_personal_skill " .
61 " WHERE user_id = " . $ilDB->quote($a_user_id, "integer") .
62 " AND skill_node_id = " . $ilDB->quote($a_skill_node_id, "integer")
63 );
64 if (!$ilDB->fetchAssoc($set)) {
65 $ilDB->manipulate("INSERT INTO skl_personal_skill " .
66 "(user_id, skill_node_id) VALUES (" .
67 $ilDB->quote($a_user_id, "integer") . "," .
68 $ilDB->quote($a_skill_node_id, "integer") .
69 ")");
70 }
71 }
72
79 public static function removeSkill($a_user_id, $a_skill_node_id)
80 {
81 global $DIC;
82
83 $ilDB = $DIC->database();
84
85 $ilDB->manipulate(
86 "DELETE FROM skl_personal_skill WHERE " .
87 " user_id = " . $ilDB->quote($a_user_id, "integer") .
88 " AND skill_node_id = " . $ilDB->quote($a_skill_node_id, "integer")
89 );
90 }
91
97 public static function removeSkills($a_user_id)
98 {
99 global $DIC;
100
101 $ilDB = $DIC->database();
102
103 $ilDB->manipulate(
104 "DELETE FROM skl_personal_skill WHERE " .
105 " user_id = " . $ilDB->quote($a_user_id, "integer")
106 );
107 }
108
109
110 //
111 // Assigned materials
112 //
113
124 public static function assignMaterial($a_user_id, $a_top_skill, $a_tref_id, $a_basic_skill, $a_level, $a_wsp_id)
125 {
126 global $DIC;
127
128 $ilDB = $DIC->database();
129
130 $set = $ilDB->query(
131 "SELECT * FROM skl_assigned_material " .
132 " WHERE user_id = " . $ilDB->quote($a_user_id, "integer") .
133 " AND top_skill_id = " . $ilDB->quote($a_top_skill, "integer") .
134 " AND tref_id = " . $ilDB->quote((int) $a_tref_id, "integer") .
135 " AND skill_id = " . $ilDB->quote($a_basic_skill, "integer") .
136 " AND level_id = " . $ilDB->quote($a_level, "integer") .
137 " AND wsp_id = " . $ilDB->quote($a_wsp_id, "integer")
138 );
139 if (!$ilDB->fetchAssoc($set)) {
140 $ilDB->manipulate("INSERT INTO skl_assigned_material " .
141 "(user_id, top_skill_id, tref_id, skill_id, level_id, wsp_id) VALUES (" .
142 $ilDB->quote($a_user_id, "integer") . "," .
143 $ilDB->quote($a_top_skill, "integer") . "," .
144 $ilDB->quote((int) $a_tref_id, "integer") . "," .
145 $ilDB->quote($a_basic_skill, "integer") . "," .
146 $ilDB->quote($a_level, "integer") . "," .
147 $ilDB->quote($a_wsp_id, "integer") .
148 ")");
149 }
150 }
151
159 public static function getAssignedMaterial($a_user_id, $a_tref_id, $a_level)
160 {
161 global $DIC;
162
163 $ilDB = $DIC->database();
164
165 $set = $ilDB->query(
166 "SELECT * FROM skl_assigned_material " .
167 " WHERE level_id = " . $ilDB->quote($a_level, "integer") .
168 " AND tref_id = " . $ilDB->quote((int) $a_tref_id, "integer") .
169 " AND user_id = " . $ilDB->quote($a_user_id, "integer")
170 );
171 $mat = array();
172 while ($rec = $ilDB->fetchAssoc($set)) {
173 $mat[] = $rec;
174 }
175 return $mat;
176 }
177
185 public static function countAssignedMaterial($a_user_id, $a_tref_id, $a_level)
186 {
187 global $DIC;
188
189 $ilDB = $DIC->database();
190
191 $set = $ilDB->query(
192 "SELECT count(*) as cnt FROM skl_assigned_material " .
193 " WHERE level_id = " . $ilDB->quote($a_level, "integer") .
194 " AND tref_id = " . $ilDB->quote((int) $a_tref_id, "integer") .
195 " AND user_id = " . $ilDB->quote($a_user_id, "integer")
196 );
197 $rec = $ilDB->fetchAssoc($set);
198 return $rec["cnt"];
199 }
200
207 public static function removeMaterial($a_user_id, $a_tref_id, $a_level_id, $a_wsp_id)
208 {
209 global $DIC;
210
211 $ilDB = $DIC->database();
212
213 $t = "DELETE FROM skl_assigned_material WHERE " .
214 " user_id = " . $ilDB->quote($a_user_id, "integer") .
215 " AND tref_id = " . $ilDB->quote((int) $a_tref_id, "integer") .
216 " AND level_id = " . $ilDB->quote($a_level_id, "integer") .
217 " AND wsp_id = " . $ilDB->quote($a_wsp_id, "integer");
218
219 $ilDB->manipulate($t);
220 }
221
227 public static function removeMaterials($a_user_id)
228 {
229 global $DIC;
230
231 $ilDB = $DIC->database();
232
233 $t = "DELETE FROM skl_assigned_material WHERE " .
234 " user_id = " . $ilDB->quote($a_user_id, "integer");
235 $ilDB->manipulate($t);
236 }
237
238 //
239 // Self evaluation
240 //
241
251 public static function saveSelfEvaluation($a_user_id, $a_top_skill, $a_tref_id, $a_basic_skill, $a_level)
252 {
253 include_once("./Services/Skill/classes/class.ilBasicSkill.php");
254 if ($a_level > 0) {
256 $a_level,
257 $a_user_id,
258 0,
259 $a_tref_id,
261 false,
262 1
263 );
264 } else {
265 ilBasicSkill::resetUserSkillLevelStatus($a_user_id, $a_basic_skill, $a_tref_id, 0, true);
266 }
267 }
268
278 public static function getSelfEvaluation($a_user_id, $a_top_skill, $a_tref_id, $a_basic_skill)
279 {
280 include_once("./Services/Skill/classes/class.ilBasicSkill.php");
281 $bs = new ilBasicSkill($a_basic_skill);
282 return $bs->getLastLevelPerObject($a_tref_id, 0, $a_user_id, 1);
283 }
284
294 public static function getSelfEvaluationDate($a_user_id, $a_top_skill, $a_tref_id, $a_basic_skill)
295 {
296 include_once("./Services/Skill/classes/class.ilBasicSkill.php");
297 $bs = new ilBasicSkill($a_basic_skill);
298 return $bs->getLastUpdatePerObject($a_tref_id, 0, $a_user_id, 1);
299 }
300
307 public static function getUsageInfo($a_cskill_ids, &$a_usages)
308 {
309 global $DIC;
310
311 $ilDB = $DIC->database();
312
313 // material
314 include_once("./Services/Skill/classes/class.ilSkillUsage.php");
316 $a_cskill_ids,
317 $a_usages,
319 "skl_assigned_material",
320 "user_id"
321 );
322
323 // self evaluations
325 $a_cskill_ids,
326 $a_usages,
328 "skl_self_eval_level",
329 "user_id"
330 );
331
332 // users that use the skills as personal skills
333 $pskill_ids = array();
334 $tref_ids = array();
335 foreach ($a_cskill_ids as $cs) {
336 if ($cs["tref_id"] > 0) {
337 include_once("./Services/Skill/classes/class.ilSkillTemplateReference.php");
338 if (ilSkillTemplateReference::_lookupTemplateId($cs["tref_id"]) == $cs["skill_id"]) {
339 $pskill_ids[$cs["tref_id"]] = $cs["tref_id"];
340 $tref_ids[(int) $cs["tref_id"]] = $cs["skill_id"];
341 }
342 } else {
343 $pskill_ids[$cs["skill_id"]] = $cs["skill_id"];
344 }
345 }
346 $set = $ilDB->query(
347 "SELECT skill_node_id, user_id FROM skl_personal_skill " .
348 " WHERE " . $ilDB->in("skill_node_id", $pskill_ids, false, "integer") .
349 " GROUP BY skill_node_id, user_id"
350 );
351 while ($rec = $ilDB->fetchAssoc($set)) {
352 if (isset($tref_ids[(int) $rec["skill_node_id"]])) {
353 $a_usages[$tref_ids[$rec["skill_node_id"]] . ":" . $rec["skill_node_id"]][ilSkillUsage::PERSONAL_SKILL][] =
354 array("key" => $rec["user_id"]);
355 } else {
356 $a_usages[$rec["skill_node_id"] . ":0"][ilSkillUsage::PERSONAL_SKILL][] =
357 array("key" => $rec["user_id"]);
358 }
359 }
360 }
361}
An exception for terminatinating execution or to throw for unit testing.
static writeUserSkillLevelStatus( $a_level_id, $a_user_id, $a_trigger_ref_id, $a_tref_id=0, $a_status=ilBasicSkill::ACHIEVED, $a_force=false, $a_self_eval=false, $a_unique_identifier="")
Write skill level status.
static resetUserSkillLevelStatus($a_user_id, $a_skill_id, $a_tref_id=0, $a_trigger_ref_id=0, $a_self_eval=false)
Reset skill level status.
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.
Get info on usages of skills.
global $DIC
Definition: saml.php:7
global $ilDB