protected function getItems($a_content_obj)
 {
     $items = ilObjCourseGrouping::_getVisibleGroupings($a_content_obj->getId());
     $data = array();
     foreach ($items as $grouping_id) {
         $tmp_obj = new ilObjCourseGrouping($grouping_id);
         $data[$grouping_id]['id'] = $grouping_id;
         $data[$grouping_id]['title'] = $tmp_obj->getTitle();
         $data[$grouping_id]['unique'] = $this->lng->txt($tmp_obj->getUniqueField());
         // Description
         if (strlen($tmp_obj->getDescription())) {
             $data[$grouping_id]['description'] = $tmp_obj->getDescription();
         }
         // Assigned items
         $assigned_items = $tmp_obj->getAssignedItems();
         foreach ($assigned_items as $condition) {
             $data[$grouping_id]['assigned'][] = ilObject::_lookupTitle($condition['target_obj_id']);
         }
     }
     $this->setData($data);
 }
 function initForm($a_create)
 {
     include_once "Services/Form/classes/class.ilPropertyFormGUI.php";
     $form = new ilPropertyFormGUI();
     $form->setFormAction($this->ctrl->getFormAction($this));
     $title = new ilTextInputGUI($this->lng->txt('title'), 'title');
     $title->setRequired(true);
     $form->addItem($title);
     $desc = new ilTextAreaInputGUI($this->lng->txt('description'), 'description');
     $form->addItem($desc);
     $options = array('login' => 'login', 'email' => 'email', 'matriculation' => 'matriculation');
     foreach ($options as $value => $caption) {
         $options[$value] = $this->lng->txt($caption);
     }
     $uniq = new ilSelectInputGUI($this->lng->txt('unambiguousness'), 'unique');
     $uniq->setRequired(true);
     $uniq->setOptions($options);
     $form->addItem($uniq);
     if ($a_create) {
         $form->setTitle($this->lng->txt('crs_add_grouping'));
         $form->addCommandButton('add', $this->lng->txt('btn_add'));
     } else {
         $grouping = new ilObjCourseGrouping($_REQUEST['obj_id']);
         $title->setValue($grouping->getTitle());
         $desc->setValue($grouping->getDescription());
         $uniq->setValue($grouping->getUniqueField());
         $ass = new ilCustomInputGUI($this->lng->txt('groupings_assigned_obj_' . $this->getContentType()));
         $form->addItem($ass);
         // assignments
         $items = array();
         foreach ($grouping->getAssignedItems() as $cond_data) {
             $items[] = ilObject::_lookupTitle($cond_data['target_obj_id']);
         }
         if (count($items)) {
             $ass->setHtml(implode("<br />", $items));
         } else {
             $ass->setHtml($this->lng->txt('crs_grp_no_courses_assigned'));
         }
         $form->setTitle($this->lng->txt('edit_grouping'));
         $form->addCommandButton('update', $this->lng->txt('save'));
         $form->addCommandButton('selectCourse', $this->lng->txt('grouping_change_assignment'));
     }
     $form->addCommandButton('listGroupings', $this->lng->txt('cancel'));
     return $form;
 }
 /**
  * 
  * Returns a list of all groupings for which the current user hast write permission on all assigned objects. Or groupings
  * the given object id is assigned to.
  */
 function _getVisibleGroupings($a_obj_id)
 {
     global $ilObjDataCache, $ilAccess, $ilDB;
     $container_type = $ilObjDataCache->lookupType($a_obj_id) == 'grp' ? 'grp' : 'crs';
     // First get all groupings
     $query = "SELECT * FROM object_data WHERE type = 'crsg' ORDER BY title";
     $res = $ilDB->query($query);
     $groupings = array();
     while ($row = $res->fetchRow(DB_FETCHMODE_OBJECT)) {
         $groupings[] = $row->obj_id;
     }
     //check access
     foreach ($groupings as $grouping_id) {
         $tmp_grouping_obj = new ilObjCourseGrouping($grouping_id);
         // Check container type
         if ($tmp_grouping_obj->getContainerType() != $container_type) {
             continue;
         }
         // Check if container is current container
         if ($tmp_grouping_obj->getContainerObjId() == $a_obj_id) {
             $visible_groupings[] = $grouping_id;
             continue;
         }
         // check if items are assigned
         if (count($items = $tmp_grouping_obj->getAssignedItems())) {
             foreach ($items as $condition_data) {
                 if ($ilAccess->checkAccess('write', '', $condition_data['target_ref_id'])) {
                     $visible_groupings[] = $grouping_id;
                     break;
                 }
             }
         }
     }
     return $visible_groupings ? $visible_groupings : array();
 }