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; }