/** * @param ilChatroom $room * @return array */ public function getMessages(ilChatroom $room) { /** * @var $ilUser ilObjUser */ global $ilUser; include 'Modules/Chatroom/classes/class.ilChatroomUser.php'; $messages = $room->getLastMessagesForChatViewer($room->getSetting('display_past_msgs'), new ilChatroomUser($ilUser, $room)); $output_messages = array(); foreach ($messages as $msg) { $output_messages[] = $msg; } return $output_messages; }
/** * Saves file, fetched from $_FILES to specified upload path. * * @global ilObjUser $ilUser */ public function uploadFile() { global $ilCtrl; if (!ilChatroom::checkUserPermissions('read', $this->gui->ref_id)) { $ilCtrl->setParameterByClass("ilrepositorygui", "ref_id", ROOT_FOLDER_ID); $ilCtrl->redirectByClass("ilrepositorygui", ""); } $upload_path = $this->getUploadPath(); $this->checkUploadPath($upload_path); /** * @todo: filename must be unique. */ $file = $_FILES['file_to_upload']['tmp_name']; $filename = $_FILES['file_to_upload']['name']; $type = $_FILES['file_to_upload']['type']; $target = $upload_path . $filename; if (ilUtil::moveUploadedFile($file, $filename, $target)) { global $ilUser; require_once 'Modules/Chatroom/classes/class.ilChatroom.php'; require_once 'Modules/Chatroom/classes/class.ilChatroomUser.php'; $room = ilChatroom::byObjectId($this->gui->object->getId()); $chat_user = new ilChatroomUser($ilUser, $room); $user_id = $chat_user->getUserId(); if (!$room) { throw new Exception('unkown room'); } else { if (!$room->isSubscribed($chat_user->getUserId())) { throw new Exception('not subscribed'); } } $room->saveFileUploadToDb($user_id, $filename, $type); $this->displayLinkToUploadedFile($room, $chat_user); } }
/** * @param int $invited_id */ private function inviteById($invited_id) { /** * @var $ilUser ilObjUser * @var $ilCtrl ilCtrl */ global $ilUser, $ilCtrl; if (!ilChatroom::checkUserPermissions('read', $this->gui->ref_id)) { $ilCtrl->setParameterByClass('ilrepositorygui', 'ref_id', ROOT_FOLDER_ID); $ilCtrl->redirectByClass('ilrepositorygui', ''); } $room = ilChatroom::byObjectId($this->gui->object->getId()); $chat_user = new ilChatroomUser($ilUser, $room); $user_id = $chat_user->getUserId(); if (!$room) { $response = json_encode(array('success' => false, 'reason' => 'unkown room')); echo json_encode($response); exit; } else { if ($_REQUEST['sub'] && !$room->isOwnerOfPrivateRoom($user_id, $_REQUEST['sub'])) { $response = json_encode(array('success' => false, 'reason' => 'not owner of private room')); echo json_encode($response); exit; } } $connector = $this->gui->getConnector(); $result = $connector->inviteToPrivateRoom($room, $_REQUEST['sub'], $ilUser, $invited_id); $room->sendInvitationNotification($this->gui, $chat_user, $invited_id, (int) $_REQUEST['sub']); echo json_encode($result); exit; }
/** * Displays window box to kick a user fetched from $_REQUEST['user']. * * @global ilObjUser $ilUser * @param string $method */ public function executeDefault($method) { global $ilUser, $ilCtrl; require_once 'Modules/Chatroom/classes/class.ilChatroom.php'; require_once 'Modules/Chatroom/classes/class.ilChatroomUser.php'; if (!ilChatroom::checkUserPermissions(array('moderate'), $this->gui->ref_id)) { $ilCtrl->setParameterByClass("ilrepositorygui", "ref_id", ROOT_FOLDER_ID); $ilCtrl->redirectByClass("ilrepositorygui", ""); } $room = ilChatroom::byObjectId($this->gui->object->getId()); if ($room) { // if user is in scope $scope = $room->getRoomId(); $chat_user = new ilChatroomUser($ilUser, $room); $message = json_encode($this->buildMessage(ilUtil::stripSlashes((int) $_REQUEST['sub']), $chat_user)); $params = array('message' => $message); $query = http_build_query($params); $connector = $this->gui->getConnector(); $response = $connector->post($scope, $query); $responseObject = json_decode($response); $room->clearMessages($_REQUEST['sub']); } else { $response = json_encode(array('success' => false, 'reason' => 'unkown room')); } echo $response; exit; }
public function executeDefault($method) { global $tpl, $ilUser, $ilCtrl, $lng, $ilAccess; $room = ilChatroom::byObjectId($this->gui->object->getId()); $chat_user = new ilChatroomUser($ilUser, $room); $result = new stdClass(); $result->users = $room->getConnectedUsers(); $result->private_rooms = $room->getActivePrivateRooms($ilUser->getId()); $result->userinfo = array('moderator' => $ilAccess->checkAccess('moderate', '', $_GET['ref_id']), 'userid' => $chat_user->getUserId()); $smileys = array(); include_once 'Modules/Chatroom/classes/class.ilChatroomSmilies.php'; $smileys_array = ilChatroomSmilies::_getSmilies(); foreach ($smileys_array as $smiley_array) { foreach ($smiley_array as $key => $value) { if ($key == 'smiley_keywords') { $new_keys = explode("\n", $value); } if ($key == 'smiley_fullpath') { $new_val = $value; } } foreach ($new_keys as $new_key) { $smileys[$new_key] = $new_val; } } $result->smileys = $smileys; echo json_encode($result); exit; }
/** * Prepares and displays the info screen. * * @global ilAccessHandler $ilAccess * @global ilCtrl2 $ilCtrl * @global ilLanguage $lng * @param string $method */ public function executeDefault($method) { global $ilAccess, $ilCtrl, $lng; include_once 'Modules/Chatroom/classes/class.ilChatroom.php'; if (!ilChatroom::checkUserPermissions('read', $this->gui->ref_id)) { $ilCtrl->setParameterByClass("ilrepositorygui", "ref_id", ROOT_FOLDER_ID); $ilCtrl->redirectByClass("ilrepositorygui", ""); } $this->gui->switchToVisibleMode(); if (!$ilAccess->checkAccess("visible", "", $this->gui->ref_id)) { $this->gui->ilias->raiseError($lng->txt("msg_no_perm_read"), $this->ilias->error_obj->MESSAGE); } $info = new ilInfoScreenGUI($this->gui); $info->enablePrivateNotes(); if ($ilAccess->checkAccess("read", "", $_GET["ref_id"])) { $info->enableNews(); } $info->addMetaDataSections($this->gui->object->getId(), 0, $this->gui->object->getType()); if (!$method) { $ilCtrl->setCmd('showSummary'); } else { $ilCtrl->setCmd($method); } $ilCtrl->forwardCommand($info); }
/** * Prepares and displays settings form. * @param ilPropertyFormGUI $settingsForm */ public function general(ilPropertyFormGUI $settingsForm = null) { /** * @var $lng ilLanguage * @var $tpl ilTemplate * @var $ilCtrl ilCtrl */ global $lng, $tpl, $ilCtrl; if (!ilChatroom::checkUserPermissions(array('read', 'write'), $this->gui->ref_id)) { $ilCtrl->setParameterByClass('ilrepositorygui', 'ref_id', ROOT_FOLDER_ID); $ilCtrl->redirectByClass('ilrepositorygui', ''); } $chatSettings = new ilSetting('chatroom'); if (!$chatSettings->get('chat_enabled')) { ilUtil::sendInfo($lng->txt('server_disabled'), true); } $this->gui->switchToVisibleMode(); $formFactory = new ilChatroomFormFactory(); if (!$settingsForm) { $settingsForm = $formFactory->getSettingsForm(); } $room = ilChatRoom::byObjectId($this->gui->object->getId()); $settings = array('title' => $this->gui->object->getTitle(), 'desc' => $this->gui->object->getDescription()); if ($room) { ilChatroomFormFactory::applyValues($settingsForm, array_merge($settings, $room->getSettings())); } else { ilChatroomFormFactory::applyValues($settingsForm, $settings); } $settingsForm->setTitle($lng->txt('settings_title')); $settingsForm->addCommandButton('settings-saveGeneral', $lng->txt('save')); $settingsForm->setFormAction($ilCtrl->getFormAction($this->gui, 'settings-saveGeneral')); $tpl->setVariable('ADM_CONTENT', $settingsForm->getHtml()); }
/** * Switches GUI to visible mode and calls editSmiliesObject method * which prepares and displays the table of existing smilies. * */ public function view() { include_once 'Modules/Chatroom/classes/class.ilChatroom.php'; ilChatroom::checkUserPermissions('read', $this->gui->ref_id); $this->gui->switchToVisibleMode(); self::_checkSetup(); $this->editSmiliesObject(); }
public function cloneObject($a_target_id, $a_copy_id = 0, $a_omit_tree = false) { global $rbacreview; require_once 'Modules/Chatroom/classes/class.ilChatroom.php'; $original_room = ilChatroom::byObjectId($this->getId()); $newObj = parent::cloneObject($a_target_id, $a_copy_id, $a_omit_tree); $objId = $newObj->getId(); $original_settings = $original_room->getSettings(); $room = new ilChatroom(); $original_settings['object_id'] = $objId; $room->saveSettings($original_settings); // rbac log include_once "Services/AccessControl/classes/class.ilRbacLog.php"; $rbac_log_roles = $rbacreview->getParentRoleIds($newObj->getRefId(), false); $rbac_log = ilRbacLog::gatherFaPa($newObj->getRefId(), array_keys($rbac_log_roles), true); ilRbacLog::add(ilRbacLog::CREATE_OBJECT, $newObj->getRefId(), $rbac_log); return $newObj; }
/** * Prepares and posts message fetched from $_REQUEST['message'] * to recipients fetched from $_REQUEST['recipient'] * and adds an entry to history if successful. * * @global ilObjUser $ilUser * @param string $method */ public function executeDefault($method) { global $ilUser, $ilCtrl; require_once 'Modules/Chatroom/classes/class.ilChatroom.php'; require_once 'Modules/Chatroom/classes/class.ilChatroomUser.php'; if (!ilChatroom::checkUserPermissions('read', $this->gui->ref_id)) { $ilCtrl->setParameterByClass("ilrepositorygui", "ref_id", ROOT_FOLDER_ID); $ilCtrl->redirectByClass("ilrepositorygui", ""); } $room = ilChatroom::byObjectId($this->gui->object->getId()); $chat_user = new ilChatroomUser($ilUser, $room); $user_id = $chat_user->getUserId(); if (!$room) { throw new Exception('unkown room'); } else { if (!$room->isSubscribed($chat_user->getUserId())) { throw new Exception('not subscribed'); } else { if (isset($_REQUEST['sub']) && !$room->userIsInPrivateRoom($_REQUEST['sub'], $chat_user->getUserId())) { $response = json_encode(array('success' => false, 'reason' => 'not subscribed to private room')); echo json_encode($response); exit; } } } $scope = $room->getRoomId(); $params = array(); if ($recipient = $_REQUEST['recipient']) { $params['recipients'] = join(',', array_unique(array($user_id, $recipient))); $params['recipient_names'] = implode(',', array($chat_user->getUsername(), $_REQUEST['recipient_name'])); $params['public'] = isset($_REQUEST['public']) ? (int) $_REQUEST['public'] : 0; } else { $params['public'] = 1; } if ($_REQUEST['sub']) { $params['sub'] = (int) $_REQUEST['sub']; } $messageObject = $this->buildMessage(ilUtil::stripSlashes($_REQUEST['message']), $params, $chat_user); $message = json_encode($messageObject); $params = array_merge($params, array('message' => $message)); //print_r($params);exit; $query = http_build_query($params); $connector = $this->gui->getConnector(); $response = $connector->post($scope, $query); $responseObject = json_decode($response); if ($responseObject->success == true) { $room->addHistoryEntry($messageObject, $recipient, $publicMessage); } echo $response; exit; }
/** * 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 */ public function getProperties() { /** * @var $lng ilLanguage */ global $lng; $props = array(); require_once 'Modules/Chatroom/classes/class.ilChatroom.php'; $room = ilChatroom::byObjectId($this->obj_id); if ($room) { $props[] = array("alert" => false, "property" => $lng->txt("chat_users_active"), "value" => $room->countActiveUsers()); if ($this->obj_id == self::$publicRoomObjId) { $props[] = array("alert" => false, "property" => $lng->txt("notice"), 'value' => $lng->txt('public_room')); } if (self::$chat_enabled === null) { $chatSetting = new ilSetting('chatroom'); self::$chat_enabled = (bool) $chatSetting->get('chat_enabled'); } if (!self::$chat_enabled) { $props[] = array("alert" => true, "property" => $lng->txt("status"), 'value' => $lng->txt("server_disabled")); } } return $props; }
/** * 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; } }
/** * Sets autogen_usernames default option for chatrooms * @param array $obj_ids */ public static function setChatroomSettings($obj_ids) { if (is_array($obj_ids)) { foreach ($obj_ids as $obj_id) { $room = new ilChatroom(); $room->saveSettings(array('object_id' => $obj_id, 'autogen_usernames' => 'Autogen #', 'room_type' => 'repository')); } } }
/** * @param ilChatroom $room * @param string $title * @param ilChatroomUser $owner * @return mixed */ public function createPrivateRoom(ilChatroom $room, $title, ilChatroomUser $owner) { $settings = array('public' => false); $params['user'] = $owner->getUserId(); $params['id'] = $room->addPrivateRoom($title, $owner, $settings); $query = http_build_query($params); $response = $this->sendCreatePrivateRoom($room->getRoomId(), $query); $responseObject = json_decode($response); $return = $responseObject; if ($responseObject->success == true) { $message = json_encode(array('type' => 'private_room_created', 'timestamp' => date('c'), 'public' => 0, 'title' => $title, 'id' => $responseObject->id, 'proom_id' => $responseObject->id, 'owner' => $owner->getUserId())); $result = $this->sendMessage($room->getRoomId(), $message, array('public' => 0, 'recipients' => $owner->getUserId())); $params = array(); $params['user'] = $owner->getUserId(); $params['sub'] = $responseObject->id; $query = http_build_query($params); $response = $this->enterPrivateRoom($room->getRoomId(), $query); $room->subscribeUserToPrivateRoom($params['sub'], $params['user']); $message = json_encode(array('type' => 'private_room_entered', 'user' => $owner->getUserId(), 'timestamp' => date('c'), 'sub' => $responseObject->id)); $this->sendMessage($room->getRoomId(), $message); } return $responseObject; }
/** * Instantiates, prepares and returns object. * $class_name = 'ilObj' . $objDefinition->getClassName( $new_type ). * Fetches title from $_POST['title'], description from $_POST['desc'] * and RefID from $_GET['ref_id']. * @return ilObject */ public function insertObject() { /** * @var $rbacsystem ilRbacSystem * @var $objDefinition ilObjectDefinition * @var $rbacreview ilRbacReview */ global $rbacsystem, $objDefinition, $rbacreview; $new_type = $this->type; // create permission is already checked in createObject. // This check here is done to prevent hacking attempts if (!$rbacsystem->checkAccess('create', $_GET['ref_id'], $new_type)) { $this->ilias->raiseError($this->lng->txt('no_create_permission'), $this->ilias->error_obj->MESSAGE); } $location = $objDefinition->getLocation($new_type); // create and insert object in objecttree $class_name = 'ilObj' . $objDefinition->getClassName($new_type); include_once $location . '/class.' . $class_name . '.php'; /** * @var $newObj ilObjChatroom */ $newObj = new $class_name(); $newObj->setType($new_type); $newObj->setTitle(ilUtil::stripSlashes($_POST['title'])); $newObj->setDescription(ilUtil::stripSlashes($_POST['desc'])); $newObj->create(); $newObj->createReference(); $newObj->putInTree($_GET['ref_id']); $newObj->setPermissions($_GET['ref_id']); $objId = $newObj->getId(); $room = new ilChatroom(); $room->saveSettings(array('object_id' => $objId, 'autogen_usernames' => 'Autogen #', 'display_past_msgs' => 20, 'private_rooms_enabled' => 0)); // rbac log include_once 'Services/AccessControl/classes/class.ilRbacLog.php'; $rbac_log_roles = $rbacreview->getParentRoleIds($newObj->getRefId(), false); $rbac_log = ilRbacLog::gatherFaPa($newObj->getRefId(), array_keys($rbac_log_roles), true); ilRbacLog::add(ilRbacLog::CREATE_OBJECT, $newObj->getRefId(), $rbac_log); $this->object = $newObj; return $newObj; }
/** * Requires ilChatroom and calls its disconnectAllUsersFromAllRooms() * method. */ private function serverStarted() { require_once 'Modules/Chatroom/classes/class.ilChatroom.php'; ilChatroom::disconnectAllUsersFromAllRooms(); }
/** * Prepares and displays history period form by session. * * @global ilLanguage $lng * @global ilCtrl2 $ilCtrl * @global ilObjUser $ilUser */ public function bySession($export = false) { global $lng, $ilCtrl, $ilUser; $room = ilChatroom::byObjectId($this->gui->object->getId()); $scope = $room->getRoomId(); $chat_user = new ilChatroomUser($ilUser, $room); $formFactory = new ilChatroomFormFactory(); $durationForm = $formFactory->getSessionForm($room->getSessions($chat_user)); $durationForm->setTitle($lng->txt('history_bysession_title')); $durationForm->addCommandButton('history-bySessionExport', $lng->txt('export')); $durationForm->addCommandButton('history-bySession', $lng->txt('show')); $durationForm->setFormAction($ilCtrl->getFormAction($this->gui), 'history-bySession'); if (strtolower($_SERVER['REQUEST_METHOD']) == 'post') { $durationForm->checkInput(); $postVals = explode(',', $_POST['session']); $durationForm->setValuesByArray(array('session' => $_POST['session'])); $messages = $room->getHistory($from = new ilDateTime($postVals[0], IL_CAL_UNIX), $to = new ilDateTime($postVals[1], IL_CAL_UNIX), $chat_user->getUserId(), isset($_REQUEST['scope']) ? $_REQUEST['scope'] : 0); } else { $last_session = $room->getLastSession($chat_user); if ($last_session) { $from = new ilDateTime($last_session['connected'], IL_CAL_UNIX); $to = new ilDateTime($last_session['disconnected'], IL_CAL_UNIX); } else { $from = null; $to = null; } $messages = $room->getHistory($from, $to, $chat_user->getUserId(), isset($_REQUEST['scope']) ? $_REQUEST['scope'] : 0); } if ($from && $to) { $psessions = $room->getPrivateRoomSessions($from, $to, $chat_user->getUserId(), $scope); } else { $from = new ilDateTime(); $to = new ilDateTime(); $psessions = array(); } $psessions = $room->getPrivateRoomSessions($from, $to, $chat_user->getUserId(), $scope); $this->showMessages($messages, $durationForm, $export, $psessions, $from, $to); }
/** * Builds tabs and subtabs using given $tabs, $config and $command * parameters. * @param ilTabsGUI $tabs * @param array $config * @param array $command */ private function buildTabs(ilTabsGUI $tabs, $config, $command) { /** * @var $rbacsystem ilRbacSystem */ global $rbacsystem; require_once 'Modules/Chatroom/classes/class.ilChatroom.php'; foreach ($config as $id => $tabDefinition) { if (!ilChatroom::checkUserPermissions($tabDefinition['permission'], $this->gui->getRefId(), false)) { continue; } else { if (isset($tabDefinition['enabled']) && !$tabDefinition['enabled']) { continue; } } $tabs->addTab($id, $this->getLabel($tabDefinition, $id), $tabDefinition['link']); if ($command[0] == $id && isset($tabDefinition['subtabs']) && is_array($tabDefinition['subtabs'])) { foreach ($tabDefinition['subtabs'] as $subid => $subTabDefinition) { if (!$rbacsystem->checkAccess($subTabDefinition['permission'], $this->gui->getRefId())) { continue; } else { if (isset($subTabDefinition['enabled']) && !$subTabDefinition['enabled']) { continue; } } $tabs->addSubTab($subid, $this->getLabel($subTabDefinition, $subid), $subTabDefinition['link']); } } } }
/** * */ public function invitePD() { /** * @var $ilUser ilObjUser * @var $ilCtrl ilCtrl */ global $ilUser, $ilCtrl; $chatSettings = new ilSetting('chatroom'); if (!$chatSettings->get('chat_enabled')) { $ilCtrl->redirect($this->gui, 'settings-general'); } $room = ilChatroom::byObjectId($this->gui->object->getId()); $chat_user = new ilChatroomUser($ilUser, $room); $user_id = $_REQUEST['usr_id']; $connector = $this->gui->getConnector(); $title = $room->getUniquePrivateRoomTitle($chat_user->getUsername()); $response = $connector->createPrivateRoom($room, $title, $chat_user); $connector->inviteToPrivateRoom($room, $response->id, $ilUser, $user_id); $room->sendInvitationNotification($this->gui, $chat_user, $user_id, $response->id); $_REQUEST['sub'] = $response->id; $_SESSION['show_invitation_message'] = $user_id; $ilCtrl->setParameter($this->gui, 'sub', $response->id); $ilCtrl->redirect($this->gui, 'view'); }
/** * Kicks and bans user, fetched from $_REQUEST['user'] and adds history entry. * * @global ilObjUser $ilUser */ public function active() { global $ilUser, $ilCtrl; if (!ilChatroom::checkUserPermissions(array('read', 'moderate'), $this->gui->ref_id)) { $ilCtrl->setParameterByClass("ilrepositorygui", "ref_id", ROOT_FOLDER_ID); $ilCtrl->redirectByClass("ilrepositorygui", ""); } $room = ilChatroom::byObjectId($this->gui->object->getId()); if ($room) { // if user is in scope $scope = $room->getRoomId(); $chat_user = new ilChatroomUser($ilUser, $room); $messageObject = $this->buildMessage(ilUtil::stripSlashes($_REQUEST['user']), $chat_user); $message = json_encode($messageObject); $params = array('message' => $message, 'userToKick' => $_REQUEST['user']); $query = http_build_query($params); $connector = $this->gui->getConnector(); $response = $connector->kick($scope, $query); $responseObject = json_decode($response); $room->banUser($_REQUEST['user']); if ($responseObject->success == true) { $room->addHistoryEntry($messageObject, '', 1); $message = json_encode(array('type' => 'userjustkicked', 'user' => $params['userToKick'], 'sub' => 0)); $connector->sendMessage($room->getRoomId(), $message, array('public' => 1, 'sub' => 0)); $room->disconnectUser($params['userToKick']); } } else { $response = json_encode(array('success' => false, 'reason' => 'unkown room')); } echo $response; exit; }
public function listUsers() { global $ilUser; $room = ilChatroom::byObjectId($this->gui->object->getId()); echo json_encode($room->listUsersInPrivateRoom($_REQUEST['sub'])); exit; }
/** */ protected function getMessages() { /** * @var $ilAccess ilAccessHandler * @var $ilUser ilObjUser * @var $lng ilLanguage */ global $ilAccess, $ilUser, $lng; $result = new stdClass(); $result->ok = false; if (!(int) $_REQUEST['ref_id']) { echo ilJsonUtil::encode($result); exit; } /** * @var $object ilObjChatroom */ $object = ilObjectFactory::getInstanceByRefId((int) $_REQUEST['ref_id'], false); if (!$object || !$ilAccess->checkAccess('read', '', $_REQUEST['ref_id'])) { ilObjUser::_writePref($ilUser->getId(), 'chatviewer_last_selected_room', 0); $result->errormsg = $lng->txt('msg_no_perm_read'); echo ilJsonUtil::encode($result); exit; } require_once 'Modules/Chatroom/classes/class.ilChatroom.php'; $room = ilChatroom::byObjectId($object->getId()); $block = new ilChatroomBlock(); $msg = $block->getMessages($room); $ilUser->setPref('chatviewer_last_selected_room', $object->getRefId()); ilObjUser::_writePref($ilUser->getId(), 'chatviewer_last_selected_room', $object->getRefId()); $result->messages = array_reverse($msg); $result->ok = true; include_once 'Services/JSON/classes/class.ilJsonUtil.php'; echo ilJsonUtil::encode($result); exit; }
/** * @param ilPropertyFormGUI $form */ public function clientsettings(ilPropertyFormGUI $form = null) { /** * @var $tpl ilTemplate * @var $ilCtrl ilCtrl * @var $lng ilLanguage */ global $tpl, $ilCtrl, $lng; ilChatroom::checkUserPermissions('read', $this->gui->ref_id); $this->defaultActions(); $this->gui->switchToVisibleMode(); $this->showSoapWarningIfNeeded(); require_once 'Modules/Chatroom/classes/class.ilChatroomAdmin.php'; $adminSettings = new ilChatroomAdmin($this->gui->object->getId()); if ($form === null) { require_once 'Modules/Chatroom/classes/class.ilChatroomFormFactory.php'; $factory = new ilChatroomFormFactory(); $form = $factory->getClientSettingsForm(); if (!$this->commonSettings->get('soap_user_administration')) { $form->getItemByPostVar('chat_enabled')->setDisabled(!(bool) $this->commonSettings->get('soap_user_administration')); $form->getItemByPostVar('chat_enabled')->setChecked(0); } $data = (array) $adminSettings->loadClientSettings(); if (!$data['osd_intervall']) { $data['osd_intervall'] = 60; } if (!$data) { $data = array(); } if (!$data['url']) { $data['url'] = ilUtil::_getHttpPath(); } if (!$data['client']) { $data['client'] = CLIENT_ID; } $data['password_retype'] = $data['password']; $form->setValuesByArray($data); } require_once 'Modules/Chatroom/classes/class.ilChatroomServerConnector.php'; $serverSettings = (array) $adminSettings->loadGeneralSettings(); if ($serverSettings['port'] && $serverSettings['address'] && !(bool) @ilChatroomServerConnector::checkServerConnection()) { ilUtil::sendInfo($lng->txt('chat_cannot_connect_to_server')); } $form->setTitle($lng->txt('general_settings_title')); $form->addCommandButton('view-saveClientSettings', $lng->txt('save')); $form->setFormAction($ilCtrl->getFormAction($this->gui, 'view-saveClientSettings')); $settingsTpl = new ilTemplate('tpl.chatroom_serversettings.html', true, true, 'Modules/Chatroom'); $settingsTpl->setVariable('VAL_SERVERSETTINGS_FORM', $form->getHTML()); $settingsTpl->setVariable('LBL_SERVERSETTINGS_FURTHER_INFORMATION', sprintf($lng->txt('server_further_information'), ilUtil::_getHttpPath() . '/Modules/Chatroom/server/README.txt')); $tpl->setVariable('ADM_CONTENT', $settingsTpl->get()); }
/** * 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'); }
/** * Returns an anonymous username containing a random number. * * @return string */ public function buildAnonymousName() { $anonymous_name = str_replace('#', mt_rand(0, 10000), $this->room->getSetting('autogen_usernames')); return $anonymous_name; }