36 protected $classes = array(
"ilBasicSkill",
"ilPersonalSkill",
"ilSkillProfile",
"ilSkillResources",
"ilSkillUsage");
46 public static function setUsage($a_obj_id, $a_skill_id, $a_tref_id, $a_use =
true)
50 $ilDB = $DIC->database();
56 "obj_id" => array(
"integer", $a_obj_id),
57 "skill_id" => array(
"integer", $a_skill_id),
58 "tref_id" => array(
"integer", $a_tref_id)
64 $q =
"DELETE FROM skl_usage WHERE " .
65 " obj_id = " .
$ilDB->quote($a_obj_id,
"integer") .
66 " AND skill_id = " .
$ilDB->quote($a_skill_id,
"integer") .
67 " AND tref_id = " .
$ilDB->quote($a_tref_id,
"integer")
77 $ilDB = $DIC->database();
80 $q =
"DELETE FROM skl_usage WHERE " .
81 " obj_id = " .
$ilDB->quote($a_obj_id,
"integer")
92 public static function getUsages($a_skill_id, $a_tref_id)
96 $ilDB = $DIC->database();
99 "SELECT obj_id FROM skl_usage " .
100 " WHERE skill_id = " .
$ilDB->quote($a_skill_id,
"integer") .
101 " AND tref_id = " .
$ilDB->quote($a_tref_id,
"integer")
104 while ($rec =
$ilDB->fetchAssoc($set)) {
105 $obj_ids[] = $rec[
"obj_id"];
121 $ilDB = $DIC->database();
123 self::getUsageInfoGeneric(
144 $a_skill_field =
"skill_id",
145 $a_tref_field =
"tref_id" 149 $ilDB = $DIC->database();
151 if (count($a_cskill_ids) == 0) {
156 $q =
"SELECT " . $a_key_field .
", " . $a_skill_field .
", " . $a_tref_field .
" FROM " . $a_table .
" ";
157 foreach ($a_cskill_ids as $sk) {
158 $q .= $w .
" (" . $a_skill_field .
" = " .
$ilDB->quote($sk[
"skill_id"],
"integer") .
159 " AND " . $a_tref_field .
" = " .
$ilDB->quote($sk[
"tref_id"],
"integer") .
") ";
162 $q .=
" GROUP BY " . $a_key_field .
", " . $a_skill_field .
", " . $a_tref_field;
164 $set =
$ilDB->query($q);
165 while ($rec =
$ilDB->fetchAssoc($set)) {
166 $a_usages[$rec[$a_skill_field] .
":" . $rec[$a_tref_field]][$a_usage_type][] =
167 array(
"key" => $rec[$a_key_field]);
184 $class::getUsageInfo($a_cskill_ids, $usages);
200 $nodes = $vtree->getSubTreeForCSkillId($a_skill_id .
":" . $a_tref_id);
216 foreach ($a_cskill_ids as $s) {
217 $nodes = $vtree->getSubTreeForCSkillId($s[
"skill_id"] .
":" . $s[
"tref_id"]);
218 foreach ($nodes as
$n) {
235 $skill_logger->debug(
"ilSkillUsage: getAllUsagesOfTemplate(" . $a_tempate_id .
")");
241 $cskill_ids = array();
242 foreach ($trefs as $tref) {
243 $cskill_ids[] = array(
"skill_id" => $a_tempate_id,
"tref_id" => $tref);
244 $skill_logger->debug(
"ilSkillUsage: ... skill_id: " . $a_tempate_id .
", tref_id: " . $tref .
".");
247 $skill_logger->debug(
"ilSkillUsage: ... count cskill_ids: " . count($cskill_ids) .
".");
262 $lng = $DIC->language();
264 return $lng->txt(
"skmg_usage_type_info_" . $a_type);
277 $lng = $DIC->language();
280 case self::TYPE_GENERAL:
282 return $lng->txt(
"skmg_usage_obj_objects");
285 case self::USER_ASSIGNED:
286 case self::PERSONAL_SKILL:
287 case self::USER_MATERIAL:
288 case self::SELF_EVAL:
289 return $lng->txt(
"skmg_usage_obj_users");
293 return $lng->txt(
"skmg_usage_obj_profiles");
297 return $lng->txt(
"skmg_usage_type_info_" . $a_type);
308 $objects = self::getUsages($a_skill_id, $a_tref_id);
320 $obj_usages = array_column($usages,
"gen");
321 foreach ($obj_usages as $obj) {
322 $objects[
"objects"] = array_column($obj,
"key");
325 return $objects[
"objects"];
335 $skills = $profile->getSkillLevels();
339 foreach ($skills as $skill) {
340 $obj_usages = self::getUsages($skill[
"base_skill_id"], $skill[
"tref_id"]);
341 foreach ($obj_usages as $id) {
342 if (!in_array($id, $objects)) {
349 $roles = $profile->getAssignedRoles();
350 foreach ($roles as $role) {
351 if (($role[
"object_type"] ==
"crs" || $role[
"object_type"] ==
"grp")
352 && !in_array($role[
"object_id"], $objects)) {
353 $objects[] = $role[
"object_id"];
Get info on usages of skills.
getAllUsagesInfoOfSubtrees($a_cskill_ids)
Get all usages info of subtree.
getAssignedObjectsForSkill(int $a_skill_id, int $a_tref_id)
getAllUsagesInfoOfSubtree($a_skill_id, $a_tref_id=0)
Get all usages info of subtree.
static _lookupTrefIdsForTemplateId($a_tid)
Get all tref ids for a template id.
getAllUsagesInfo($a_cskill_ids)
Get all usages info.
static getObjTypeString($a_type)
Get type info string.
getAllUsagesOfTemplate($a_tempate_id)
Get all usages of template.
static setUsage($a_obj_id, $a_skill_id, $a_tref_id, $a_use=true)
Set usage.
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 getUsageInfo($a_cskill_ids, &$a_usages)
Get usage info.
getAssignedObjectsForSkillTemplate(int $a_template_id)
static getTypeInfoString($a_type)
Get type info string.
getAssignedObjectsForSkillProfile(int $a_profile_id)
static getLogger($a_component_id)
Get component logger.
static removeUsagesFromObject($a_obj_id)
static getUsages($a_skill_id, $a_tref_id)
Get usages.