/** * Get basic skills under node * * @param * @return */ static function getSkillTreeNodes($a_node_id, $a_only_basic = false) { $skills = array(); if ($a_node_id > 0) { include_once "./Services/Skill/classes/class.ilSkillTemplateReference.php"; include_once "./Services/Skill/classes/class.ilSkillTree.php"; $stree = new ilSkillTree(); if ($stree->isInTree($a_node_id)) { $cnode = $stree->getNodeData($a_node_id); // is node basic skill? if ($cnode["type"] == "skll" || !$a_only_basic) { $skills[] = array("id" => $a_node_id, "type" => $cnode["type"], "parent" => $cnode["parent"], "tref" => 0); } // is node skill template reference? if ($cnode["type"] == "sktr") { $tr_ref = new ilSkillTemplateReference($cnode["child"]); if ($tr_ref->getSkillTemplateId() > 0) { $cnode2 = $stree->getNodeData($tr_ref->getSkillTemplateId()); if ($cnode2["child"] > 0) { $childs2 = $stree->getSubTree($cnode2); foreach ($childs2 as $child2) { // find basic skills templates if ($child2["type"] == "sktp" || !$a_only_basic) { $par = $tr_ref->getSkillTemplateId() == $child2["child"] ? $cnode["child"] : $child2["parent"]; $skills[] = array("id" => $child2["child"], "type" => $child2["type"], "parent" => $par, "tref" => $cnode["child"]); } } } } } else { $childs = $stree->getSubTree($cnode); foreach ($childs as $child) { // getSubTree($cnode) will also return $cnode if ($child["child"] == $cnode["child"]) { continue; } // find basic skills if ($child["type"] == "skll" || !$a_only_basic) { $skills[] = array("id" => $child["child"], "type" => $child["type"], "parent" => $child["parent"], "tref" => 0); } // handle template references if ($child["type"] == "sktr") { $tr_ref = new ilSkillTemplateReference($child["child"]); $cnode2 = $stree->getNodeData($tr_ref->getSkillTemplateId()); if ($tr_ref->getSkillTemplateId() > 0) { if ($cnode2["child"] > 0) { $childs2 = $stree->getSubTree($cnode2); foreach ($childs2 as $child2) { $par = $tr_ref->getSkillTemplateId() == $child2["child"] ? $cnode2["child"] : $child2["parent"]; // find basic skills templates if ($child2["type"] == "sktp" || !$a_only_basic) { $skills[] = array("id" => $child2["child"], "type" => $child2["type"], "parent" => $par, "tref" => $child["child"]); } } } } } } } } } //var_dump($skills); return $skills; }
/** * Determine steps * * @param * @return */ static function determineSteps($a_sn_id) { $steps = array(); if ($a_sn_id > 0) { include_once "./Services/Skill/classes/class.ilSkillTree.php"; include_once "./Services/Skill/classes/class.ilSkillSelfEvalSkillTableGUI.php"; $stree = new ilSkillTree(); if ($stree->isInTree($a_sn_id)) { $cnode = $stree->getNodeData($a_sn_id); $childs = $stree->getSubTree($cnode); foreach ($childs as $child) { if ($child["type"] == "skll") { $steps[] = $child["child"]; } } } } return $steps; }
/** * Copy a set of skills/skill categories into the clipboard */ static function clipboardCopy($a_tree_id, $a_ids) { global $ilUser; self::clearClipboard(); include_once "./Services/Skill/classes/class.ilSkillTree.php"; $tree = new ilSkillTree(); // put them into the clipboard $time = date("Y-m-d H:i:s", time()); foreach ($a_ids as $id) { $curnode = ""; if ($tree->isInTree($id)) { $curnode = $tree->getNodeData($id); $subnodes = $tree->getSubTree($curnode); foreach ($subnodes as $subnode) { if ($subnode["child"] != $id) { $ilUser->addObjectToClipboard($subnode["child"], $subnode["type"], $subnode["title"], $subnode["parent"], $time, $subnode["lft"]); } } } $order = $curnode["lft"] > 0 ? $curnode["lft"] : (int) ($order + 1); $ilUser->addObjectToClipboard($id, ilSkillTreeNode::_lookupType($id), ilSkillTreeNode::_lookupTitle($id), 0, $time, $order); } }