Your IP : 216.73.216.86


Current Path : /var/www/homesaver/www/bitrix/modules/catalog/lib/update/
Upload File :
Current File : /var/www/homesaver/www/bitrix/modules/catalog/lib/update/documentfilescleanup.php

<?php

namespace Bitrix\Catalog\Update;

use Bitrix\Catalog\StoreDocumentFileTable;

class DocumentFilesCleanup
{
	public static function execAgent(): string
	{
		$connection = \Bitrix\Main\Application::getConnection();
		$helper = $connection->getSqlHelper();
		$queryResult = $connection->query('
			select doc_files.ID, FILE_ID from b_catalog_store_document_file doc_files
			left outer join b_catalog_store_docs docs
			on docs.ID = doc_files.DOCUMENT_ID
			where docs.ID is null
			limit 50
		');
		$documentFiles = $queryResult->fetchAll();

		if (empty($documentFiles))
		{
			return '';
		}

		$filesToRemove = array_column($documentFiles, 'FILE_ID');
		$entriesToRemove = array_column($documentFiles, 'ID');

		foreach ($filesToRemove as $fileId)
		{
			\CFile::Delete($fileId);
		}

		$entriesForQuery = implode(',', $entriesToRemove);

		$connection->queryExecute(
			'delete from ' . $helper->quote(StoreDocumentFileTable::getTableName())
			. ' where ' . $helper->quote('ID') . ' in (' . $entriesForQuery . ')'
		);

		$isCleanupOver = !(bool)$connection->query('
			select doc_files.ID, FILE_ID from b_catalog_store_document_file doc_files
			left outer join b_catalog_store_docs docs
			on docs.ID = doc_files.DOCUMENT_ID
			where docs.ID is null
			limit 1
		')->fetch();

		if ($isCleanupOver)
		{
			return '';
		}

		return '\Bitrix\Catalog\Update\DocumentFilesCleanup::execAgent();';
	}
}