• Модуль: iblock
  • Путь к файлу: ~/bitrix/modules/iblock/classes/general/prop_html.php
  • Класс: CIBlockPropertyHTML
  • Вызов: CIBlockPropertyHTML::ConvertToDB
static function ConvertToDB($arProperty, $value)
{
	global $DB;
	$return = false;

	if (!is_array($value))
	{
		$value = static::getValueFromString($value, true);
	}
	elseif (isset($value['VALUE']) && !is_array($value['VALUE']))
	{
		$value['VALUE'] = static::getValueFromString($value['VALUE'], false);
	}
	$defaultValue = isset($value['DEFAULT_VALUE']) && $value['DEFAULT_VALUE'] === true;

	if(
		is_array($value)
		&& array_key_exists("VALUE", $value)
	)
	{
		if (
			isset($value['VALUE']['TEXT'])
			&& !is_scalar($value['VALUE']['TEXT'])
		)
		{
			$value['VALUE']['TEXT'] =
				is_object($value['VALUE']['TEXT']) && method_exists($value['VALUE']['TEXT'], '__toString')
					? (string)$value['VALUE']['TEXT']
					: ''
			;
		}
		$value['VALUE']['TEXT'] ??= '';
		$value['VALUE']['TEXT'] = trim($value['VALUE']['TEXT']);
		if (Loader::includeModule('bitrix24'))
		{
			$sanitizer = new CBXSanitizer();
			$sanitizer->setLevel(CBXSanitizer::SECURE_LEVEL_LOW);
			$sanitizer->ApplyDoubleEncode(false);
			$value['VALUE']['TEXT'] = $sanitizer->SanitizeHtml($value['VALUE']['TEXT']);
		}
		$len = mb_strlen($value['VALUE']['TEXT']);
		if ($len > 0 || $defaultValue)
		{
			if ($DB->type === 'MYSQL')
				$limit = 63200;
			else
				$limit = 1950;

			if ($len > $limit)
			{
				$value['VALUE']['TEXT'] = mb_substr($value['VALUE']['TEXT'], 0, $limit);
			}

			$val = static::CheckArray($value['VALUE'], $defaultValue);
			if (is_array($val))
			{
				$return = array(
					'VALUE' => serialize($val),
				);
				if (isset($value['DESCRIPTION']) && is_string($value['DESCRIPTION']))
				{
					$value['DESCRIPTION'] = trim($value['DESCRIPTION']);
					if ($value['DESCRIPTION'] !== '')
					{
						$return['DESCRIPTION'] = $value['DESCRIPTION'];
					}
				}
			}
		}
	}

	return $return;
}