- Модуль: imbot
- Путь к файлу: ~/bitrix/modules/imbot/lib/bot/support24.php
- Класс: BitrixImBotBotSupport24
- Вызов: Support24::refreshAgent
static function refreshAgent(bool $regular = true): string
{
$botId = self::getBotId();
$settings = self::getBotSettings([
'BOT_ID' => $botId
]);
if ($settings)
{
$prevSupportLevel = Option::get(self::MODULE_ID, self::OPTION_BOT_SUPPORT_LEVEL, self::SUPPORT_LEVEL_FREE);
$prevPaidCode = Option::get(self::MODULE_ID, self::OPTION_BOT_PAID_CODE, '');
$prevFreeCode = Option::get(self::MODULE_ID, self::OPTION_BOT_FREE_CODE, '');
$previousCode = self::getBotCode();
//$prevRegion = CBitrix24::getPortalZone(CBitrix24::LICENSE_TYPE_PREVIOUS);
//$currentRegion = CBitrix24::getPortalZone(CBitrix24::LICENSE_TYPE_CURRENT);
//$isRegionChanged = $prevRegion != $currentRegion;
$prevDemoState = Option::get(self::MODULE_ID, self::OPTION_BOT_DEMO_ACTIVE, false);
$currentDemoState = CBitrix24::isDemoLicense();
$isDemoLevelChanged = $prevDemoState != $currentDemoState;
if (self::saveSettings($settings))
{
self::registerCommands();
self::registerApps();
Option::set(self::MODULE_ID, self::OPTION_BOT_DEMO_ACTIVE, $currentDemoState);
if ($currentDemoState)
{
Option::set(self::MODULE_ID, self::OPTION_BOT_FREE_START_DATE, time());
}
// support level
$currentSupportLevel = self::getSupportLevel();
$isSupportLevelChanged = $prevSupportLevel != $currentSupportLevel;
if ($isSupportLevelChanged)
{
Option::set(self::MODULE_ID, self::OPTION_BOT_SUPPORT_LEVEL, $currentSupportLevel);
}
$isPreviousSupportLevelPartner = $prevSupportLevel === self::SUPPORT_LEVEL_PARTNER;
// line code change
$currentCode = self::getBotCode();
$isLineCodeChanged = false;
if ($isSupportLevelChanged)
{
if (self::getSupportLevel() == self::SUPPORT_LEVEL_PAID)
{
$previousCode = $prevFreeCode;
$currentCode = Option::get(self::MODULE_ID, self::OPTION_BOT_PAID_CODE, '');
}
elseif (self::getSupportLevel() == self::SUPPORT_LEVEL_FREE)
{
$previousCode = $prevPaidCode;
$currentCode = Option::get(self::MODULE_ID, self::OPTION_BOT_FREE_CODE, '');
}
if ($isPreviousSupportLevelPartner)
{
$previousCode = Option::get('bitrix24', 'partner_ol', '');
}
}
else
{
if (self::getSupportLevel() == self::SUPPORT_LEVEL_PAID)
{
$previousCode = $prevPaidCode;
$currentCode = Option::get(self::MODULE_ID, self::OPTION_BOT_PAID_CODE, '');
$isLineCodeChanged = (
!empty($prevPaidCode)
&& !empty($currentCode)
&& $prevPaidCode != $currentCode
);
}
else
{
$previousCode = $prevFreeCode;
$currentCode = Option::get(self::MODULE_ID, self::OPTION_BOT_FREE_CODE, '');
$isLineCodeChanged = (
!empty($prevFreeCode)
&& !empty($currentCode)
&& $prevFreeCode != $currentCode
);
}
}
if ($isSupportLevelChanged || $isLineCodeChanged)
{
(new DialogSession)->clearSessions(['BOT_ID' => self::getBotId()]);
self::deleteScheduledAction(self::SCHEDULE_DELETE_ALL);
}
if (
$isSupportLevelChanged
|| $isLineCodeChanged
|| $isDemoLevelChanged
//|| $isRegionChanged
)
{
self::onSupportLevelChange([
'IS_SUPPORT_LEVEL_CHANGE' => $isSupportLevelChanged,
'IS_DEMO_LEVEL_CHANGE' => $isDemoLevelChanged,
//'IS_REGION_CHANGED' => $isRegionChanged,
'IS_SUPPORT_CODE_CHANGE' => $isLineCodeChanged,
'PREVIOUS_SUPPORT_LEVEL' => $prevSupportLevel,
'PREVIOUS_BOT_CODE' => $previousCode,
'CURRENT_BOT_CODE' => $currentCode,
]);
}
}
}
return $regular ? __METHOD__. '();' : '';
}