- Модуль: disk
- Путь к файлу: ~/bitrix/modules/disk/lib/volume/module/webdav.php
- Класс: BitrixDiskVolumeModuleWebdav
- Вызов: Webdav::measure
public function measure(array $collectData = []): self
{
if (!$this->isMeasureAvailable())
{
$this->addError(new BitrixMainError('', self::ERROR_MEASURE_UNAVAILABLE));
return $this;
}
$connection = BitrixMainApplication::getConnection();
$indicatorType = $connection->getSqlHelper()->forSql(static::className());
$indicatorIblockType = $connection->getSqlHelper()->forSql(VolumeModuleIblock::className());
$ownerId = (string)$this->getOwner();
$includeIblockIds = [];
$webdavIblockList = $this->getIblockList();
if (count($webdavIblockList) > 0)
{
foreach ($webdavIblockList as $iblock)
{
$includeIblockIds[] = $iblock['ID'];
}
}
$agr = new VolumeModuleIblock();
$agr
->setOwner($this->getOwner())
->addFilter('@IBLOCK_ID', $includeIblockIds)
->purify()
->measure();
$querySql = "
SELECT
'{$indicatorType}' as INDICATOR_TYPE,
{$ownerId} as OWNER_ID,
". $connection->getSqlHelper()->getCurrentDateTimeFunction(). " as CREATE_TIME,
SUM(FILE_SIZE),
SUM(FILE_COUNT)
FROM
b_disk_volume
WHERE
INDICATOR_TYPE = '{$indicatorIblockType}'
AND IBLOCK_ID IN(". implode(',', $includeIblockIds) .")
";
$columnList = VolumeQueryHelper::prepareInsert(
[
'INDICATOR_TYPE',
'OWNER_ID',
'CREATE_TIME',
'FILE_SIZE',
'FILE_COUNT',
],
$this->getSelect()
);
$tableName = VolumeTable::getTableName();
$connection->queryExecute("INSERT INTO {$tableName} ({$columnList}) {$querySql}");
return $this;
}