- Модуль: im
- Путь к файлу: ~/bitrix/modules/im/lib/V2/Link/File/TemporaryFileService.php
- Класс: BitrixImV2LinkFileTemporaryFileService
- Вызов: TemporaryFileService::deleteUnattachedFiles
protected function deleteUnattachedFiles(): void
{
$subQuery = AttachedObjectTable::query()
->setSelect(['ID'])
->where('OBJECT_ID', new BitrixMainDBSqlExpression('%s'))
;
$unattachedFiles = FileTemporaryTable::query()
->setSelect(['DISK_FILE_ID'])
->where('DATE_CREATE', '<', $this->dateExpired)
->whereIn('SOURCE', self::SOURCE_MUST_BE_ATTACHED)
->whereExpr("NOT EXISTS ({$subQuery->getQuery()})", ['DISK_FILE_ID'])
->setLimit(self::LIMIT_SELECT_UNATTACHED_FILES)
->fetchAll()
;
$diskFilesIds = array_column($unattachedFiles, 'DISK_FILE_ID');
if (empty($diskFilesIds))
{
return;
}
$diskFiles = File::getModelList(['filter' => Query::filter()->whereIn('ID', $diskFilesIds)]);
foreach ($diskFiles as $diskFile)
{
$diskFile->delete(SystemUser::SYSTEM_USER_ID);
}
}