• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/lib/logindex.php
  • Класс: BitrixSocialnetworkLogIndexTable
  • Вызов: LogIndexTable::set
static function set($params = []): bool
{
	$itemType = ($params['itemType'] ?? self::ITEM_TYPE_LOG);
	$itemId = (int)($params['itemId'] ?? 0);
	$logId = (int)($params['logId'] ?? 0);
	$content = trim(($params['content'] ?? ''));

	if (
		!in_array($itemType, self::getItemTypes())
		|| $itemId <= 0
		|| $logId <= 0
		|| empty($content)
	)
	{
		return false;
	}

	$connection = Application::getConnection();
	$helper = $connection->getSqlHelper();

	$value = $helper->forSql($content);
	$encryptedValue = sha1($content);

	$insertFields = [
		'ITEM_TYPE' => $helper->forSql($itemType),
		'ITEM_ID' => $itemId,
		'LOG_ID' => $logId,
		'CONTENT' => $value,
	];

	$updateFields = [
		'CONTENT' => new SqlExpression("IF(SHA1(CONTENT) = '{$encryptedValue}', CONTENT, '{$value}')"),
	];

	if (
		isset($params['logDateUpdate'])
		&& $params['logDateUpdate'] instanceof DateTime
	)
	{
		$insertFields['LOG_UPDATE'] = $params['logDateUpdate'];
		$updateFields['LOG_UPDATE'] = $params['logDateUpdate'];
	}

	if (
		isset($params['dateCreate'])
		&& $params['dateCreate'] instanceof DateTime
	)
	{
		$insertFields['DATE_CREATE'] = $params['dateCreate'];
		$updateFields['DATE_CREATE'] = $params['dateCreate'];
	}

	$merge = $helper->prepareMerge(
		static::getTableName(),
		[ 'ITEM_TYP', 'ITEM_ID' ],
		$insertFields,
		$updateFields
	);

	if ($merge[0] != '')
	{
		$connection->query($merge[0]);
	}

	return true;
}