5 include_once(
"./Services/Skill/classes/class.ilSkillTreeNode.php");
6 include_once(
"./Services/Skill/interfaces/interface.ilSkillUsageInfo.php");
33 parent::ilSkillTreeNode($a_id);
61 $ilDB->manipulate(
"DELETE FROM skl_level WHERE " 62 .
" skill_id = ".$ilDB->quote($this->getId(),
"integer")
65 $ilDB->manipulate(
"DELETE FROM skl_user_has_level WHERE " 66 .
" skill_id = ".$ilDB->quote($this->getId(),
"integer")
79 $skill->setType($this->
getType());
87 foreach($levels as $item)
89 $skill->addLevel($item[
"title"], $item[
"description"]);
114 $nid = $ilDB->nextId(
"skl_level");
115 $ilDB->insert(
"skl_level", array(
116 "id" => array(
"integer", $nid),
117 "skill_id" => array(
"integer", $this->
getId()),
118 "nr" => array(
"integer", $nr+1),
119 "title" => array(
"text", $a_title),
120 "description" => array(
"clob", $a_description)
134 $set = $ilDB->query(
"SELECT MAX(nr) mnr FROM skl_level WHERE ".
135 " skill_id = ".$ilDB->quote($this->getId(),
"integer")
137 $rec = $ilDB->fetchAssoc($set);
138 return (
int) $rec[
"mnr"];
152 $and =
" AND id = ".$ilDB->quote($a_id,
"integer");
155 $set = $ilDB->query(
"SELECT * FROM skl_level WHERE ".
156 " skill_id = ".$ilDB->quote($this->getId(),
"integer").
161 while ($rec = $ilDB->fetchAssoc($set))
182 $set = $ilDB->query(
"SELECT $a_prop FROM skl_level WHERE ".
183 " id = ".$ilDB->quote($a_id,
"integer")
185 $rec = $ilDB->fetchAssoc($set);
186 return $rec[$a_prop];
219 die(
"ilBasicSkill::lookupLevelTrigger is deprecated.");
222 return array(
"ref_id" =>
$ref_id,
"obj_id" => $obj_id);
246 $ilDB->update(
"skl_level", array(
247 $a_prop => array($a_type, $a_value),
249 "id" => array(
"integer", $a_id),
283 die(
"ilBasicSkill::writeLevelTrigger is deprecated.");
284 $a_trigger_obj_id = 0;
285 if ($a_trigger_ref_id > 0)
306 foreach ($order as $id => $o)
308 $ilDB->manipulate(
"UPDATE skl_level SET ".
309 " nr = ".$ilDB->quote($cnt,
"integer").
310 " WHERE id = ".$ilDB->quote($id,
"integer")
326 $ilDB->manipulate(
"DELETE FROM skl_level WHERE " 327 .
" id = ".$ilDB->quote($a_id,
"integer")
342 $set = $ilDB->query(
"SELECT id, nr FROM skl_level WHERE ".
343 " skill_id = ".$ilDB->quote($this->getId(),
"integer").
347 while ($rec = $ilDB->fetchAssoc($set))
349 $ilDB->manipulate(
"UPDATE skl_level SET ".
350 " nr = ".$ilDB->quote($cnt,
"integer").
351 " WHERE id = ".$ilDB->quote($rec[
"id"],
"integer")
366 die(
"ilBasicSkill::lookupLevelsForTriggerRefId is deprecated.");
367 $set = $ilDB->query(
"SELECT id FROM skl_level WHERE ".
368 " trigger_ref_id = ".$ilDB->quote($a_ref_id,
"integer")
371 while ($rec = $ilDB->fetchAssoc($set))
373 $levels[] = $rec[
"id"];
388 $set = $ilDB->query(
"SELECT * FROM skl_level WHERE ".
389 " id = ".$ilDB->quote($a_level_id,
"integer")
392 if ($rec = $ilDB->fetchAssoc($set))
416 die(
"ilBasicSkill::updateAllUserSkillLevels is deprecated.");
417 $set = $ilDB->query(
"SELECT id, trigger_obj_id FROM skl_level WHERE ".
418 " trigger_obj_id > ".$ilDB->quote(0,
"integer")
420 while ($rec = $ilDB->fetchAssoc($set))
422 $skill_level_id = $rec[
"id"];
423 $tr_obj_id = $rec[
"trigger_obj_id"];
427 include_once(
"./Services/Tracking/classes/class.ilLPStatusWrapper.php");
429 foreach ($completed as $user_id)
445 die(
"ilBasicSkill::updateSkillLevelsByTriggerRef is deprecated.");
446 $set = $ilDB->query(
"SELECT id, trigger_obj_id FROM skl_level WHERE ".
447 " trigger_ref_id = ".$ilDB->quote($a_ref_id,
"integer")
449 while ($rec = $ilDB->fetchAssoc($set))
451 $skill_level_id = $rec[
"id"];
452 $tr_obj_id = $rec[
"trigger_obj_id"];
456 include_once(
"./Services/Tracking/classes/class.ilLPStatusWrapper.php");
458 foreach ($completed as $user_id)
460 if ($a_user_id == $user_id)
483 $a_self_eval = 0, $a_unique_identifier =
"")
488 $trigger_ref_id = $a_trigger_ref_id;
515 $set = $ilDB->query(
"SELECT * FROM skl_user_skill_level WHERE ".
516 "skill_id = ".$ilDB->quote($skill_id,
"integer").
" AND ".
517 "user_id = ".$ilDB->quote($a_user_id,
"integer").
" AND ".
518 "tref_id = ".$ilDB->quote((
int) $a_tref_id,
"integer").
" AND ".
519 "trigger_obj_id = ".$ilDB->quote($trigger_obj_id,
"integer").
" AND ".
520 "self_eval = ".$ilDB->quote($a_self_eval,
"integer").
521 " ORDER BY status_date DESC" 523 $rec = $ilDB->fetchAssoc($set);
524 $status_day = substr($rec[
"status_date"], 0, 10);
526 if ($rec[
"valid"] && $rec[
"status"] == $a_status && $status_day == $today)
535 $ilDB->manipulate(
"UPDATE skl_user_skill_level SET ".
536 " level_id = ".$ilDB->quote($a_level_id,
"integer").
",".
537 " status_date = ".$ilDB->quote($now,
"timestamp").
538 " WHERE user_id = ".$ilDB->quote($a_user_id,
"integer").
539 " AND status_date = ".$ilDB->quote($rec[
"status_date"],
"timestamp").
540 " AND skill_id = ".$ilDB->quote($rec[
"skill_id"],
"integer").
541 " AND status = ".$ilDB->quote($a_status,
"integer").
542 " AND trigger_obj_id = ".$ilDB->quote($trigger_obj_id,
"integer").
543 " AND tref_id = ".$ilDB->quote((
int) $a_tref_id,
"integer").
544 " AND self_eval = ".$ilDB->quote($a_self_eval,
"integer")
549 if ($a_unique_identifier !=
"")
551 $ilDB->manipulate(
"DELETE FROM skl_user_skill_level WHERE ".
552 " user_id = ".$ilDB->quote($a_user_id,
"integer").
553 " AND tref_id = ".$ilDB->quote($a_tref_id,
"integer").
554 " AND skill_id = ".$ilDB->quote($skill_id,
"integer").
555 " AND trigger_ref_id = ".$ilDB->quote($trigger_ref_id,
"integer").
556 " AND trigger_obj_id = ".$ilDB->quote($trigger_obj_id,
"integer").
557 " AND self_eval = ".$ilDB->quote($a_self_eval,
"integer").
558 " AND unique_identifier = ".$ilDB->quote($a_unique_identifier,
"text")
563 $ilDB->manipulate(
"INSERT INTO skl_user_skill_level ".
564 "(level_id, user_id, tref_id, status_date, skill_id, status, valid, trigger_ref_id,".
565 "trigger_obj_id, trigger_obj_type, trigger_title, self_eval, unique_identifier) VALUES (".
566 $ilDB->quote($a_level_id,
"integer").
",".
567 $ilDB->quote($a_user_id,
"integer").
",".
568 $ilDB->quote((
int) $a_tref_id,
"integer").
",".
569 $ilDB->quote($now,
"timestamp").
",".
570 $ilDB->quote($skill_id,
"integer").
",".
571 $ilDB->quote($a_status,
"integer").
",".
572 $ilDB->quote(1,
"integer").
",".
573 $ilDB->quote($trigger_ref_id,
"integer").
",".
574 $ilDB->quote($trigger_obj_id,
"integer").
",".
575 $ilDB->quote($trigger_type,
"text").
",".
576 $ilDB->quote($trigger_title,
"text").
",".
577 $ilDB->quote($a_self_eval,
"integer").
",".
578 $ilDB->quote($a_unique_identifier,
"text").
584 $ilDB->manipulate(
"DELETE FROM skl_user_has_level WHERE " 585 .
" user_id = ".$ilDB->quote($a_user_id,
"integer")
586 .
" AND skill_id = ".$ilDB->quote($skill_id,
"integer")
587 .
" AND tref_id = ".$ilDB->quote((
int) $a_tref_id,
"integer")
588 .
" AND trigger_obj_id = ".$ilDB->quote($trigger_obj_id,
"integer")
589 .
" AND self_eval = ".$ilDB->quote($a_self_eval,
"integer")
594 $ilDB->manipulate(
"INSERT INTO skl_user_has_level ".
595 "(level_id, user_id, tref_id, status_date, skill_id, trigger_ref_id, trigger_obj_id, trigger_obj_type, trigger_title, self_eval) VALUES (".
596 $ilDB->quote($a_level_id,
"integer").
",".
597 $ilDB->quote($a_user_id,
"integer").
",".
598 $ilDB->quote($a_tref_id,
"integer").
",".
599 $ilDB->quote($now,
"timestamp").
",".
600 $ilDB->quote($skill_id,
"integer").
",".
601 $ilDB->quote($trigger_ref_id,
"integer").
",".
602 $ilDB->quote($trigger_obj_id,
"integer").
",".
603 $ilDB->quote($trigger_type,
"text").
",".
604 $ilDB->quote($trigger_title,
"text").
",".
605 $ilDB->quote($a_self_eval,
"integer").
622 $a_user_id = $ilUser->getId();
625 $set = $ilDB->query($q =
"SELECT level_id FROM skl_user_has_level ".
626 " WHERE trigger_obj_type = ".$ilDB->quote($a_type,
"text").
627 " AND skill_id = ".$ilDB->quote($this->
getId(),
"integer").
628 " AND tref_id = ".$ilDB->quote((
int) $a_tref_id,
"integer").
629 " AND user_id = ".$ilDB->quote($a_user_id,
"integer").
630 " AND self_eval = ".$ilDB->quote($a_self_eval,
"integer")
633 $has_level = array();
634 while ($rec = $ilDB->fetchAssoc($set))
636 $has_level[$rec[
"level_id"]] =
true;
641 if (isset($has_level[
$l[
"id"]]))
643 $max_level = $l[
"id"];
661 $a_user_id = $ilUser->getId();
664 $set = $ilDB->query($q =
"SELECT * FROM skl_user_has_level ".
665 " WHERE skill_id = ".$ilDB->quote($this->getId(),
"integer").
666 " AND tref_id = ".$ilDB->quote((
int) $a_tref_id,
"integer").
667 " AND user_id = ".$ilDB->quote($a_user_id,
"integer").
668 " AND self_eval = ".$ilDB->quote($a_self_eval,
"integer").
669 " ORDER BY status_date DESC" 673 while ($rec = $ilDB->fetchAssoc($set))
692 $a_user_id = $ilUser->getId();
695 $by = ($a_eval_by != self::EVAL_BY_ALL)
696 ?
" AND self_eval = ".$ilDB->quote($a_self_eval,
"integer")
699 $set = $ilDB->query($q =
"SELECT * FROM skl_user_skill_level ".
700 " WHERE skill_id = ".$ilDB->quote($this->getId(),
"integer").
701 " AND tref_id = ".$ilDB->quote((
int) $a_tref_id,
"integer").
702 " AND user_id = ".$ilDB->quote($a_user_id,
"integer").
704 " ORDER BY status_date DESC" 707 while ($rec = $ilDB->fetchAssoc($set))
727 $a_user_id = $ilUser->getId();
730 $set = $ilDB->query($q =
"SELECT level_id FROM skl_user_has_level ".
731 " WHERE trigger_obj_id = ".$ilDB->quote($a_object_id,
"integer").
732 " AND skill_id = ".$ilDB->quote($this->
getId(),
"integer").
733 " AND tref_id = ".$ilDB->quote((
int) $a_tref_id,
"integer").
734 " AND user_id = ".$ilDB->quote($a_user_id,
"integer").
735 " AND self_eval = ".$ilDB->quote($a_self_eval,
"integer")
738 $has_level = array();
739 while ($rec = $ilDB->fetchAssoc($set))
741 $has_level[$rec[
"level_id"]] =
true;
746 if (isset($has_level[
$l[
"id"]]))
748 $max_level = $l[
"id"];
766 $a_user_id = $ilUser->getId();
770 $set = $ilDB->query($q =
"SELECT level_id FROM skl_user_has_level ".
771 " WHERE trigger_obj_id = ".$ilDB->quote($a_object_id,
"integer").
772 " AND skill_id = ".$ilDB->quote($this->
getId(),
"integer").
773 " AND tref_id = ".$ilDB->quote((
int) $a_tref_id,
"integer").
774 " AND user_id = ".$ilDB->quote($a_user_id,
"integer").
775 " AND self_eval = ".$ilDB->quote($a_self_eval,
"integer").
776 " ORDER BY status_date DESC" 779 $rec = $ilDB->fetchAssoc($set);
781 return $rec[
"level_id"];
796 $a_user_id = $ilUser->getId();
800 $set = $ilDB->query($q =
"SELECT status_date FROM skl_user_has_level ".
801 " WHERE trigger_obj_id = ".$ilDB->quote($a_object_id,
"integer").
802 " AND skill_id = ".$ilDB->quote($this->
getId(),
"integer").
803 " AND tref_id = ".$ilDB->quote((
int) $a_tref_id,
"integer").
804 " AND user_id = ".$ilDB->quote($a_user_id,
"integer").
805 " AND self_eval = ".$ilDB->quote($a_self_eval,
"integer").
806 " ORDER BY status_date DESC" 809 $rec = $ilDB->fetchAssoc($set);
811 return $rec[
"status_date"];
823 die(
"ilBasicSkill::getCompletionDateForTriggerRefId is deprecated.");
828 else if (!is_array($a_ref_id))
830 $a_ref_id = array($a_ref_id);
832 if (!is_array($a_user_id))
834 $a_user_id = array($a_user_id);
837 if ($a_ref_id != null)
839 if (!is_array($a_ref_id))
841 $a_ref_id = array($a_ref_id);
844 $set = $ilDB->query($q =
"SELECT user_id, status_date, trigger_ref_id FROM skl_user_has_level WHERE ".
845 $ilDB->in(
"user_id", $a_user_id,
false,
"integer").
" AND ".
846 $ilDB->in(
"trigger_ref_id", $a_ref_id,
false,
"integer")
849 $completion = array();
850 while ($rec = $ilDB->fetchAssoc($set))
852 if (!isset($completion[$rec[
"user_id"]][$rec[
"trigger_ref_id"]]))
854 $completion[$rec[
"user_id"]][$rec[
"trigger_ref_id"]] = $rec[
"status_date"];
856 else if ($rec[
"status_date"] < $completion[$rec[
"user_id"]][$rec[
"trigger_ref_id"]])
858 $completion[$rec[
"user_id"]][$rec[
"trigger_ref_id"]] = $rec[
"status_date"];
864 foreach ($a_user_id as $user_id)
866 if (!isset($completion[$user_id][$ref_id]))
868 $completion[$user_id][
$ref_id] =
false;
875 $completion = array();
876 foreach ($a_user_id as $user_id)
878 include_once
'Services/Membership/classes/class.ilParticipants.php';
881 $set = $ilDB->query($q =
"SELECT user_id, status_date, trigger_ref_id FROM skl_user_has_level WHERE ".
882 "user_id = ".$ilDB->quote($user_id,
"integer").
" AND ".
883 $ilDB->in(
"trigger_ref_id", $a_ref_id,
false,
"integer")
886 while ($rec = $ilDB->fetchAssoc($set))
888 if (!isset($completion[$user_id][$rec[
"trigger_ref_id"]]))
890 $completion[$user_id][$rec[
"trigger_ref_id"]] = $rec[
"status_date"];
892 else if ($rec[
"status_date"] < $completion[$user_id][$rec[
"trigger_ref_id"]])
894 $completion[$user_id][$rec[
"trigger_ref_id"]] = $rec[
"status_date"];
899 if (!isset($completion[$user_id][$ref_id]))
901 $completion[$user_id][
$ref_id] =
false;
919 die(
"ilBasicSkill::checkUserCertificateForTriggerRefId is deprecated.");
920 if (!is_array($a_ref_id))
922 $a_ref_id = array($a_ref_id);
924 if (!is_array($a_user_id))
926 $a_user_id = array($a_user_id);
928 $set = $ilDB->query($q =
"SELECT user_id, status_date, trigger_ref_id, level_id, skill_id FROM skl_user_has_level WHERE ".
929 $ilDB->in(
"user_id", $a_user_id,
false,
"integer").
" AND ".
930 $ilDB->in(
"trigger_ref_id", $a_ref_id,
false,
"integer")
933 $completion = array();
935 $completion = array();
936 while ($rec = $ilDB->fetchAssoc($set))
938 if (!isset($completion[$rec[
"user_id"]][$rec[
"trigger_ref_id"]])
941 $completion[$rec[
"user_id"]][$rec[
"trigger_ref_id"]] =
true;
947 foreach ($a_user_id as $user_id)
949 if (!isset($completion[$user_id][$ref_id]))
951 $completion[$user_id][
$ref_id] =
false;
968 die(
"ilBasicSkill::lookupLevelAchievementDate is deprecated.");
969 $set = $ilDB->query(
"SELECT user_id, status_date, trigger_ref_id, level_id, skill_id FROM skl_user_has_level WHERE ".
970 " user_id = ".$ilDB->quote($a_user_id,
"integer").
971 " AND user_id = ".$ilDB->quote($a_user_id,
"integer")
973 if ($rec = $ilDB->fetchAssoc($set))
975 return $rec[
"status_date"];
990 die(
"ilBasicSkill::getTriggerOfAllCertificates is deprecated.");
991 if (!is_array($a_user_id))
993 $a_user_id = array($a_user_id);
996 $set = $ilDB->query($q =
"SELECT user_id, status_date, trigger_ref_id, level_id, skill_id FROM skl_user_has_level WHERE ".
997 $ilDB->in(
"user_id", $a_user_id,
false,
"integer")
1000 $completion = array();
1002 while ($rec = $ilDB->fetchAssoc($set))
1004 if ((!is_array($completion[$rec[
"user_id"]]) || !in_array($rec[
"trigger_ref_id"], $completion[$rec[
"user_id"]]))
1007 if ($tree->isInTree($rec[
"trigger_ref_id"]))
1009 $completion[$rec[
"user_id"]][] = $rec[
"trigger_ref_id"];
1014 foreach ($a_user_id as $user_id)
1016 if (!is_array($completion[$user_id]))
1018 $completion[$user_id] = array();
1033 die(
"ilBasicSkill::getSkillLevelsForTrigger is deprecated.");
1034 $set = $ilDB->query($q =
"SELECT id FROM skl_level".
1035 " WHERE trigger_ref_id = ".$ilDB->quote($a_ref_id,
"integer"));
1037 $skill_levels = array();
1038 while ($rec = $ilDB->fetchAssoc($set))
1040 $skill_levels[] = $rec[
"id"];
1043 return $skill_levels;
1072 die(
"ilBasicSkill::getLevelTitleForCertificate is deprecated.");
1084 die(
"ilBasicSkill::getTriggerTitleForCertificate is deprecated.");
1108 $certificatefile = CLIENT_WEB_DIR.
"/certificates/skill/".
1109 ((int)$a_skill_id).
"/".((int) $a_skill_level_id).
"/certificate.xml";
1110 if (@file_exists($certificatefile))
1130 include_once(
"./Services/Skill/classes/class.ilSkillUsage.php");
1132 "skl_user_skill_level",
"user_id");
Get info on usages of skills.
getShortTitleForCertificate()
Get short title for certificate.
static updateSkillLevelsByTriggerRef($a_user_id, $a_ref_id)
Look for all skill level that have a trigger and update the user skill level information, if it has changed.
setType($a_type)
Set type.
getLevelData($a_id=0)
Get level data.
static lookupLevelTitle($a_id)
Lookup level title.
getLastLevelPerObject($a_tref_id, $a_object_id, $a_user_id=0, $a_self_eval=0)
Get last level set per object.
getSkillForLevelId($a_level_id)
Get skill for level id.
static lookupLevelTrigger($a_id)
Lookup level trigger.
static getTriggerOfAllCertificates($a_user_id, $a_self_eval=0)
Get trigger completion.
static _getMembershipByType($a_usr_id, $a_type, $a_only_member_role=false)
get membership by type Get course or group membership
getTriggerTitleForCertificate($a_level_id)
Get trigger title for certificate.
getMaxLevelNr()
Get maximum level nr.
static _lookupTitle($a_id)
lookup object title
static updateAllUserSkillLevels()
Look for all skill level that have a trigger and update the user skill level information, if it has changed.
getSelfEvaluation()
Get self evaluation.
static now()
Return current timestamp in Y-m-d H:i:s format.
lookupLevelsForTriggerRefId($a_ref_id)
Lookup levels for trigger.
deleteLevel($a_id)
Delete level.
getOrderNr()
Get order nr.
addLevel($a_title, $a_description)
Add new level.
getLevelTitleForCertificate($a_level_id)
Get title for certificate.
static getUsageInfo($a_cskill_ids, &$a_usages)
Get usage info.
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=0, $a_unique_identifier="")
Write skill level status.
static writeLevelProperty($a_id, $a_prop, $a_value, $a_type)
Write level property.
static writeLevelDescription($a_id, $a_description)
Write level description.
fixLevelNumbering()
Fix level numbering.
static isInTree($a_id)
Is id in tree?
lookupLevelAchievementDate($a_user_id, $a_level_id, $a_self_eval=0)
Lookup level achievement date.
read()
Read data from database.
static _lookupObjId($a_id)
static checkUserCertificateForTriggerRefId($a_user_id, $a_ref_id, $a_self_eval=0)
Get trigger completion.
static writeLevelTitle($a_id, $a_title)
Write level title.
getMaxLevelPerType($a_tref_id, $a_type, $a_user_id=0, $a_self_eval=0)
Get max levels per type.
static lookupLevelProperty($a_id, $a_prop)
Lookup level property.
static _lookupType($a_id, $a_reference=false)
lookup object type
static lookupLevelDescription($a_id)
Lookup level description.
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 writeLevelTrigger($a_id, $a_trigger_ref_id)
Write trigger.
static _lookupCertificate($a_skill_id, $a_skill_level_id)
Checks whether a skill level has a certificate or not.
getTitleForCertificate()
Get title for certificate.
getMaxLevelPerObject($a_tref_id, $a_object_id, $a_user_id=0, $a_self_eval=0)
Get max levels per object.
updateLevelOrder($order)
Update level order.
_hasUntrashedReference($a_obj_id)
checks wether an object has at least one reference that is not in trash
static getSkillLevelsForTrigger($a_ref_id)
Get assigned skill levels for trigger.
A node in the skill tree.
getAllHistoricLevelEntriesOfUser($a_tref_id, $a_user_id=0, $a_eval_by=0)
Get all historic level entries.
static _lookupCompletedForObject($a_obj_id, $a_user_ids=null)
Get completed users for object.
static lookupLevelSkillId($a_id)
Lookup level skill id.
__construct($a_id=0)
Constructor public.
static getCompletionDateForTriggerRefId($a_user_id, $a_ref_id=null, $a_self_eval=0)
Get trigger completion.
getLastUpdatePerObject($a_tref_id, $a_object_id, $a_user_id=0, $a_self_eval=0)
Get last update per object.
getAllLevelEntriesOfUser($a_tref_id, $a_user_id=0, $a_self_eval=0)
Get all level entries.