- Модуль: 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;
}