Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/catalog/lib/update/ |
Upload File : |
<?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();'; } }