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