/** * Read and parse collection items * @return void */ protected function parseCollection() { $hasGroupedItems = false; $this->collections = new ilLPCollections(ilObject::_lookupObjId($this->getNode())); $items = ilLPCollections::_getPossibleItems($this->getNode(), $this->getCollection()); $data = array(); $done = array(); foreach ($items as $item) { if (in_array($item, $done)) { continue; } $tmp = $this->parseCollectionItem($item); $tmp['grouped'] = array(); if ($this->getMode() == LP_MODE_COLLECTION) { $grouped_items = ilLPCollections::lookupGroupedItems(ilObject::_lookupObjId($this->getNode()), $item); if (count((array) $grouped_items['items']) > 1) { foreach ($grouped_items['items'] as $gr) { if ($gr == $item) { continue; } $tmp['grouped'][] = $this->parseCollectionItem($gr); $tmp['num_obligatory'] = $grouped_items['num_obligatory']; $tmp['grouping_id'] = $grouped_items['grouping_id']; $hasGroupedItems = true; $done[] = $gr; } } } $data[] = $tmp; } if ($hasGroupedItems) { $this->addCommandButton('saveObligatoryMaterials', $this->lng->txt('trac_group_materials_save')); } $this->setData((array) $data); }