• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/classes/general/im_settings.php
  • Класс: CIMSettings
  • Вызов: CIMSettings::CheckValues
static function CheckValues($type, $value)
{
	$checkedValues = [];

	$defaultSettings = self::GetDefaultSettings($type);
	if ($type === self::SETTINGS)
	{
		foreach($defaultSettings as $key => $default)
		{
			if ($key === 'status')
			{
				$checkedValues[$key] = in_array($value[$key], ['online', 'dnd', 'away'])? $value[$key]: $default;
			}
			else if ($key === 'panelPositionHorizontal')
			{
				$checkedValues[$key] = in_array($value[$key], ['left', 'center', 'right'])? $value[$key]: $default;
			}
			else if ($key === 'panelPositionVertical')
			{
				$checkedValues[$key] = in_array($value[$key], ['top', 'bottom'])? $value[$key]: $default;
			}
			else if ($key === 'notifyScheme')
			{
				$checkedValues[$key] = in_array($value[$key], ['simple', 'expert'])? $value[$key]: $default;
			}
			else if ($key === 'enableDarkTheme')
			{
				$checkedValues[$key] = in_array($value[$key], ['auto', 'light', 'dark']) ? $value[$key] : $default;
			}
			else if (in_array($key, ['privacyMessage', 'privacyChat', 'privacyCall', 'privacySearch']))
			{
				$checkedValues[$key] =
					in_array($value[$key], [self::PRIVACY_RESULT_ALL, self::PRIVACY_RESULT_CONTACT])
						? $value[$key]
						: $default
				;
			}
			else if ($key === 'privacyProfile')
			{
				$checkedValues[$key] =
					in_array($value[$key], [
						self::PRIVACY_RESULT_ALL,
						self::PRIVACY_RESULT_CONTACT,
						self::PRIVACY_RESULT_NOBODY
					],
					true)
						? $value[$key]
						: $default
				;
			}
			else if ($key === 'sendByEnter' && $value[$key] === 'Y') // for legacy
			{
				$checkedValues[$key] = true;
			}
			else if ($key === 'enableSound' && $value[$key] === 'N') // for legacy
			{
				$checkedValues[$key] = false;
			}
			else if ($key === 'backgroundImage')
			{
				$checkedValues[$key] = $value[$key];
			}
			else if ($key === 'notifySchemeLevel')
			{
				$checkedValues[$key] = in_array($value[$key], ['normal', 'important'])? $value[$key]: $default;
			}
			else if ($key === 'trackStatus')
			{
				$value[$key] = explode(',', $value[$key]);
				foreach ($value[$key] as $k => $v)
				{
					if ($v !== 'all')
					{
						$value[$key][$k] = intval($v);
						if ($value[$key][$k] == 0)
						{
							unset($value[$key][$k]);
						}
					}
				}
				$checkedValues[$key] = implode(',', $value[$key]);

			}
			else if ($key === 'callAcceptIncomingVideo')
			{
				$checkedValues[$key] = in_array($value[$key], VideoStrategyType::getList())? $value[$key]: $default;
			}
			else if (array_key_exists($key, $value))
			{
				$checkedValues[$key] = is_bool($value[$key])? $value[$key]: $default;
			}
			else
			{
				$checkedValues[$key] = $default;
			}
		}
	}
	else if ($type === self::NOTIFY)
	{
		foreach($defaultSettings as $key => $default)
		{
			if (array_key_exists($key, $value))
			{
				$checkedValues[$key] = is_bool($value[$key]) ? $value[$key] : $default;
			}
			else
			{
				$checkedValues[$key] = $default;
			}
		}
	}

	return $checkedValues;
}