/** * Kicks user from subroom into mainroom * * @global ilObjUser $ilUser */ public function sub() { global $ilUser, $ilCtrl; require_once 'Modules/Chatroom/classes/class.ilChatroom.php'; require_once 'Modules/Chatroom/classes/class.ilChatroomUser.php'; $room = ilChatroom::byObjectId($this->gui->object->getId()); if ($room) { if (!$room->isOwnerOfPrivateRoom($ilUser->getId(), $_REQUEST['sub'])) { if (!ilChatroom::checkPermissionsOfUser($ilUser->getId(), array('read', 'moderate'), $this->gui->ref_id)) { $ilCtrl->setParameterByClass("ilrepositorygui", "ref_id", ROOT_FOLDER_ID); $ilCtrl->redirectByClass("ilrepositorygui", ""); } } $scope = $room->getRoomId(); $params = array(); $params['user'] = $_REQUEST['user']; $params['sub'] = $_REQUEST['sub']; if ($room->userIsInPrivateRoom($params['sub'], $params['user'])) { $query = http_build_query($params); $connector = $this->gui->getConnector(); $response = $connector->leavePrivateRoom($scope, $query); $responseObject = json_decode($response); /* if( $responseObject->success == true && $room->getSetting( 'enable_history' ) ) { //$room->addHistoryEntry( $message, $recipient, $publicMessage ); } */ $room->unsubscribeUserFromPrivateRoom($params['sub'], $params['user']); $this->recantInvitation($params['sub'], $params['user']); $message = json_encode(array('type' => 'userjustkicked', 'user' => $params['user'], 'sub' => $params['sub'])); $connector->sendMessage($room->getRoomId(), $message, array('public' => 1, 'sub' => 0)); } else { $response = json_encode(array('success' => true, 'message' => 'was not in room')); } echo $response; exit; } }
/** * Last step of chat invitations * check access for every selected user and send invitation */ public function submitInvitation() { /** * @var $ilUser ilObjUser * @var $ilCtrl ilCtrl * @var $lng ilLanguage */ global $ilUser, $ilCtrl, $lng; if (!$_POST['addr_ids']) { ilUtil::sendFailure($lng->txt('select_one'), true); $ilCtrl->redirect($this, 'showAddressbook'); } if (!$_POST['room_id']) { ilUtil::sendFailure($lng->txt('select_one')); $_POST['addr_id'] = explode(',', $_POST['addr_ids']); $this->inviteToChat(); return; } // get selected users (comma seperated user id list) $ids = explode(',', $_POST['addr_ids']); // get selected chatroom from POST-String, format: "room_id , scope" $room_ids = explode(',', $_POST['room_id']); $room_id = (int) $room_ids[0]; $scope = 0; if (count($room_ids) > 0) { $scope = (int) $room_ids[1]; } include_once 'Modules/Chatroom/classes/class.ilChatroom.php'; $room = ilChatroom::byRoomId((int) $room_id, true); $no_access = array(); $no_login = array(); $valid_users = array(); $valid_user_to_login_map = array(); foreach ($ids as $id) { $entry = $this->abook->getEntry($id); if ($entry['login']) { $user_id = $ilUser->getUserIdByLogin($entry['login']); if (!$user_id) { $no_login[] = $id; continue; } $ref_id = $room->getRefIdByRoomId($room_id); if (!ilChatroom::checkPermissionsOfUser($user_id, 'read', $ref_id) || $room->isUserBanned($user_id)) { $no_access[] = $id; } else { $valid_users[] = $user_id; $valid_user_to_login_map[$user_id] = $entry['login']; } } else { $no_login[] = $id; } } if (count($no_access) || count($no_login)) { $message = ''; if (count($no_access)) { $message .= $lng->txt('chat_users_without_permission') . ':<br>'; $list = ''; foreach ($no_access as $e) { $list .= '<li>' . $this->abook->entryToString($e) . '</li>'; } $message .= '<ul>'; $message .= $list; $message .= '</ul>'; } if (count($no_login)) { $message .= $lng->txt('chat_users_without_login') . ':<br>'; $list = ''; foreach ($no_login as $e) { $list .= '<li>' . $this->abook->entryToString($e) . '</li>'; } $message .= '<ul>'; $message .= $list; $message .= '</ul>'; } ilUtil::sendFailure($message); $_POST['addr_id'] = $ids; $this->inviteToChat(); return; } $ref_id = $room->getRefIdByRoomId($room_id); $url = ''; include_once 'Services/Link/classes/class.ilLink.php'; if ($scope) { $url = ilLink::_getStaticLink($ref_id, 'chta', true, '_' . $scope); } else { $url = ilLink::_getStaticLink($ref_id, 'chta'); } $link = '<p><a target="chatframe" href="' . $url . '" title="' . $lng->txt('goto_invitation_chat') . '">' . $lng->txt('goto_invitation_chat') . '</a></p>'; $userlist = array(); foreach ($valid_users as $id) { $room->inviteUserToPrivateRoom($id, $scope); $room->sendInvitationNotification(null, $ilUser->getId(), $id, (int) $scope, $url); $userlist[] = '<li>' . $valid_user_to_login_map[$id] . '</li>'; } if ($userlist) { ilUtil::sendSuccess($lng->txt('chat_users_have_been_invited') . '<ul>' . implode('', $userlist) . '</ul>' . $link, true); } $ilCtrl->redirect($this, 'showAddressbook'); }