• Модуль: 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);
	}
}