43 if (Manager::isSettingsMigrated() || Manager::isUserMigrated(
$userId))
59 self::SETTINGS =>
$settings[
'general'][
'settings'],
63 $arSettings[self::SETTINGS] = CUserOptions::GetOption(
'im', self::SETTINGS, [],
$userId);
64 $arSettings[self::NOTIFY] = CUserOptions::GetOption(
'im', self::NOTIFY, [],
$userId);
67 $arSettings[self::SETTINGS] = self::checkValues(self::SETTINGS, $arSettings[self::SETTINGS]);
68 $arSettings[self::NOTIFY] = self::checkValues(self::NOTIFY, $arSettings[self::NOTIFY]);
75 if (!in_array(
$type, [self::SETTINGS, self::NOTIFY],
true))
89 if (Manager::isSettingsMigrated() || Manager::isUserMigrated(
$userId))
91 $newFormatSettings[
'notify'] =
92 $type === self::NOTIFY
93 ? self::convertNotifySettingsToNewFormat($value)
97 $newFormatSettings[
'general'] =
98 $type === self::SETTINGS
99 ? array_replace_recursive(General::getDefaultSettings(), $value)
102 return Manager::setUserSettings(
$userId, $newFormatSettings)->isSuccess();
105 if (isset($value[self::STATUS]))
107 CIMStatus::Set(
$userId, [
'STATUS' => $value[self::STATUS]]);
109 if (isset($value[
'openDesktopFromPanel']) && CModule::IncludeModule(
'pull'))
113 'command' =>
'settingsUpdate',
116 'openDesktopFromPanel' => $value[
'openDesktopFromPanel'],
118 'extra' => Common::getPullExtra()
125 if (isset($arDefault[
$key]) && $arDefault[
$key] ==
$val)
127 if (
$key === self::PRIVACY_SEARCH)
134 CUserOptions::SetOption(
'im',
$type, $value,
false,
$userId);
136 if (isset($value[self::PRIVACY_SEARCH]))
146 if (!in_array(
$type, [self::SETTINGS, self::NOTIFY],
true))
160 if (Manager::isSettingsMigrated() || Manager::isUserMigrated(
$userId))
162 $newFormatSettings = [];
163 if (
$type === self::NOTIFY)
165 $newFormatSettings = self::convertNotifySettingsToNewFormat($value,
false);
167 if (
$type === self::SETTINGS)
170 $newFormatSettings = $value;
173 return Manager::setUserSetting(
$userId,
$type, $newFormatSettings)->isSuccess();
176 $arSettings = CUserOptions::GetOption(
'im',
$type, [],
$userId);
182 if (isset($value[self::STATUS]))
184 CIMStatus::Set(
$userId, [
'STATUS' => $value[self::STATUS]]);
186 if (isset($value[
'openDesktopFromPanel']) && CModule::IncludeModule(
'pull'))
192 'command' =>
'settingsUpdate',
195 'openDesktopFromPanel' => $value[
'openDesktopFromPanel'],
197 'extra' => Common::getPullExtra()
203 foreach ($arSettings as
$key =>
$val)
205 if (isset($arDefault[
$key]) && $arDefault[
$key] ==
$val)
207 if (
$key === self::PRIVACY_SEARCH)
214 CUserOptions::SetOption(
'im',
$type, $arSettings,
false,
$userId);
215 if (isset($value[self::PRIVACY_SEARCH]))
225 if (!in_array(
$type, [self::SETTINGS, self::NOTIFY],
true))
237 if (Manager::isSettingsMigrated() || Manager::isUserMigrated(
$userId))
239 if (
$type === self::NOTIFY)
244 if (
$type === self::SETTINGS)
246 return General::createWithUserId(
$userId)->getValue($value);
252 return isset($arSettings[
$type][$value]) ? $arSettings[
$type][$value] :
null;
263 if (Manager::isSettingsMigrated() || Manager::isUserMigrated(
$userId))
273 if ($userSettings[
'settings'][
'notifyScheme'] ===
'simple')
275 if (
$clientId === self::CLIENT_SITE && !$userSettings[
'settings'][
'notifySchemeSendSite'])
280 if (
$clientId === self::CLIENT_XMPP && !$userSettings[
'settings'][
'notifySchemeSendXmpp'])
285 if (
$clientId === self::CLIENT_MAIL && !$userSettings[
'settings'][
'notifySchemeSendEmail'])
290 if (
$clientId === self::CLIENT_PUSH && !$userSettings[
'settings'][
'notifySchemeSendPush'])
296 isset($userSettings[
'notify'])
297 && array_key_exists($notifySettingName, $userSettings[
'notify'])
298 && $userSettings[
'notify'][$notifySettingName] ===
false
304 if (isset($userSettings[
'notify']) && array_key_exists($notifySettingName, $userSettings[
'notify']))
306 return $userSettings[
'notify'][$notifySettingName];
309 if (isset($userSettings[
'notify']) && array_key_exists(
$clientId.
'|im|default', $userSettings[
'notify']))
311 return $userSettings[
'notify'][
$clientId.
'|im|default'];
320 $defaultSettings = [];
321 if (
$type === self::SETTINGS)
323 $defaultSettings = General::getDefaultSettings();
327 $notificationSettings = Notification::getDefaultSettings();
331 return $defaultSettings;
339 if (
$type === self::SETTINGS)
341 foreach($defaultSettings as
$key => $default)
343 if (
$key ===
'status')
345 $checkedValues[
$key] = in_array($value[
$key], [
'online',
'dnd',
'away'])? $value[
$key]: $default;
347 else if (
$key ===
'panelPositionHorizontal')
349 $checkedValues[
$key] = in_array($value[
$key], [
'left',
'center',
'right'])? $value[
$key]: $default;
351 else if (
$key ===
'panelPositionVertical')
353 $checkedValues[
$key] = in_array($value[
$key], [
'top',
'bottom'])? $value[
$key]: $default;
355 else if (
$key ===
'notifyScheme')
357 $checkedValues[
$key] = in_array($value[
$key], [
'simple',
'expert'])? $value[
$key]: $default;
359 else if (
$key ===
'enableDarkTheme')
361 $checkedValues[
$key] = in_array($value[
$key], [
'auto',
'light',
'dark']) ? $value[
$key] : $default;
363 else if (in_array(
$key, [
'privacyMessage',
'privacyChat',
'privacyCall',
'privacySearch']))
365 $checkedValues[
$key] =
366 in_array($value[
$key], [self::PRIVACY_RESULT_ALL, self::PRIVACY_RESULT_CONTACT])
371 else if (
$key ===
'privacyProfile')
373 $checkedValues[
$key] =
374 in_array($value[
$key], [
375 self::PRIVACY_RESULT_ALL,
376 self::PRIVACY_RESULT_CONTACT,
377 self::PRIVACY_RESULT_NOBODY
384 else if (
$key ===
'sendByEnter' && $value[
$key] ===
'Y')
386 $checkedValues[
$key] =
true;
388 else if (
$key ===
'enableSound' && $value[
$key] ===
'N')
390 $checkedValues[
$key] =
false;
392 else if (
$key ===
'backgroundImage')
394 $checkedValues[
$key] = $value[
$key];
396 else if (
$key ===
'notifySchemeLevel')
398 $checkedValues[
$key] = in_array($value[
$key], [
'normal',
'important'])? $value[
$key]: $default;
400 else if (
$key ===
'trackStatus')
402 $value[
$key] = explode(
',', $value[
$key]);
403 foreach ($value[
$key] as
$k => $v)
407 $value[
$key][
$k] = intval($v);
408 if ($value[
$key][
$k] == 0)
414 $checkedValues[
$key] = implode(
',', $value[
$key]);
417 else if (
$key ===
'callAcceptIncomingVideo')
419 $checkedValues[
$key] = in_array($value[
$key], VideoStrategyType::getList())? $value[
$key]: $default;
421 else if (array_key_exists(
$key, $value))
423 $checkedValues[
$key] = is_bool($value[
$key])? $value[
$key]: $default;
427 $checkedValues[
$key] = $default;
431 else if (
$type === self::NOTIFY)
433 foreach($defaultSettings as
$key => $default)
435 if (array_key_exists(
$key, $value))
437 $checkedValues[
$key] = is_bool($value[
$key]) ? $value[
$key] : $default;
441 $checkedValues[
$key] = $default;
446 return $checkedValues;
451 return Notification::getEventNames();
456 $arNotifyBlocked = [];
460 if ($arSettings[self::SETTINGS][
'notifyScheme'] ===
'expert')
462 foreach ($arSettings[self::NOTIFY] as
$key => $value)
464 if ($value ===
false)
475 $arNotifyBlocked[
$moduleId][$notifyId] =
false;
479 $arNotifyBlocked[
$moduleId .
'|' . $notifyId] =
false;
487 foreach ($arSettings[self::NOTIFY] as
$key => $value)
489 if ($value ===
false)
492 if (in_array(
$clientId, [
'push',
'important',
'disabled']))
505 $arNotifyBlocked[
$moduleId][$notifyId] =
false;
509 $arNotifyBlocked[
$moduleId .
'|' . $notifyId] =
false;
516 return $arNotifyBlocked;
529 if (Manager::isSettingsMigrated() || Manager::isUserMigrated(
$userId))
531 return General::createWithUserId(
$userId)->getValue(
$type);
541 return COption::GetOptionString(
"im",
'start_chat_message');
549 private static function convertNotifySettingsToNewFormat(
array $settings, $needReplace =
true):
array
551 $defaultSettings = Notification::getDefaultSettings();
553 $newFormatSettings = [];
577 $newName = implode(
'|', [
'no', $module,
$event,
$type]);
579 $newFormatSettings[] = [
581 'VALUE' =>
$value ?
'Y' :
'N'
584 $newSettings = Notification::decodeSettings($newFormatSettings);
587 ? array_replace_recursive($defaultSettings, $newSettings)
594 $formattedSettings = [];
597 foreach ($notifyTypes[
'NOTIFY'] as $eventName => $eventValue)
599 $siteName = self::CLIENT_SITE.
'|'.
$moduleId.
'|'.$eventName;
600 $mailName = self::CLIENT_MAIL.
'|'.
$moduleId.
'|'.$eventName;
601 $xmppName = self::CLIENT_XMPP.
'|'.
$moduleId.
'|'.$eventName;
602 $pushName = self::CLIENT_PUSH.
'|'.
$moduleId.
'|'.$eventName;
604 $formattedSettings[$siteName] = $eventValue[
'SITE'];
605 $formattedSettings[$mailName] = $eventValue[
'MAIL'];
606 $formattedSettings[$xmppName] = $eventValue[
'XMPP'];
607 $formattedSettings[$pushName] = $eventValue[
'PUSH'];
609 if (isset($eventValue[
'DISABLED']))
611 $formattedSettings[
'disabled|'.$siteName] = $eventValue[
'DISABLED'][
'SITE'];
612 $formattedSettings[
'disabled|'.$mailName] = $eventValue[
'DISABLED'][
'MAIL'];
613 $formattedSettings[
'disabled|'.$xmppName] = $eventValue[
'DISABLED'][
'XMPP'];
614 $formattedSettings[
'disabled|'.$pushName] = $eventValue[
'DISABLED'][
'PUSH'];
617 $formattedSettings[
'important|'.$moduleId.
'|'.$eventName] =
618 isset($eventValue[
'IMPORTANT']) && is_bool($eventValue[
'IMPORTANT'])
619 ? $eventValue[
'IMPORTANT']
623 return $formattedSettings;
if(!is_object($USER)||! $USER->IsAuthorized()) $userId
static CheckDisableFeature($moduleId, $notifyEvent, $feature)
static GetNotifyAccess($userId, $moduleId, $eventId, $clientId)
static GetSimpleNotifyBlocked($byModule=false)
const PRIVACY_RESULT_CONTACT
static GetSetting($type, $value, $userId=false)
static ClearCache($userId=false)
static GetPrivacy($type, $userId=false)
static SetSetting($type, $value, $userId=false)
const PRIVACY_RESULT_NOBODY
static Set($type, $value, $userId=false)
static GetStartChatMessage()
static GetDefaultSettings($type)
static convertNotifySettingsToOldFormat(array $settings)
static CheckValues($type, $value)
const START_MESSAGE_FIRST
static Get($userId=false)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
global $USER_FIELD_MANAGER
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
if(empty($signedUserToken)) $key