• Модуль: clouds
  • Путь к файлу: ~/bitrix/modules/clouds/lib/filehash.php
  • Класс: BitrixCloudsFileHashTable
  • Вызов: FileHashTable::copyToFileHash
static function copyToFileHash($lastKey, $pageSize)
{
	$lastKey = (int)$lastKey;
	$pageSize = (int)$pageSize;
	$sql = "
		SELECT
			b_file.ID as FILE_ID
			,b_clouds_file_hash.FILE_SIZE as FILE_SIZE
			,b_clouds_file_hash.FILE_HASH as FILE_HASH
		FROM
			b_file
			INNER JOIN b_clouds_file_hash ON
				b_clouds_file_hash.BUCKET_ID = b_file.HANDLER_ID
				AND b_clouds_file_hash.FILE_PATH = concat('/', b_file.SUBDIR, '/', b_file.FILE_NAME)
			LEFT JOIN b_file_duplicate ON
				b_file_duplicate.DUPLICATE_ID = b_file.ID
		WHERE
			b_file.ID > " . $lastKey . "
			AND b_file_duplicate.DUPLICATE_ID is null
		ORDER BY b_file.ID
		LIMIT " . $pageSize . "
	";

	$connection = BitrixMainApplication::getConnection();
	$fileIds = $connection->query('
		SELECT
			min(FILE_ID) as FILE_ID_MIN
			,max(FILE_ID) as FILE_ID_MAX
			,count(FILE_ID) FILE_ID_CNT
		FROM (' . $sql . ') t
	')->fetch();

	if ($fileIds['FILE_ID_CNT'] > 0)
	{
		$connection->queryExecute('INSERT IGNORE INTO b_file_hash '.$sql);
	}

	return $fileIds;
}