/**
  * 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);
 }