• Модуль: imbot
  • Путь к файлу: ~/bitrix/modules/imbot/lib/bot/support24.php
  • Класс: BitrixImBotBotSupport24
  • Вызов: Support24::sendNotifyAboutChangeLevel
static function sendNotifyAboutChangeLevel($params)
{
	if (self::isActivePartnerSupport())
	{
		return false;
	}

	$businessUsers = $params['BUSINESS_USERS'];
	$isSupportLevelChange = (bool)$params['IS_SUPPORT_LEVEL_CHANGE'];
	$isSupportCodeChange = (bool)$params['IS_SUPPORT_CODE_CHANGE'];
	$isDemoLevelChange = (bool)$params['IS_DEMO_LEVEL_CHANGE'];
	$isActiveFreeSupport = self::isActiveFreeSupport();

	$users = [self::getBotId()];
	$chats = [];
	foreach (self::getRecentDialogs() as $dialog)
	{
		if ($dialog['MESSAGE_TYPE'] == IM_MESSAGE_CHAT && in_array($dialog['CHAT_ID'], $chats))
		{
			continue;
		}
		elseif ($dialog['MESSAGE_TYPE'] == IM_MESSAGE_PRIVATE && in_array($dialog['USER_ID'], $users))
		{
			continue;
		}

		$message = '';
		if (self::getSupportLevel() == self::SUPPORT_LEVEL_PAID)
		{
			if ($isSupportLevelChange)
			{
				if (self::isActivePaidSupportForUser($dialog['USER_ID']))
				{
					$message = self::getMessage('CHANGE_ADMIN');
				}
				else
				{
					$message = self::getMessage('CHANGE_USER');
				}
			}
			elseif ($isDemoLevelChange)
			{
				if (self::isActivePaidSupportForUser($dialog['USER_ID']))
				{
					$message = self::getMessage('CHANGE_DEMO');
				}
			}
			elseif ($isSupportCodeChange)
			{
				if (self::isActivePaidSupportForUser($dialog['USER_ID']))
				{
					$message = self::getMessage('CHANGE_CODE');
				}
			}
		}
		else
		{
			if ($isSupportLevelChange)
			{
				if ($isActiveFreeSupport)
				{
					if (is_array($businessUsers) && in_array($dialog['USER_ID'], $businessUsers))
					{
						$message = self::getMessage('CHANGE_BUSINESS');
					}
					else
					{
						$message = self::getMessage('CHANGE_ADMIN');
					}
				}
				else
				{
					$message = self::getMessage('CHANGE_END');
				}
			}
			elseif ($isDemoLevelChange)
			{
				if ($isActiveFreeSupport)
				{
					$message = self::getMessage('CHANGE_DEMO');
				}
			}
			elseif ($isSupportCodeChange)
			{
				if ($isActiveFreeSupport)
				{
					$message = self::getMessage('CHANGE_CODE');
				}
			}
		}
		if (!$message)
		{
			continue;
		}

		if ($dialog['MESSAGE_TYPE'] == IM_MESSAGE_CHAT)
		{
			$chats[] = $dialog['CHAT_ID'];
		}
		elseif ($dialog['MESSAGE_TYPE'] == IM_MESSAGE_PRIVATE)
		{
			$users[] = $dialog['USER_ID'];
		}

		if ($dialog['RECENTLY_TALK'] == 'Y' && $dialog['MESSAGE_TYPE'] == IM_MESSAGE_PRIVATE)
		{
			self::sendMessage([
				'DIALOG_ID' => $dialog['USER_ID'],
				'MESSAGE' => $message,
				'SYSTEM' => 'N',
				'URL_PREVIEW' => 'N'
			]);
		}
		else
		{
			ImModelMessageTable::add([
				'CHAT_ID' => $dialog['CHAT_ID'],
				'AUTHOR_ID' => self::getBotId(),
				'MESSAGE' => self::replacePlaceholders($message, $dialog['USER_ID'])
			]);
		}
	}

	return true;
}