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