コード例 #1
0
 /**
  * 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;
 }
コード例 #2
0
 /**
  * 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;
 }
コード例 #3
0
 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"), '', "");
     }
 }