5 include_once(
"./Services/Skill/classes/class.ilSkillTree.php");
43 $this->title = $a_title;
63 $this->type = $a_type;
103 $this->self_eval = $a_val;
113 return $this->self_eval;
123 $this->order_nr = $a_val;
133 return $this->order_nr;
143 if(!isset($this->data_record))
145 $query =
"SELECT * FROM skl_tree_node WHERE obj_id = ".
146 $ilDB->quote($this->
id,
"integer");
147 $obj_set = $ilDB->query(
$query);
148 $this->data_record = $ilDB->fetchAssoc($obj_set);
150 $this->
setType($this->data_record[
"type"]);
151 $this->
setTitle($this->data_record[
"title"]);
152 $this->
setOrderNr($this->data_record[
"order_nr"]);
154 $this->
setDraft($this->data_record[
"draft"]);
162 $this->data_record = $a_record;
171 protected static function _lookup($a_obj_id, $a_field)
175 $query =
"SELECT $a_field FROM skl_tree_node WHERE obj_id = ".
176 $ilDB->quote($a_obj_id,
"integer");
177 $obj_set = $ilDB->query(
$query);
178 $obj_rec = $ilDB->fetchAssoc($obj_set);
180 return $obj_rec[$a_field];
232 $query =
"SELECT * FROM skl_tree_node WHERE obj_id = ".
233 $ilDB->quote($a_obj_id,
"integer");
234 $obj_set = $ilDB->query(
$query);
235 $obj_rec = $ilDB->fetchAssoc($obj_set);
237 return $obj_rec[
"type"];
247 $this->draft = $a_val;
270 $query =
"UPDATE skl_tree_node SET ".
271 " title = ".$ilDB->quote($a_title,
"text").
272 " WHERE obj_id = ".$ilDB->quote($a_obj_id,
"integer");
274 $ilDB->manipulate(
$query);
287 $query =
"UPDATE skl_tree_node SET ".
288 " order_nr = ".$ilDB->quote($a_nr,
"integer").
289 " WHERE obj_id = ".$ilDB->quote($a_obj_id,
"integer");
290 $ilDB->manipulate(
$query);
303 $id = $ilDB->nextId(
"skl_tree_node");
304 $query =
"INSERT INTO skl_tree_node (obj_id, title, type, create_date, self_eval, order_nr, draft) ".
306 $ilDB->quote(
$id,
"integer").
",".
307 $ilDB->quote($this->
getTitle(),
"text").
",".
308 $ilDB->quote($this->
getType(),
"text").
", ".
311 $ilDB->quote((
int) $this->
getOrderNr(),
"integer").
", ".
312 $ilDB->quote((
int) $this->
getDraft(),
"integer").
314 $ilDB->manipulate(
$query);
325 $query =
"UPDATE skl_tree_node SET ".
326 " title = ".$ilDB->quote($this->
getTitle(),
"text").
328 " ,order_nr = ".$ilDB->quote((
int) $this->
getOrderNr(),
"integer").
329 " ,draft = ".$ilDB->quote((
int) $this->
getDraft(),
"integer").
330 " WHERE obj_id = ".$ilDB->quote($this->
getId(),
"integer");
332 $ilDB->manipulate(
$query);
342 $query =
"DELETE FROM skl_tree_node WHERE obj_id= ".
343 $ilDB->quote($this->
getId(),
"integer");
344 $ilDB->manipulate(
$query);
350 static function putInTree($a_obj, $a_parent_id =
"", $a_target_node_id =
"")
355 $parent_id = ($a_parent_id !=
"")
357 : $skill_tree->getRootId();
362 "skrt" => array(
"skll",
"scat",
"sktr",
"sktp",
"sctp"),
363 "scat" => array(
"skll",
"scat",
"sktr"),
364 "sctp" => array(
"sktp",
"sctp"));
366 if (!is_array($allowed[$par_type]) ||
367 !in_array($a_obj->getType(), $allowed[$par_type]))
373 if ($a_target_node_id !=
"")
375 $target = $a_target_node_id;
380 $childs = $skill_tree->getChilds($parent_id);
382 if (count($childs) == 0)
388 $target = $childs[count($childs) - 1][
"obj_id"];
392 if ($skill_tree->isInTree($parent_id) && !$skill_tree->isInTree($a_obj->getId()))
394 $skill_tree->insertNode($a_obj->getId(), $parent_id, $target);
418 if (is_array($a_items))
420 foreach($a_items as $item)
427 if (count($types) > 1)
440 include_once(
"./Services/Skill/classes/class.ilSkillTree.php");
443 if (!is_array($a_ids))
450 foreach($a_ids as
$id)
452 $path = $tree->getPathId($id);
454 foreach(
$path as $path_id)
456 if ($path_id != $id && in_array($path_id, $a_ids))
473 foreach ($cut_ids as
$id)
475 $curnode = $tree->getNodeData($id);
476 if ($tree->isInTree($id))
478 $tree->deleteTree($curnode);
493 include_once(
"./Services/Skill/classes/class.ilSkillTree.php");
497 $time = date(
"Y-m-d H:i:s", time());
498 foreach ($a_ids as
$id)
501 if ($tree->isInTree($id))
503 $curnode = $tree->getNodeData($id);
504 $subnodes = $tree->getSubTree($curnode);
505 foreach($subnodes as $subnode)
507 if ($subnode[
"child"] != $id)
509 $ilUser->addObjectToClipboard($subnode[
"child"],
510 $subnode[
"type"], $subnode[
"title"],
511 $subnode[
"parent"], $time, $subnode[
"lft"]);
515 $order = ($curnode[
"lft"] > 0)
517 : (
int) ($order + 1);
518 $ilUser->addObjectToClipboard($id,
533 include_once(
"./Modules/LearningModule/classes/class.ilEditClipboard.php");
535 include_once(
"./Services/Skill/classes/class.ilSkillTree.php");
538 $parent_id = $a_obj_id;
542 $skills = $ilUser->getClipboardObjects($a_type);
543 $copied_nodes = array();
544 foreach ($skills as $skill)
547 if(!in_array($skill[
"id"], array_keys($copied_nodes)))
550 $skill[
"insert_time"], $copied_nodes,
562 in_array($a_type, array(
"sktp",
"sctp")));
564 return $copied_nodes;
577 $ilUser->clipboardDeleteObjectsOfType(
"skll");
578 $ilUser->clipboardDeleteObjectsOfType(
"scat");
579 $ilUser->clipboardDeleteObjectsOfType(
"sktr");
580 $ilUser->clipboardDeleteObjectsOfType(
"sktp");
581 $ilUser->clipboardDeleteObjectsOfType(
"sctp");
582 include_once(
"./Modules/LearningModule/classes/class.ilEditClipboard.php");
590 static function pasteTree($a_item_id, $a_parent_id, $a_target, $a_insert_time,
591 &$a_copied_nodes, $a_as_copy =
false, $a_add_suffix =
false)
597 if ($item_type ==
"scat")
599 include_once(
"./Services/Skill/classes/class.ilSkillCategory.php");
602 else if ($item_type ==
"skll")
604 include_once(
"./Services/Skill/classes/class.ilBasicSkill.php");
607 else if ($item_type ==
"sktr")
609 include_once(
"./Services/Skill/classes/class.ilSkillTemplateReference.php");
612 else if ($item_type ==
"sktp")
614 include_once(
"./Services/Skill/classes/class.ilBasicSkillTemplate.php");
617 else if ($item_type ==
"sctp")
619 include_once(
"./Services/Skill/classes/class.ilSkillTemplateCategory.php");
623 $ilLog->write(
"Getting from clipboard type ".$item_type.
", ".
624 "Item ID: ".$a_item_id);
628 $target_item = $item->copy();
631 $target_item->setTitle($target_item->getTitle().
" ".$lng->txt(
"copy_of_suffix"));
632 $target_item->update();
634 $a_copied_nodes[$item->getId()] = $target_item->getId();
638 $target_item = $item;
641 $ilLog->write(
"Putting into skill tree type ".$target_item->getType().
642 "Item ID: ".$target_item->getId().
", Parent: ".$a_parent_id.
", ".
643 "Target: ".$a_target);
647 $childs = $ilUser->getClipboardChilds($item->getId(), $a_insert_time);
649 foreach($childs as $child)
652 IL_LAST_NODE, $a_insert_time, $a_copied_nodes, $a_as_copy);
655 return $target_item->getId();
667 if ($skill_tree->isInTree($a_id))
684 $set = $ilDB->query(
"SELECT obj_id, title FROM skl_tree_node WHERE ".
685 " self_eval = ".$ilDB->quote(
true,
"integer").
" ORDER BY TITLE "
688 while ($rec = $ilDB->fetchAssoc($set))
690 $nodes[$rec[
"obj_id"]] = $rec[
"title"];
704 $childs = $tr->getChildsByTypeFilter($tr->getRootId(), array(
"sktp",
"sctp"));
719 $set = $ilDB->query(
"SELECT * FROM skl_tree_node ".
720 " WHERE self_eval = ".$ilDB->quote(1,
"integer")
723 $sel_skills = array();
724 while ($rec = $ilDB->fetchAssoc($set))
726 $sel_skills[] = $rec;
744 include_once(
"./Services/Skill/classes/class.ilSkillTemplateReference.php");
745 include_once(
"./Services/Skill/classes/class.ilSkillTree.php");
748 if ($stree->isInTree($a_node_id))
750 $cnode = $stree->getNodeData($a_node_id);
753 if ($cnode[
"type"] ==
"skll" || !$a_only_basic)
755 $skills[] = array(
"id" => $a_node_id,
756 "type" => $cnode[
"type"],
"parent" => $cnode[
"parent"],
761 if ($cnode[
"type"] ==
"sktr")
764 if ($tr_ref->getSkillTemplateId() > 0)
766 $cnode2 = $stree->getNodeData($tr_ref->getSkillTemplateId());
767 if ($cnode2[
"child"] > 0)
769 $childs2 = $stree->getSubTree($cnode2);
770 foreach ($childs2 as $child2)
773 if ($child2[
"type"] ==
"sktp" || !$a_only_basic)
775 $par = ($tr_ref->getSkillTemplateId() == $child2[
"child"])
778 $skills[] = array(
"id" => $child2[
"child"],
779 "type" => $child2[
"type"],
"parent" => $par,
780 "tref" => $cnode[
"child"]);
788 $childs = $stree->getSubTree($cnode);
789 foreach ($childs as $child)
792 if($child[
"child"] == $cnode[
"child"])
798 if ($child[
"type"] ==
"skll" || !$a_only_basic)
800 $skills[] = array(
"id" => $child[
"child"],
801 "type" => $child[
"type"],
"parent" => $child[
"parent"],
806 if ($child[
"type"] ==
"sktr")
809 $cnode2 = $stree->getNodeData($tr_ref->getSkillTemplateId());
810 if ($tr_ref->getSkillTemplateId() > 0)
812 if ($cnode2[
"child"] > 0)
814 $childs2 = $stree->getSubTree($cnode2);
815 foreach ($childs2 as $child2)
817 $par = ($tr_ref->getSkillTemplateId() == $child2[
"child"])
821 if ($child2[
"type"] ==
"sktp" || !$a_only_basic)
823 $skills[] = array(
"id" => $child2[
"child"],
824 "type" => $child2[
"type"],
"parent" => $par,
825 "tref" => $child[
"child"]);
847 include_once(
"./Services/Skill/classes/class.ilSkillTree.php");
850 if ($a_par_id != $skill_tree->readRootId())
852 $childs = $skill_tree->getChilds($a_par_id);
858 $childs = $skill_tree->getChildsByTypeFilter($a_par_id,
859 array(
"skrt",
"sktp",
"sctp"));
863 $childs = $skill_tree->getChildsByTypeFilter($a_par_id,
864 array(
"skrt",
"skll",
"scat",
"sktr"));
868 foreach ($childs as $k => $c)
870 if (isset($a_childs_order[$c[
"child"]]))
872 $childs[$k][
"order_nr"] = (int) $a_childs_order[$c[
"child"]];
879 foreach ($childs as $c)
892 function getIconPath($a_obj_id, $a_type, $a_size =
"", $a_draft =
false)
898 $a_name =
"icon_".$a_type.$a_size.$off.
".png";
899 if ($a_type ==
"sktr")
901 include_once(
"./Services/Skill/classes/class.ilSkillTemplateReference.php");
906 $a_name =
"icon_sctr".$a_size.$off.
".png";
909 $vers =
"vers=".str_replace(array(
".",
" "),
"-",
ILIAS_VERSION);