- Модуль: biconnector
- Путь к файлу: ~/bitrix/modules/biconnector/lib/dictionarymanager.php
- Класс: BitrixBIConnectorDictionaryManager
- Вызов: DictionaryManager::validateCache
static function validateCache($dictionaryId)
{
$dictionaryId = intval($dictionaryId);
$manager = Manager::getInstance();
$connection = $manager->getDatabaseConnection();
$helper = $connection->getSqlHelper();
if (isset(static::$validated[$dictionaryId]))
{
return static::$validated[$dictionaryId];
}
$select = static::getInsertSelect($dictionaryId);
if (!$select)
{
static::$validated[$dictionaryId] = false;
return false;
}
$sql = '
SELECT UPDATE_DATE
FROM ' . DictionaryCacheTable::getTableName() . '
WHERE DICTIONARY_ID = ' . $dictionaryId . '
AND DATE_ADD(UPDATE_DATE, INTERVAL TTL SECOND) > ' . $helper->getCurrentDateTimeFunction() . '
';
$updateDate = $connection->queryScalar($sql);
if ($updateDate)
{
static::$validated[$dictionaryId] = true;
return true;
}
$now = new BitrixMainTypeDateTime();
$insertFields = [
'DICTIONARY_ID' => $dictionaryId,
'UPDATE_DATE' => $now,
'TTL' => Dictionary::CACHE_TTL,
];
$updateFields = [
'UPDATE_DATE' => $now,
'TTL' => Dictionary::CACHE_TTL,
];
$queries = $helper->prepareMerge(DictionaryCacheTable::getTableName(), [
'DICTIONARY_ID',
], $insertFields, $updateFields);
foreach ($queries as $query)
{
$connection->queryExecute($query);
}
DictionaryDataTable::deleteByFilter([
'=DICTIONARY_ID' => $dictionaryId,
]);
DictionaryDataTable::insertSelect($select);
static::$validated[$dictionaryId] = true;
return true;
}