- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/agent/files/clearunregisteredlogo.php
- Класс: Bitrix\Crm\Agent\Files\ClearUnregisteredLogo
- Вызов: ClearUnregisteredLogo::doRun
static function doRun()
{
$limit = (int)static::$limit;
if ($limit <= 0)
{
$limit = 100;
}
$timeLimit = (int)static::$timeLimit;
if (defined('START_EXEC_TIME') && START_EXEC_TIME > 0)
{
$startTime = (int)START_EXEC_TIME;
}
else
{
$startTime = time();
}
$connection = Application::getConnection();
$workLoad = false;
$sqlDisk = $sqlActivityDisk = '';
$diskAvailable = Main\ModuleManager::isModuleInstalled('disk') &&
Main\Loader::includeModule('disk');
if ($diskAvailable)
{
$sqlDisk = "
AND ID NOT IN (SELECT FILE_ID FROM b_disk_version )
AND ID NOT IN (SELECT FILE_ID FROM b_disk_object
WHERE TYPE = '".\Bitrix\Disk\Internals\ObjectTable::TYPE_FILE."'
AND ID = REAL_OBJECT_ID AND FILE_ID IS NOT NULL)
";
// activity disk file
$sqlActivityDisk = "
AND ID NOT IN(
SELECT FILE_ID FROM b_disk_object
WHERE TYPE = '".\Bitrix\Disk\Internals\ObjectTable::TYPE_FILE."'
AND ID IN(SELECT ELEMENT_ID FROM b_crm_act_elem where STORAGE_TYPE_ID = '".\Bitrix\Crm\Integration\StorageType::Disk."')
)
";
}
$ufFieldSql = '';
$ufFieldQueries = static::prepareUserFieldQuery();
foreach ($ufFieldQueries as $queryStr)
{
$ufFieldSql .= " AND ID NOT IN({$queryStr}) ";
}
for ($i = 2, $auxiliaries = ['1 as n']; $i <= 50; $i++)
{
$auxiliaries[] = $i;
}
$auxiliarySql = implode(' union select ', $auxiliaries);
$storageTypeFile = \Bitrix\Crm\Integration\StorageType::File;
$result = $connection->query("
select ID
from b_file
where
MODULE_ID = 'crm'
-- image
and CONTENT_TYPE like 'image/%'
-- activity file
AND ID NOT IN (SELECT ELEMENT_ID FROM b_crm_act_elem where STORAGE_TYPE_ID = '{$storageTypeFile}')
-- activity disk file
{$sqlActivityDisk}
-- event file
and id not in (select
CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(src.fids, ' ', NS.n), ' ', -1) AS UNSIGNED) as FILE_ID
from (
select {$auxiliarySql}
) NS
inner join
(
select
@xml := replace(replace(replace(replace(e.FILES,'a:',''),';}