function remove()
 {
     global $ilAccess, $ilObjDataCache, $lng;
     if (!$ilAccess->checkAccess("write", "", $_POST["grp_id"])) {
         ilUtil::sendFailure($lng->txt("permission_denied"), true);
         $this->show();
         return;
     }
     include_once './Modules/Group/classes/class.ilGroupParticipants.php';
     $members_obj = ilGroupParticipants::_getInstanceByObjId($ilObjDataCache->lookupObjId($_POST["grp_id"]));
     $members_obj->delete($_POST["usr_id"]);
     // Send notification
     include_once './Modules/Group/classes/class.ilGroupMembershipMailNotification.php';
     $members_obj->sendNotification(ilGroupMembershipMailNotification::TYPE_DISMISS_MEMBER, $_POST["usr_id"]);
     include_once './Modules/Forum/classes/class.ilForumNotification.php';
     ilForumNotification::checkForumsExistsDelete($this->ref_id, $_POST["usr_id"]);
     ilUtil::sendSuccess($lng->txt("grp_msg_membership_annulled"));
     $this->show();
 }
 public function confirmedUnsubscribe()
 {
     global $ilCtrl, $ilAccess, $ilUser;
     if (!sizeof($_POST["ref_id"])) {
         $ilCtrl->redirect($this, "manage");
     }
     foreach ($_POST["ref_id"] as $ref_id) {
         if ($ilAccess->checkAccess("leave", "", $ref_id)) {
             switch (ilObject::_lookupType($ref_id, true)) {
                 case "crs":
                     // see ilObjCourseGUI:performUnsubscribeObject()
                     include_once "Modules/Course/classes/class.ilCourseParticipants.php";
                     $members = new ilCourseParticipants(ilObject::_lookupObjId($ref_id));
                     $members->delete($ilUser->getId());
                     $members->sendUnsubscribeNotificationToAdmins($ilUser->getId());
                     $members->sendNotification($members->NOTIFY_UNSUBSCRIBE, $ilUser->getId());
                     break;
                 case "grp":
                     // see ilObjGroupGUI:performUnsubscribeObject()
                     include_once "Modules/Group/classes/class.ilGroupParticipants.php";
                     $members = new ilGroupParticipants(ilObject::_lookupObjId($ref_id));
                     $members->delete($ilUser->getId());
                     include_once './Modules/Group/classes/class.ilGroupMembershipMailNotification.php';
                     $members->sendNotification(ilGroupMembershipMailNotification::TYPE_UNSUBSCRIBE_MEMBER, $ilUser->getId());
                     $members->sendNotification(ilGroupMembershipMailNotification::TYPE_NOTIFICATION_UNSUBSCRIBE, $ilUser->getId());
                     break;
                 default:
                     // do nothing
                     continue;
             }
             include_once './Modules/Forum/classes/class.ilForumNotification.php';
             ilForumNotification::checkForumsExistsDelete($ref_id, $ilUser->getId());
         }
     }
     ilUtil::sendSuccess($this->lng->txt("settings_saved"), true);
     $ilCtrl->redirectByClass("ilpersonaldesktopgui", "show");
 }
 /**
  * Handle an event in a listener.
  *
  * @param	string	$a_component	component, e.g. "Modules/Forum" or "Services/User"
  * @param	string	$a_event		event e.g. "createUser", "updateUser", "deleteUser", ...
  * @param	array	$a_parameter	parameter array (assoc), array("name" => ..., "phone_office" => ...)
  */
 static function handleEvent($a_component, $a_event, $a_parameter)
 {
     switch ($a_component) {
         case "Services/News":
             switch ($a_event) {
                 case "readNews":
                     // here we could set postings to read, if news is
                     // read (has to be implemented)
                     break;
             }
             break;
         case "Services/Tree":
             switch ($a_event) {
                 case "moveTree":
                     include_once './Modules/Forum/classes/class.ilForumNotification.php';
                     ilForumNotification::_clearForcedForumNotifications($a_parameter);
                     break;
             }
             break;
         case "Modules/Course":
             switch ($a_event) {
                 case "addParticipant":
                     include_once './Modules/Forum/classes/class.ilForumNotification.php';
                     $ref_ids = self::getCachedReferences($a_parameter['obj_id']);
                     foreach ($ref_ids as $ref_id) {
                         ilForumNotification::checkForumsExistsInsert($ref_id, $a_parameter['usr_id']);
                         break;
                     }
                     break;
                 case 'deleteParticipant':
                     include_once './Modules/Forum/classes/class.ilForumNotification.php';
                     $ref_ids = self::getCachedReferences($a_parameter['obj_id']);
                     foreach ($ref_ids as $ref_id) {
                         ilForumNotification::checkForumsExistsDelete($ref_id, $a_parameter['usr_id']);
                         break;
                     }
                     break;
             }
             break;
         case "Modules/Group":
             switch ($a_event) {
                 case "addParticipant":
                     include_once './Modules/Forum/classes/class.ilForumNotification.php';
                     $ref_ids = self::getCachedReferences($a_parameter['obj_id']);
                     foreach ($ref_ids as $ref_id) {
                         ilForumNotification::checkForumsExistsInsert($ref_id, $a_parameter['usr_id']);
                         break;
                     }
                     break;
                 case 'deleteParticipant':
                     include_once './Modules/Forum/classes/class.ilForumNotification.php';
                     $ref_ids = self::getCachedReferences($a_parameter['obj_id']);
                     foreach ($ref_ids as $ref_id) {
                         ilForumNotification::checkForumsExistsDelete($ref_id, $a_parameter['usr_id']);
                         break;
                     }
                     break;
             }
             break;
     }
 }
 /**
  * unsubscribe from group
  *
  * @access public
  * @return
  */
 public function unsubscribeObject()
 {
     global $ilUser, $tree, $ilCtrl;
     $this->checkPermission('leave');
     $this->object->members_obj->delete($ilUser->getId());
     include_once './Modules/Group/classes/class.ilGroupMembershipMailNotification.php';
     $this->object->members_obj->sendNotification(ilGroupMembershipMailNotification::TYPE_UNSUBSCRIBE_MEMBER, $ilUser->getId());
     $this->object->members_obj->sendNotification(ilGroupMembershipMailNotification::TYPE_NOTIFICATION_UNSUBSCRIBE, $ilUser->getId());
     include_once './Modules/Forum/classes/class.ilForumNotification.php';
     ilForumNotification::checkForumsExistsDelete($this->object->getRefId(), $ilUser->getId());
     ilUtil::sendSuccess($this->lng->txt('grp_msg_membership_annulled'), true);
     $ilCtrl->setParameterByClass("ilrepositorygui", "ref_id", $tree->getParentId($this->object->getRefId()));
     $ilCtrl->redirectByClass("ilrepositorygui", "");
 }
 /**
  * Remove members
  * @global ilRbacReview $rbacreview
  * @global ilRbacSystem $rbacsystem
  * @return boolean
  */
 protected function removeMembersObject()
 {
     global $rbacreview, $rbacsystem, $ilAccess, $ilUser;
     $this->checkPermission('write');
     if (!is_array($_POST["participants"]) or !count($_POST["participants"])) {
         ilUtil::sendFailure($this->lng->txt("crs_no_member_selected"));
         $this->membersObject();
         return false;
     }
     // If the user doesn't have the edit_permission and is not administrator, he may not remove
     // members who have the course administrator role
     if (!$ilAccess->checkAccess('edit_permission', '', $this->object->getRefId()) and !ilCourseParticipants::_getInstanceByObjId($this->object->getId())->isAdmin($ilUser->getId())) {
         // Determine the role id of the course administrator role.
         $courseAdminRoleId = null;
         foreach ($this->object->getLocalCourseRoles(false) as $title => $role_id) {
             if (substr($title, 0, 12) == 'il_crs_admin') {
                 $courseAdminRoleId = $role_id;
             }
         }
         foreach ($_POST['participants'] as $usr_id) {
             if ($rbacreview->isAssigned($usr_id, $courseAdminRoleId)) {
                 ilUtil::sendFailure($this->lng->txt("msg_no_perm_perm"));
                 $this->membersObject();
                 return false;
             }
         }
     }
     if (!$this->object->getMembersObject()->deleteParticipants($_POST["participants"])) {
         ilUtil::sendFailure($this->object->getMessage());
         $this->membersObject();
         return false;
     } else {
         include_once './Modules/Forum/classes/class.ilForumNotification.php';
         // SEND NOTIFICATION
         foreach ($_POST["participants"] as $usr_id) {
             $this->object->getMembersObject()->sendNotification($this->object->getMembersObject()->NOTIFY_DISMISS_MEMBER, $usr_id);
             ilForumNotification::checkForumsExistsDelete($this->object->getRefId(), $usr_id);
         }
     }
     ilUtil::sendSuccess($this->lng->txt("crs_members_deleted"));
     $this->membersObject();
     return true;
 }