• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/general/access.php
  • Класс: CAccess
  • Вызов: CAccess::NeedToRecalculate
static function NeedToRecalculate($provider, $USER_ID, DateTime $now)
{
	global $DB, $CACHE_MANAGER;

	$USER_ID = intval($USER_ID);

	if (!isset(static::$arChecked[$provider][$USER_ID]))
	{
		$cacheId = static::GetCheckCacheId($provider, $USER_ID);

		if (CACHED_b_user_access_check !== false && $CACHE_MANAGER->Read(CACHED_b_user_access_check, $cacheId, static::CHECK_CACHE_DIR))
		{
			static::$arChecked[$provider][$USER_ID] = $CACHE_MANAGER->Get($cacheId);
		}
		else
		{
			$res = $DB->Query("
				select DATE_CHECK
				from b_user_access_check
				where USER_ID = " . $USER_ID . "
					and PROVIDER_ID = '" . $DB->ForSql($provider) . "'
			");

			static::$arChecked[$provider][$USER_ID] = [];
			while ($check = $res->Fetch())
			{
				static::$arChecked[$provider][$USER_ID][] = $check['DATE_CHECK'];
			}

			if (CACHED_b_user_access_check !== false)
			{
				$CACHE_MANAGER->Set($cacheId, static::$arChecked[$provider][$USER_ID]);
			}
		}
	}

	$helper = MainApplication::getConnection()->getSqlHelper();

	foreach (static::$arChecked[$provider][$USER_ID] as $dateCheck)
	{
		$date = $helper->convertFromDbDateTime($dateCheck);
		if ($date && $date->getTimestamp() <= $now->getTimestamp())
		{
			return true;
		}
	}

	return false;
}