/** * Fill table row */ protected function fillRow($a_set) { global $lng; //var_dump($a_set); $this->tpl->setVariable("TYPE_INFO", ilSkillUsage::getTypeInfoString($a_set["type"])); $this->tpl->setVariable("NUMBER", count($a_set["usages"])); $this->tpl->setVariable("OBJ_TYPE", ilSkillUsage::getObjTypeString($a_set["type"])); }
/** * Get usage info * * @param * @return */ public static function getUsageInfo($a_cskill_ids, &$a_usages) { global $ilDB; include_once "./Services/Skill/classes/class.ilSkillUsage.php"; ilSkillUsage::getUsageInfoGeneric($a_cskill_ids, $a_usages, ilSkillUsage::USER_ASSIGNED, "skl_user_skill_level", "user_id"); }
/** * Get usage info * * @param * @return */ public static function getUsageInfo($a_cskill_ids, &$a_usages) { global $ilDB; include_once "./Services/Skill/classes/class.ilSkillUsage.php"; ilSkillUsage::getUsageInfoGeneric($a_cskill_ids, $a_usages, ilSkillUsage::RESOURCE, "skl_skill_resource", "rep_ref_id", "base_skill_id"); }
/** * confirm deletion screen of skill tree nodes */ function deleteNodes($a_gui) { global $lng, $tpl, $ilCtrl, $ilTabs, $ilToolbar; if (!isset($_POST["id"])) { $this->ilias->raiseError($this->lng->txt("no_checkbox"), $this->ilias->error_obj->MESSAGE); } $ilTabs->clearTargets(); // check usages $mode = ""; $cskill_ids = array(); foreach ($_POST["id"] as $id) { if (in_array(ilSkillTreeNode::_lookupType($id), array("skll", "scat", "sktr"))) { if ($mode == "templates") { $this->ilias->raiseError("Skill Deletion - type mismatch.", $this->ilias->error_obj->MESSAGE); } $mode = "basic"; $skill_id = $id; $tref_id = 0; if (ilSkillTreeNode::_lookupType($id) == "sktr") { include_once "./Services/Skill/classes/class.ilSkillTemplateReference.php"; $skill_id = ilSkillTemplateReference::_lookupTemplateId($id); $tref_id = $id; } $cskill_ids[] = array("skill_id" => $skill_id, "tref_id" => $tref_id); } if (in_array(ilSkillTreeNode::_lookupType($id), array("sktp", "sctp"))) { if ($mode == "basic") { $this->ilias->raiseError("Skill Deletion - type mismatch.", $this->ilias->error_obj->MESSAGE); } $mode = "templates"; foreach (ilSkillTemplateReference::_lookupTrefIdsForTemplateId($id) as $tref_id) { $cskill_ids[] = array("skill_id" => $id, "tref_id" => $tref_id); } } // for cats, skills and template references, get "real" usages // for skill and category templates check usage in references } if ($mode == "basic" || $mode == "templates") { include_once "./Services/Skill/classes/class.ilSkillUsage.php"; $u = new ilSkillUsage(); $usages = $u->getAllUsagesInfoOfSubtrees($cskill_ids); if (count($usages) > 0) { $html = ""; foreach ($usages as $k => $usage) { include_once "./Services/Skill/classes/class.ilSkillUsageTableGUI.php"; $tab = new ilSkillUsageTableGUI($this, "showUsage", $k, $usage); $html .= $tab->getHTML() . "<br/><br/>"; } $tpl->setContent($html); $ilToolbar->addButton($lng->txt("back"), $ilCtrl->getLinkTarget($a_gui, "cancelDelete")); ilUtil::sendFailure($lng->txt("skmg_cannot_delete_nodes_in_use")); return; } } else { $this->ilias->raiseError("Skill Deletion - type mismatch.", $this->ilias->error_obj->MESSAGE); } // SAVE POST VALUES $_SESSION["saved_post"] = $_POST["id"]; include_once "./Services/Utilities/classes/class.ilConfirmationGUI.php"; $confirmation_gui = new ilConfirmationGUI(); $ilCtrl->setParameter($a_gui, "tmpmode", $_GET["tmpmode"]); $a_form_action = $this->ctrl->getFormAction($a_gui); $confirmation_gui->setFormAction($a_form_action); $confirmation_gui->setHeaderText($this->lng->txt("info_delete_sure")); // Add items to delete include_once "./Services/Skill/classes/class.ilSkillTreeNodeFactory.php"; foreach ($_POST["id"] as $id) { if ($id != IL_FIRST_NODE) { $node_obj = ilSkillTreeNodeFactory::getInstance($id); $confirmation_gui->addItem("id[]", $node_obj->getId(), $node_obj->getTitle(), ilUtil::getImagePath("icon_" . $node_obj->getType() . ".svg")); } } $confirmation_gui->setCancel($lng->txt("cancel"), "cancelDelete"); $confirmation_gui->setConfirm($lng->txt("confirm"), "confirmedDelete"); $tpl->setContent($confirmation_gui->getHTML()); }
/** * Show skill usage */ function showUsage() { global $tpl; $this->setTabs("usage"); include_once "./Services/Skill/classes/class.ilSkillUsage.php"; $usage_info = new ilSkillUsage(); $base_skill_id = $this->base_skill_id > 0 ? $this->base_skill_id : $this->node_object->getId(); $usages = $usage_info->getAllUsagesInfoOfSubtree($base_skill_id . ":" . $this->tref_id); $html = ""; include_once "./Services/Skill/classes/class.ilSkillUsageTableGUI.php"; foreach ($usages as $k => $usage) { $tab = new ilSkillUsageTableGUI($this, "showUsage", $k, $usage); $html .= $tab->getHTML() . "<br/><br/>"; } $tpl->setContent($html); }
/** * Remove usages of skills * * This function checks, if the skills are really not in use anymore * @param array array of arrays with keys "skill_id" and "tref_id" */ function removeUsagesOfSkills($a_skills) { $used_skills = array(); foreach ($a_skills as $skill) { if ($this->isSkillAssignedToQuestion($skill["skill_id"], $skill["tref_id"])) { $used_skills[] = $skill["skill_id"] . ":" . $skill["tref_id"]; } } reset($a_skills); // now remove all usages that have been confirmed include_once "./Services/Skill/classes/class.ilSkillUsage.php"; //var_dump($a_skills); //var_dump($used_skills); exit; foreach ($a_skills as $skill) { if (!in_array($skill["skill_id"] . ":" . $skill["tref_id"], $used_skills)) { ilSkillUsage::setUsage($this->survey->getId(), $skill["skill_id"], $skill["tref_id"], false); } } }
/** * Get usage info * * @param * @return */ public static function getUsageInfo($a_cskill_ids, &$a_usages) { global $ilDB; include_once "./Services/Skill/classes/class.ilSkillUsage.php"; ilSkillUsage::getUsageInfoGeneric($a_cskill_ids, $a_usages, ilSkillUsage::PROFILE, "skl_profile_level", "profile_id", "base_skill_id"); }
/** * Get usage info * * @param array $a_cskill_ids skill ids * @param array $a_usages usages array */ public static function getUsageInfo($a_cskill_ids, &$a_usages) { global $ilDB; // material include_once "./Services/Skill/classes/class.ilSkillUsage.php"; ilSkillUsage::getUsageInfoGeneric($a_cskill_ids, $a_usages, ilSkillUsage::USER_MATERIAL, "skl_assigned_material", "user_id"); // self evaluations ilSkillUsage::getUsageInfoGeneric($a_cskill_ids, $a_usages, ilSkillUsage::SELF_EVAL, "skl_self_eval_level", "user_id"); // users that use the skills as personal skills $pskill_ids = array(); $tref_ids = array(); foreach ($a_cskill_ids as $cs) { if ($cs["tref_id"] > 0) { include_once "./Services/Skill/classes/class.ilSkillTemplateReference.php"; if (ilSkillTemplateReference::_lookupTemplateId($cs["tref_id"]) == $cs["skill_id"]) { $pskill_ids[$cs["tref_id"]] = $cs["tref_id"]; $tref_ids[(int) $cs["tref_id"]] = $cs["skill_id"]; } } else { $pskill_ids[$cs["skill_id"]] = $cs["skill_id"]; } } $set = $ilDB->query("SELECT skill_node_id, user_id FROM skl_personal_skill " . " WHERE " . $ilDB->in("skill_node_id", $pskill_ids, false, "integer") . " GROUP BY skill_node_id, user_id"); while ($rec = $ilDB->fetchAssoc($set)) { if (isset($tref_ids[(int) $rec["skill_node_id"]])) { $a_usages[$tref_ids[$rec["skill_node_id"]] . ":" . $rec["skill_node_id"]][ilSkillUsage::PERSONAL_SKILL][] = array("key" => $rec["user_id"]); } else { $a_usages[$rec["skill_node_id"] . ":0"][ilSkillUsage::PERSONAL_SKILL][] = array("key" => $rec["user_id"]); } } }