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 
5 include_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 }
Get info on usages of skills.
global $DIC
Definition: saml.php:7
Skill tree.
static getSelectedUserSkills($a_user_id)
Get personal selected user skills.
static saveSelfEvaluation($a_user_id, $a_top_skill, $a_tref_id, $a_basic_skill, $a_level)
Save self evaluation.
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.
static removeMaterials($a_user_id)
Remove materials of user.
static removeSkill($a_user_id, $a_skill_node_id)
Remove personal skill.
static getUsageInfo($a_cskill_ids, &$a_usages)
Get usage info.
static addPersonalSkill($a_user_id, $a_skill_node_id)
Add personal skill.
static _lookupTemplateId($a_obj_id)
Lookup template ID.
static _lookupTitle($a_obj_id, $a_tref_id=0)
Lookup Title.
static removeSkills($a_user_id)
Remove personal skills of user.
static getSelfEvaluation($a_user_id, $a_top_skill, $a_tref_id, $a_basic_skill)
Get self evaluation.
static getAssignedMaterial($a_user_id, $a_tref_id, $a_level)
Get assigned material (for a skill level and user)
static countAssignedMaterial($a_user_id, $a_tref_id, $a_level)
Get assigned material (for a skill level and user)
global $ilDB
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.
Basic Skill.
static getSelfEvaluationDate($a_user_id, $a_top_skill, $a_tref_id, $a_basic_skill)
Get self evaluation.
static removeMaterial($a_user_id, $a_tref_id, $a_level_id, $a_wsp_id)
Remove material.
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 resetUserSkillLevelStatus($a_user_id, $a_skill_id, $a_tref_id=0, $a_trigger_ref_id=0, $a_self_eval=false)
Reset skill level status.