/** * Get Options. * * @return array Options. Array ("value" => "option_text") */ function getOptions() { global $lng; if ($this->include_please_select) { $options = array("" => $lng->txt("please_select")); } include_once "./Services/Taxonomy/classes/class.ilTaxonomyTree.php"; $tax_tree = new ilTaxonomyTree($this->getTaxonomyId()); $nodes = $tax_tree->getSubtree($tax_tree->getNodeData($tax_tree->readRootId())); foreach ($nodes as $n) { if ($n["type"] == "taxn") { $options[$n["child"]] = str_repeat(" ", ($n["depth"] - 2) * 2) . $n["title"]; } } return $options; }
/** * Get tree html * * @param * @return */ static function getTreeHTML($a_tax_id, $a_class, $a_cmd, $a_root_node_title = "") { global $ilUser, $tpl, $ilCtrl, $lng; $lng->loadLanguageModule("tax"); include_once "./Services/Taxonomy/classes/class.ilTaxonomyTree.php"; require_once "./Services/Taxonomy/classes/class.ilTaxonomyExplorer.php"; $a_tax_tree = new ilTaxonomyTree($a_tax_id); $exp = new ilTaxonomyExplorer($ilCtrl->getLinkTargetByClass($a_class, $a_cmd), $a_tax_tree, $a_class, $a_cmd); $exp->setTargetGet("tax_node"); if ($a_root_node_title != "") { $exp->setRootNodeTitle($a_root_node_title); } $exp->setExpandTarget($ilCtrl->getLinkTargetByClass($a_class, $a_cmd)); if ($_GET["txexpand"] == "") { $expanded = $a_tax_tree->readRootId(); } else { $expanded = $_GET["txexpand"]; } if ($_GET["tax_node"] > 0) { $path = $a_tax_tree->getPathId($_GET["tax_node"]); $exp->setForceOpenPath($path); $exp->highlightNode($_GET["tax_node"]); } else { $exp->highlightNode($a_tax_tree->readRootId()); } $exp->setExpand($expanded); // build html-output $exp->setOutput(0); $output = $exp->getOutput(); return $output; }
/** * Get all assigned items under a node * * @param * @return */ static function getSubTreeItems($a_comp, $a_obj_id, $a_item_type, $a_tax_id, $a_node) { include_once "./Services/Taxonomy/classes/class.ilTaxonomyTree.php"; $tree = new ilTaxonomyTree($a_tax_id); $sub_nodes = $tree->getSubTreeIds($a_node); $sub_nodes[] = $a_node; include_once "./Services/Taxonomy/classes/class.ilTaxNodeAssignment.php"; $tn_ass = new ilTaxNodeAssignment($a_comp, $a_obj_id, $a_item_type, $a_tax_id); $items = $tn_ass->getAssignmentsOfNode($sub_nodes); return $items; }
private function getTaxonomyFilterExpressions() { $expressions = array(); require_once 'Services/Taxonomy/classes/class.ilTaxonomyTree.php'; require_once 'Services/Taxonomy/classes/class.ilTaxNodeAssignment.php'; foreach ($this->getTaxonomyFilters() as $taxId => $taxNodes) { $questionIds = array(); $forceBypass = true; foreach ($taxNodes as $taxNode) { $forceBypass = false; $taxTree = new ilTaxonomyTree($taxId); $taxNodeAssignment = new ilTaxNodeAssignment('tst', $this->getTestObjId(), 'quest', $taxId); $subNodes = $taxTree->getSubTreeIds($taxNode); $subNodes[] = $taxNode; $taxItems = $taxNodeAssignment->getAssignmentsOfNode($subNodes); foreach ($taxItems as $taxItem) { $questionIds[$taxItem['item_id']] = $taxItem['item_id']; } } if (!$forceBypass) { $expressions[] = $this->db->in('question_id', $questionIds, false, 'integer'); } } return $expressions; }
private function loadTaxonomyAssignmentData($parentObjId, $questionId) { $taxAssignmentData = array(); foreach ($this->getAvailableTaxonomyIds() as $taxId) { require_once 'Services/Taxonomy/classes/class.ilTaxonomyTree.php'; require_once 'Services/Taxonomy/classes/class.ilTaxNodeAssignment.php'; $taxTree = new ilTaxonomyTree($taxId); $taxAssignment = new ilTaxNodeAssignment('qpl', $parentObjId, 'quest', $taxId); $assignments = $taxAssignment->getAssignmentsOfItem($questionId); foreach ($assignments as $assData) { if (!isset($taxAssignmentData[$assData['tax_id']])) { $taxAssignmentData[$assData['tax_id']] = array(); } $nodeData = $taxTree->getNodeData($assData['node_id']); $assData['node_lft'] = $nodeData['lft']; $taxAssignmentData[$assData['tax_id']][$assData['node_id']] = $assData; } } return $taxAssignmentData; }
/** * Fix order numbers * * @param * @return */ static function fixOrderNumbers($a_tax_id, $a_parent_id) { include_once "./Services/Taxonomy/classes/class.ilTaxonomyTree.php"; $tax_tree = new ilTaxonomyTree($a_tax_id); if ($a_parent_id == 0) { $a_parent_id = $tax_tree->readRootId(); } $childs = $tax_tree->getChilds($a_parent_id); $childs = ilUtil::sortArray($childs, "order_nr", "asc", false); $cnt = 10; foreach ($childs as $c) { self::writeOrderNr($c["child"], $cnt); $cnt += 10; } }
public function getFilteredObjects() { include_once "Services/Taxonomy/classes/class.ilTaxonomyTree.php"; include_once "Services/Taxonomy/classes/class.ilTaxNodeAssignment.php"; include_once "Services/Taxonomy/classes/class.ilTaxonomyNode.php"; $tax_obj_ids = $tax_map = array(); // :TODO: this could be smarter foreach ($this->selection as $node_id) { $node = new ilTaxonomyNode($node_id); $tax_map[$node->getTaxonomyId()][] = $node_id; } foreach ($tax_map as $tax_id => $node_ids) { $tax_tree = new ilTaxonomyTree($tax_id); // combine taxonomy nodes OR $tax_nodes = array(); foreach ($node_ids as $node_id) { $tax_nodes = array_merge($tax_nodes, $tax_tree->getSubTreeIds($node_id)); $tax_nodes[] = $node_id; } $tax_obj_ids[$tax_id] = ilTaxNodeAssignment::findObjectsByNode($tax_id, $tax_nodes, "obj"); } // combine taxonomies AND $obj_ids = null; foreach ($tax_obj_ids as $tax_objs) { if ($obj_ids === null) { $obj_ids = $tax_objs; } else { $obj_ids = array_intersect($obj_ids, $tax_objs); } } return (array) $obj_ids; }