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