• Модуль: imbot
  • Путь к файлу: ~/bitrix/modules/imbot/lib/bot/support24.php
  • Класс: BitrixImBotBotSupport24
  • Вызов: Support24::checkPortalStageMode
static function checkPortalStageMode(int $userId, bool $delayAction = false)
{
	$session = MainApplication::getInstance()->getSession();
	$time = time();
	if (
		!$session->has(self::OPTION_BOT_STAGE_ACTIVE)
		|| ($time - (int)$session->get(self::OPTION_BOT_STAGE_ACTIVE)) > 86400
	)
	{
		$session->set(self::OPTION_BOT_STAGE_ACTIVE, $time);

		$isStageActive = (int)Option::get(self::MODULE_ID, self::OPTION_BOT_STAGE_ACTIVE, 0);
		if (self::isStagePortal())
		{
			if ($isStageActive == 0)
			{
				Option::set(self::MODULE_ID, self::OPTION_BOT_STAGE_ACTIVE, $time);
				self::deleteScheduledAction(self::USER_LEVEL_ADMIN, self::SCHEDULE_ACTION_CHECK_STAGE);
				if ($delayAction)
				{
					self::scheduleAction(self::USER_LEVEL_ADMIN, self::SCHEDULE_ACTION_CHECK_STAGE, 'START');
				}
				else
				{
					self::sendNotifyPortalStageMode([
						'IS_STAGE_STARTED' => true
					]);

					return false;
				}
			}
		}
		elseif ($isStageActive > 0)
		{
			Option::delete(self::MODULE_ID, ['name' => self::OPTION_BOT_STAGE_ACTIVE]);
			self::deleteScheduledAction(self::USER_LEVEL_ADMIN, self::SCHEDULE_ACTION_CHECK_STAGE);
			if ($delayAction)
			{
				self::scheduleAction(self::USER_LEVEL_ADMIN, self::SCHEDULE_ACTION_CHECK_STAGE, 'STOP');
			}
			else
			{
				self::sendNotifyPortalStageMode([
					'IS_STAGE_STOPPED' => true
				]);
			}
		}
	}

	return true;
}