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