/** * checks wether a user may invoke a command or not * (this method is called by ilAccessHandler::checkAccess) * * @param string $a_cmd command (not permission!) * @param string $a_permission permission * @param int $a_ref_id reference id * @param int $a_obj_id object id * @param int $a_user_id user id (if not provided, current user is taken) * * @return boolean true, if everything is ok */ function _checkAccess($a_cmd, $a_permission, $a_ref_id, $a_obj_id, $a_user_id = "") { global $ilUser, $lng, $rbacsystem, $ilAccess; if ($a_user_id == "") { $a_user_id = $ilUser->getId(); } switch ($a_cmd) { case "info": include_once './Modules/Group/classes/class.ilGroupParticipants.php'; if (ilGroupParticipants::_isParticipant($a_ref_id, $a_user_id)) { $ilAccess->addInfoItem(IL_STATUS_MESSAGE, $lng->txt("info_is_member")); } else { $ilAccess->addInfoItem(IL_STATUS_MESSAGE, $lng->txt("info_is_not_member")); } break; case "join": if (!self::_registrationEnabled($a_obj_id)) { return false; } include_once './Modules/Group/classes/class.ilGroupWaitingList.php'; if (ilGroupWaitingList::_isOnList($ilUser->getId(), $a_obj_id)) { return false; } include_once './Modules/Group/classes/class.ilGroupParticipants.php'; if (ilGroupParticipants::_isParticipant($a_ref_id, $a_user_id)) { return false; } break; case 'leave': // Regular member if ($a_permission == 'leave') { include_once './Modules/Group/classes/class.ilGroupParticipants.php'; if (!ilGroupParticipants::_isParticipant($a_ref_id, $a_user_id)) { return false; } } // Waiting list if ($a_permission == 'join') { include_once './Modules/Group/classes/class.ilGroupWaitingList.php'; if (!ilGroupWaitingList::_isOnList($ilUser->getId(), $a_obj_id)) { return false; } } break; } switch ($a_permission) { } return true; }
/** * Get item properties * * @return array array of property arrays: * "alert" (boolean) => display as an alert property (usually in red) * "property" (string) => property name * "value" (string) => property value */ function getProperties() { global $lng, $rbacsystem, $ilUser; // BEGIN WebDAV get parent properties $props = parent::getProperties(); // END WebDAV get parent properties include_once './Modules/Course/classes/class.ilObjCourseAccess.php'; $info = ilObjGroupAccess::lookupRegistrationInfo($this->obj_id); //var_dump($info); if ($info['reg_info_list_prop']) { $props[] = array('alert' => false, 'newline' => true, 'property' => $info['reg_info_list_prop']['property'], 'value' => $info['reg_info_list_prop']['value']); } if ($info['reg_info_list_prop_limit']) { $props[] = array('alert' => false, 'newline' => false, 'property' => $info['reg_info_list_prop_limit']['property'], 'propertyNameVisible' => strlen($info['reg_info_list_prop_limit']['property']) ? true : false, 'value' => $info['reg_info_list_prop_limit']['value']); } // waiting list include_once './Modules/Group/classes/class.ilGroupWaitingList.php'; if (ilGroupWaitingList::_isOnList($ilUser->getId(), $this->obj_id)) { $props[] = array("alert" => true, "property" => $lng->txt('member_status'), "value" => $lng->txt('on_waiting_list')); } return $props; }
function getTabs(&$tabs_gui) { global $rbacsystem, $ilUser, $ilAccess, $lng, $ilHelp; $ilHelp->setScreenIdComponent("grp"); if ($rbacsystem->checkAccess('read', $this->ref_id)) { $tabs_gui->addTab("view_content", $lng->txt("content"), $this->ctrl->getLinkTarget($this, "")); } if ($rbacsystem->checkAccess('visible', $this->ref_id)) { $tabs_gui->addTarget("info_short", $this->ctrl->getLinkTargetByClass(array("ilobjgroupgui", "ilinfoscreengui"), "showSummary"), "infoScreen", "", "", false); } if ($ilAccess->checkAccess('write', '', $this->object->getRefId())) { $tabs_gui->addTarget("settings", $this->ctrl->getLinkTarget($this, "edit"), array("edit", "editMapSettings"), get_class($this), ""); } $is_participant = ilGroupParticipants::_isParticipant($this->ref_id, $ilUser->getId()); // Members $mem_cmd = $ilAccess->checkAccess('write', '', $this->ref_id) ? "members" : "membersGallery"; if ($mem_cmd != "membersGallery" || $is_participant) { $tabs_gui->addTarget("members", $this->ctrl->getLinkTarget($this, $mem_cmd), array(), get_class($this)); } // learning progress include_once './Services/Tracking/classes/class.ilLearningProgressAccess.php'; if (ilLearningProgressAccess::checkAccess($this->object->getRefId(), $is_participant)) { $tabs_gui->addTarget('learning_progress', $this->ctrl->getLinkTargetByClass(array('ilobjgroupgui', 'illearningprogressgui'), ''), '', array('illplistofobjectsgui', 'illplistofsettingsgui', 'illearningprogressgui', 'illplistofprogressgui')); } if ($ilAccess->checkAccess('write', '', $this->object->getRefId())) { $tabs_gui->addTarget('export', $this->ctrl->getLinkTargetByClass('ilexportgui', ''), 'export', 'ilexportgui'); } /* if ($rbacsystem->checkAccess('write',$this->object->getRefId())) { $tabs_gui->addTarget('export', $this->ctrl->getLinkTarget($this,'listExportFiles'), array('listExportFiles','exportXML','confirmDeleteExportFile','downloadExportFile'), get_class($this)); } */ // parent tabs (all container: edit_permission, clipboard, trash parent::getTabs($tabs_gui); if ($ilAccess->checkAccess('join', '', $this->object->getRefId()) and !$this->object->members_obj->isAssigned($ilUser->getId())) { include_once './Modules/Group/classes/class.ilGroupWaitingList.php'; if (ilGroupWaitingList::_isOnList($ilUser->getId(), $this->object->getId())) { $tabs_gui->addTab('leave', $this->lng->txt('membership_leave'), $this->ctrl->getLinkTargetByClass('ilgroupregistrationgui', 'show', '')); } else { $tabs_gui->addTarget("join", $this->ctrl->getLinkTargetByClass('ilgroupregistrationgui', "show"), 'show', ""); } } if ($ilAccess->checkAccess('leave', '', $this->object->getRefId()) and $this->object->members_obj->isMember($ilUser->getId())) { $tabs_gui->addTarget("grp_btn_unsubscribe", $this->ctrl->getLinkTarget($this, "leave"), '', ""); } }