19declare(strict_types=1);
37 $this->commonSettings =
new ilSetting(
'common');
47 $chatSettings =
new ilSetting(
'chatroom');
48 if ($chatSettings->get(
'chat_enabled',
'0')) {
78 ilChatroomInstaller::ensureCorrectPublicChatroomTreeLocation(
$ref_id);
83 ilChatroomInstaller::createDefaultPublicRoom(
true);
84 $this->mainTpl->setOnScreenMessage(
'success', $this->ilLng->txt(
'public_chat_created'),
true);
90 isset($serverSettings[
'port'], $serverSettings[
'address']) &&
93 $this->mainTpl->setOnScreenMessage(
'info', $this->ilLng->txt(
'chat_cannot_connect_to_server'));
102 $form = $factory->getClientSettingsForm();
104 if (!$form->checkInput()) {
105 $form->setValuesByPost();
106 $this->clientsettings($form);
110 $convIdleStateTime = max(1, (
int) $form->getInput(
'conversation_idle_state_in_minutes'));
113 'name' => (string) $form->getInput(
'client_name'),
114 'enable_osc' => (bool) $form->getInput(
'enable_osc'),
115 'enable_browser_notifications' => (bool) $form->getInput(
'enable_browser_notifications'),
116 'conversation_idle_state_in_minutes' => $convIdleStateTime,
117 'chat_enabled' => (bool) $form->getInput(
'chat_enabled'),
118 'auth' => $form->getInput(
'auth')
121 if (!$settings[
'chat_enabled']) {
122 $settings[
'enable_osc'] =
false;
125 $chatSettings =
new ilSetting(
'chatroom');
126 $chatSettings->set(
'chat_enabled', (
string) $settings[
'chat_enabled']);
127 $chatSettings->set(
'enable_browser_notifications', (
string) $settings[
'enable_browser_notifications']);
128 $chatSettings->set(
'conversation_idle_state_in_minutes', (
string) $convIdleStateTime);
129 $chatSettings->set(
'enable_osc', (
string) $settings[
'enable_osc']);
131 $adminSettings =
new ilChatroomAdmin($this->gui->getObject()->getId());
132 $adminSettings->saveClientSettings((
object) $settings);
134 $osc_accept_msg = $form->getInput(
'chat_osc_accept_msg');
135 $broadcast_typing = $form->getInput(
'chat_broadcast_typing');
136 if (in_array($osc_accept_msg, [
'n',
'y'],
true)) {
137 $this->commonSettings->set(
'chat_osc_accept_msg', $osc_accept_msg);
140 if (in_array($broadcast_typing, [
'n',
'y'],
true)) {
141 $this->commonSettings->set(
'chat_broadcast_typing', $broadcast_typing);
145 $fileHandler->createClientConfigFile($settings);
147 $this->mainTpl->setOnScreenMessage(
'success', $this->ilLng->txt(
'settings_has_been_saved'),
true);
155 $this->file_delivery->delivery()->inline(
156 ILIAS\Filesystem\Stream\Streams::ofResource(
157 fopen(self::CHATROOM_README_PATH,
'rb')
159 basename(self::CHATROOM_README_PATH),
169 $this->gui->switchToVisibleMode();
171 $adminSettings =
new ilChatroomAdmin($this->gui->getObject()->getId());
172 $serverSettings = $adminSettings->loadGeneralSettings();
174 if ($form ===
null) {
175 $clientSettings = array_map(
176 static fn($value) => is_int($value) ? (
string) $value : $value,
177 $adminSettings->loadClientSettings()
179 $clientSettings[
'chat_osc_accept_msg'] = $this->commonSettings->get(
'chat_osc_accept_msg',
'n');
180 $clientSettings[
'chat_broadcast_typing'] = $this->commonSettings->get(
'chat_broadcast_typing',
'n');
182 $form = $factory->getClientSettingsForm();
183 $form->setValuesByArray($clientSettings);
188 $form->setTitle($this->ilLng->txt(
'general_settings_title'));
190 $form->addCommandButton(
'view-saveClientSettings', $this->ilLng->txt(
'save'));
193 $item = $form->getItemByPostVar(
'auth');
194 $item->setIsReadOnly(
true);
198 $this->mainTpl->setContent($this->uiRenderer->render([
199 $this->uiFactory->messageBox()->info(
200 $this->ilLng->txt(
'server_further_information')
202 $this->uiFactory->link()->standard(
203 $this->ilLng->txt(
'server_readme_file_btn_label'),
204 $this->ilCtrl->getLinkTarget($this->gui,
'view-deliverDocumentation')
205 )->withOpenInNewViewport(
true)
207 $this->uiFactory->legacy()->content($form->getHTML())
Class ilChatroomAdminViewGUI.
ilSetting $commonSettings
const string CHATROOM_README_PATH
__construct(ilChatroomObjectGUI $gui)
executeDefault(string $requestedMethod)
checkServerConnection(array $serverSettings)
Class ilChatroomGUIHandler.
redirectIfNoPermission($permission)
Checks for requested permissions and redirects if the permission check failed.
static checkServerConnection(bool $use_cache=true)
static checkUserPermissions($permissions, int $ref_id, bool $send_info=true)
Checks user permissions by given array and ref_id.
Class ilCtrl provides processing control methods.
getFormAction(object $a_gui_obj, ?string $a_fallback_cmd=null, ?string $a_anchor=null, bool $is_async=false, bool $has_xml_style=false)
@inheritDoc
redirect(object $a_gui_obj, ?string $a_cmd=null, ?string $a_anchor=null, bool $is_async=false)
@inheritDoc
static getInstanceByRefId(int $ref_id, bool $stop_on_error=true)
get an instance of an Ilias object by reference id
static _hasUntrashedReference(int $obj_id)
checks whether an object has at least one reference that is not in trash
static _lookupObjId(int $ref_id)
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc
Interface Observer \BackgroundTasks Contains several chained tasks and infos about them.