• Модуль: imbot
  • Путь к файлу: ~/bitrix/modules/imbot/lib/bot/support24.php
  • Класс: BitrixImBotBotSupport24
  • Вызов: Support24::saveSettings
static function saveSettings(array $settings): bool
{
	if (
		!empty($settings[self::OPTION_BOT_FREE_CODE])
		&& !empty($settings[self::OPTION_BOT_PAID_CODE])
	)
	{
		$updateBotProperties = false;
		$botCodes = [];
		foreach ($settings as $optionName => $optionValue)
		{
			if ($optionName == MixinOPTION_BOT_QUESTION_LIMIT)
			{
				Option::set(self::MODULE_ID, $optionName, $optionValue ?? -1);
				$updateBotProperties = true;
			}
			elseif ($optionName == self::OPTION_BOT_PAID_ACTIVE)
			{
				// set support level - paid
				$optionValue = (int)$optionValue;
				$prevPaidActive = (int)Option::get(self::MODULE_ID, $optionName, -1);
				if ($prevPaidActive != $optionValue)
				{
					Option::set(self::MODULE_ID, $optionName, $optionValue);
					$updateBotProperties = true;
				}
			}
			elseif (Option::get(self::MODULE_ID, $optionName, '') != $optionValue)
			{
				if ($optionName == self::OPTION_BOT_FREE_CODE)
				{
					$prevFreeCode = Option::get(self::MODULE_ID, $optionName, '');
					$botCodes[] = $optionValue;
					$botCodes[] = $prevFreeCode;
					$updateBotProperties = true;
				}
				elseif ($optionName == self::OPTION_BOT_PAID_CODE)
				{
					$prevPaidCode = Option::get(self::MODULE_ID, $optionName, '');
					$botCodes[] = $optionValue;
					$botCodes[] = $prevPaidCode;
					$updateBotProperties = true;
				}
				elseif (
					in_array($optionName, [
						self::OPTION_BOT_FREE_NAME,
						self::OPTION_BOT_FREE_DESC,
						self::OPTION_BOT_FREE_AVATAR,
						self::OPTION_BOT_PAID_NAME,
						self::OPTION_BOT_PAID_DESC,
						self::OPTION_BOT_PAID_AVATAR,
					])
				)
				{
					$updateBotProperties = true;
				}

				Option::set(self::MODULE_ID, $optionName, $optionValue);
			}
		}

		// set start date
		$dateRegister = Option::get(self::MODULE_ID, self::OPTION_BOT_FREE_START_DATE, 0);
		if (!$dateRegister)
		{
			$codes = implode("', '", array_filter($botCodes));

			// check previous version of bot
			$connection = BitrixMainApplication::getInstance()->getConnection();
			$res = $connection->query("
				SELECT DATE_REGISTER
				FROM b_im_bot B INNER JOIN b_user U ON B.BOT_ID = U.ID
				WHERE B.APP_ID IN ('{$codes}')
				ORDER BY DATE_REGISTER
			");
			if ($row = $res->fetch())
			{
				$dateRegister = $row['DATE_REGISTER']->getTimestamp();
			}
			else
			{
				$dateRegister = time();
			}
			Option::set(self::MODULE_ID, self::OPTION_BOT_FREE_START_DATE, $dateRegister);
		}

		// update im bot props
		if ($updateBotProperties)
		{
			self::updateBotProperties();
		}
	}

	return true;
}