• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/classes/general/im_disk.php
  • Класс: CIMDisk
  • Вызов: CIMDisk::UpdateAvatarId
static function UpdateAvatarId($chatId, $fileId, $userId = null)
{
	$chatId = (int)$chatId;
	$fileId = (int)$fileId;
	if ($chatId <= 0 || $fileId <= 0)
	{
		return false;
	}

	$chat = IMModelChatTable::getById($chatId)->fetch();
	if (!$chat || in_array($chat['TYPE'], Array(IM_MESSAGE_PRIVATE, IM_MESSAGE_SYSTEM)))
	{
		return false;
	}

	$relationError = true;
	$chatRelation = CIMChat::GetRelationById($chatId, false, true, false);
	foreach ($chatRelation as $relation)
	{
		if ($relation["EXTERNAL_AUTH_ID"] == 'imconnector')
		{
			unset($chatRelation[$relation["USER_ID"]]);
			continue;
		}
		if ($relation['USER_ID'] == BitrixImCommon::getUserId($userId))
		{
			$relationError = false;
		}
	}
	if ($relationError)
	{
		return false;
	}

	if ($chat['AVATAR'] > 0)
	{
		CFile::DeLete($chat['AVATAR']);
	}
	IMModelChatTable::update($chatId, Array('AVATAR' => $fileId));

	$file['chatId'] = $chatId;
	$file['chatAvatar'] = CIMChat::GetAvatarImage($fileId);

	if ($chat["ENTITY_TYPE"] != 'CALL')
	{
		CIMChat::AddSystemMessage(Array(
			'CHAT_ID' => $chatId,
			'USER_ID' => BitrixImCommon::getUserId($userId),
			'MESSAGE_CODE' => 'IM_DISK_AVATAR_CHANGE_'
		));
	}

	if (BitrixMainLoader::includeModule('pull'))
	{
		$pullMessage = Array(
			'module_id' => 'im',
			'command' => 'chatAvatar',
			'params' => Array(
				'chatId' => $chatId,
				'avatar' => $file['chatAvatar'],
			),
			'extra' => BitrixImCommon::getPullExtra()
		);
		BitrixPullEvent::add(array_keys($chatRelation), $pullMessage);

		if ($chat['TYPE'] == IM_MESSAGE_OPEN || $chat['TYPE'] == IM_MESSAGE_OPEN_LINE)
		{
			CPullWatch::AddToStack('IM_PUBLIC_'.$chat['ID'], $pullMessage);
		}
	}

	return true;
}