- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/volume/emailattachment.php
- Класс: Bitrix\Crm\Volume\EmailAttachment
- Вызов: EmailAttachment::measureFiles
public function measureFiles()
{
$entityGroupField = array(
'DATE_CREATE' => 'DATE_CREATED_SHORT',
'STAGE_SEMANTIC' => 'STAGE_SEMANTIC_ID',
);
$activityQuery = $this->prepareQuery($entityGroupField);
// only email attachments
//$activityQuery->where('TYPE_ID', '=', \CCrmActivityType::Email);
foreach ($entityGroupField as $alias => $field)
{
$activityQuery->addSelect($field, $alias);
$activityQuery->addGroup($field);
}
$activityQuery->addFilter('>FILE_COUNT', 0);
$querySql = $activityQuery->getQuery();
if ($querySql != '')
{
$querySql = "
SELECT
'".static::getIndicatorId()."' as INDICATOR_TYPE,
'".$this->getOwner()."' as OWNER_ID,
DATE_CREATE,
STAGE_SEMANTIC,
SUM(FILE_SIZE) as FILE_SIZE,
SUM(FILE_COUNT) as FILE_COUNT,
SUM(DISK_SIZE) as DISK_SIZE,
SUM(DISK_COUNT) as DISK_COUNT
FROM
(
{$querySql}
) src
GROUP BY
DATE_CREATE,
STAGE_SEMANTIC
";
Crm\VolumeTable::updateFromSelect(
$querySql,
array(
'FILE_SIZE' => 'destination.FILE_SIZE + source.FILE_SIZE',
'FILE_COUNT' => 'destination.FILE_COUNT + source.FILE_COUNT',
'DISK_SIZE' => 'destination.DISK_SIZE + source.DISK_SIZE',
'DISK_COUNT' => 'destination.DISK_COUNT + source.DISK_COUNT',
),
array(
'INDICATOR_TYPE' => 'INDICATOR_TYPE',
'OWNER_ID' => 'OWNER_ID',
'DATE_CREATE' => 'DATE_CREATE',
'STAGE_SEMANTIC_ID' => 'STAGE_SEMANTIC',
)
);
}
$connection = \Bitrix\Main\Application::getConnection();
$sqlDel = "
DELETE FROM ".$connection->getSqlHelper()->quote(Crm\VolumeTable::getTableName())."
WHERE
INDICATOR_TYPE = '".static::getIndicatorId()."' AND
OWNER_ID = '".$this->getOwner()."' AND
FILE_COUNT = 0
";
$connection->queryExecute($sqlDel);
return $this;
}