/**
  * 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;
 }
Пример #3
0
 /**
  * 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);
     }
 }