- Модуль: disk
- Путь к файлу: ~/bitrix/modules/disk/lib/volume/bfile.php
- Класс: BitrixDiskVolumeBfile
- Вызов: Bfile::measure
public function measure(array $collectData = []): self
{
$connection = BitrixMainApplication::getConnection();
$indicatorType = $connection->getSqlHelper()->forSql(static::className());
$ownerId = (string)$this->getOwner();
$querySql = "
SELECT
'{$indicatorType}' as INDICATOR_TYPE,
{$ownerId} as OWNER_ID,
". $connection->getSqlHelper()->getCurrentDateTimeFunction(). " as CREATE_TIME,
bfile.FILE_SIZE,
bfile.FILE_COUNT,
disk_file.DISK_SIZE,
disk_file.DISK_COUNT,
disk_file.VERSION_COUNT
FROM
(
SELECT
SUM(FILE_SIZE) as FILE_SIZE,
COUNT(*) as FILE_COUNT
FROM
b_file
) bfile,
(
SELECT
SUM(f.FILE_SIZE) as DISK_SIZE,
COUNT(DISTINCT files.ID) as DISK_COUNT,
COUNT(ver.ID) as VERSION_COUNT
FROM
b_file f
INNER JOIN b_disk_version ver
ON f.ID = ver.FILE_ID
INNER JOIN b_disk_object files
ON files.ID = ver.OBJECT_ID
AND files.ID = files.REAL_OBJECT_ID
AND files.TYPE = '". ObjectTable::TYPE_FILE. "'
) disk_file
";
$columnList = VolumeQueryHelper::prepareInsert(
[
'INDICATOR_TYPE',
'OWNER_ID',
'CREATE_TIME',
'FILE_SIZE',
'FILE_COUNT',
'DISK_SIZE',
'DISK_COUNT',
'VERSION_COUNT',
],
$this->getSelect()
);
$tableName = VolumeTable::getTableName();
$connection->queryExecute("INSERT INTO {$tableName} ({$columnList}) {$querySql}");
return $this;
}