static function getInstance($a_id = 0)
 {
     global $ilias, $ilDB;
     $query = "SELECT * FROM skl_tree_node WHERE obj_id = " . $ilDB->quote($a_id, "integer");
     $obj_set = $ilDB->query($query);
     $obj_rec = $ilDB->fetchAssoc($obj_set);
     $obj = null;
     switch ($obj_rec["type"]) {
         case "skll":
             $obj = new ilBasicSkill();
             $obj->setId($obj_rec["obj_id"]);
             $obj->setDataRecord($obj_rec);
             $obj->read();
             break;
         case "scat":
             $obj = new ilSkillCategory();
             $obj->setId($obj_rec["obj_id"]);
             $obj->setDataRecord($obj_rec);
             $obj->read();
             break;
         case "sktp":
             $obj = new ilBasicSkillTemplate();
             $obj->setId($obj_rec["obj_id"]);
             $obj->setDataRecord($obj_rec);
             $obj->read();
             break;
         case "sctp":
             $obj = new ilSkillTemplateCategory();
             $obj->setId($obj_rec["obj_id"]);
             $obj->setDataRecord($obj_rec);
             $obj->read();
             break;
         case "skrt":
             $obj = new ilSkillRoot();
             $obj->setId($obj_rec["obj_id"]);
             $obj->setDataRecord($obj_rec);
             $obj->read();
             break;
         case "sktr":
             $obj = new ilSkillTemplateReference();
             $obj->setId($obj_rec["obj_id"]);
             $obj->setDataRecord($obj_rec);
             $obj->read();
             break;
     }
     return $obj;
 }
 /**
  * Copy skill category
  */
 function copy()
 {
     $sctp = new ilSkillTemplateCategory();
     $sctp->setTitle($this->getTitle());
     $sctp->setType($this->getType());
     $sctp->setOrderNr($this->getOrderNr());
     $sctp->create();
     return $sctp;
 }
 /**
  * Save item
  */
 function saveItem()
 {
     $it = new ilSkillTemplateCategory();
     $it->setTitle($this->form->getInput("title"));
     $it->setOrderNr($this->form->getInput("order_nr"));
     $it->create();
     ilSkillTreeNode::putInTree($it, (int) $_GET["obj_id"], IL_LAST_NODE);
 }
 /**
  * Insert one or multiple skill template categories
  */
 function insertSkillTemplateCategory()
 {
     global $ilCtrl, $lng;
     include_once "./Services/Skill/classes/class.ilSkillHFormGUI.php";
     include_once "./Services/Skill/classes/class.ilSkillTreeNode.php";
     $num = ilSkillHFormGUI::getPostMulti();
     $node_id = ilSkillHFormGUI::getPostNodeId();
     if (!ilSkillHFormGUI::getPostFirstChild()) {
         $parent_id = $this->skill_tree->getParentId($node_id);
         $target = $node_id;
     } else {
         $parent_id = $node_id;
         $target = IL_FIRST_NODE;
     }
     include_once "./Services/Skill/classes/class.ilSkillTemplateCategory.php";
     $skill_ids = array();
     for ($i = 1; $i <= $num; $i++) {
         $skill = new ilSkillTemplateCategory();
         $skill->setTitle($lng->txt("skmg_new_skill_template_category"));
         $skill->create();
         ilSkillTreeNode::putInTree($skill, $parent_id, $target);
         $skill_ids[] = $skill->getId();
     }
     $skill_ids = array_reverse($skill_ids);
     $skill_ids = implode($skill_ids, ":");
     $ilCtrl->setParameter($this, "highlight", $skill_ids);
     $ilCtrl->redirect($this, "editSkillTemplates", "node_" . $node_id);
 }
 /**
  * Paste item (tree) from clipboard to skill tree
  */
 static function pasteTree($a_item_id, $a_parent_id, $a_target, $a_insert_time, &$a_copied_nodes, $a_as_copy = false, $a_add_suffix = false)
 {
     global $ilUser, $ilias, $ilLog, $lng;
     $item_type = ilSkillTreeNode::_lookupType($a_item_id);
     if ($item_type == "scat") {
         include_once "./Services/Skill/classes/class.ilSkillCategory.php";
         $item = new ilSkillCategory($a_item_id);
     } else {
         if ($item_type == "skll") {
             include_once "./Services/Skill/classes/class.ilBasicSkill.php";
             $item = new ilBasicSkill($a_item_id);
         } else {
             if ($item_type == "sktr") {
                 include_once "./Services/Skill/classes/class.ilSkillTemplateReference.php";
                 $item = new ilSkillTemplateReference($a_item_id);
             } else {
                 if ($item_type == "sktp") {
                     include_once "./Services/Skill/classes/class.ilBasicSkillTemplate.php";
                     $item = new ilBasicSkillTemplate($a_item_id);
                 } else {
                     if ($item_type == "sctp") {
                         include_once "./Services/Skill/classes/class.ilSkillTemplateCategory.php";
                         $item = new ilSkillTemplateCategory($a_item_id);
                     }
                 }
             }
         }
     }
     $ilLog->write("Getting from clipboard type " . $item_type . ", " . "Item ID: " . $a_item_id);
     if ($a_as_copy) {
         $target_item = $item->copy();
         if ($a_add_suffix) {
             $target_item->setTitle($target_item->getTitle() . " " . $lng->txt("copy_of_suffix"));
             $target_item->update();
         }
         $a_copied_nodes[$item->getId()] = $target_item->getId();
     } else {
         $target_item = $item;
     }
     $ilLog->write("Putting into skill tree type " . $target_item->getType() . "Item ID: " . $target_item->getId() . ", Parent: " . $a_parent_id . ", " . "Target: " . $a_target);
     ilSkillTreeNode::putInTree($target_item, $a_parent_id, $a_target);
     $childs = $ilUser->getClipboardChilds($item->getId(), $a_insert_time);
     foreach ($childs as $child) {
         ilSkillTreeNode::pasteTree($child["id"], $target_item->getId(), IL_LAST_NODE, $a_insert_time, $a_copied_nodes, $a_as_copy);
     }
     return $target_item->getId();
 }