• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/internals/counter/user.php
  • Класс: BitrixTasksInternalsCounterUser
  • Вызов: User::onAfterTaskAdd
static function onAfterTaskAdd(array $fields)
{
	$responsible = new Collection;
	$originator = new Collection;
	$auditor = new Collection;
	$accomplice = new Collection;

	if ($fields['RESPONSIBLE_ID'] != $fields['CREATED_BY'])
	{
		$responsible->push(CounterName::MY_NOT_VIEWED);
		$originator->push(CounterName::MY_NOT_VIEWED);

		if ($fields['DEADLINE'])
		{
			$originator->push(CounterName::ORIGINATOR_EXPIRED);
			$responsible->push(CounterName::MY_EXPIRED);
			$responsible->push(CounterName::MY_EXPIRED_SOON);
		}
		else
		{
			$originator->push(CounterName::ORIGINATOR_WITHOUT_DEADLINE);
			$responsible->push(CounterName::MY_WITHOUT_DEADLINE);
		}
	}

	if (!empty($fields['AUDITORS']))
	{
		if ($fields['DEADLINE'])
		{
			$auditor->push(CounterName::AUDITOR_EXPIRED);
		}
	}

	if (!empty($fields['ACCOMPLICES']))
	{
		$accomplice->push(CounterName::ACCOMPLICES_NOT_VIEWED);

		if ($fields['DEADLINE'])
		{
			$accomplice->push(CounterName::ACCOMPLICES_EXPIRED);
			$accomplice->push(CounterName::ACCOMPLICES_EXPIRED_SOON);
		}
	}

	// PROCESS RECALCULATE
	if ($responsible->count() > 0)
	{
		$responsible->push(CounterName::OPENED);
		$responsible->push(CounterName::CLOSED);

		$counter = self::getInstance($fields['RESPONSIBLE_ID']);
		$counter->processRecalculate($responsible);
	}

	if ($originator->count() > 0)
	{
		$originator->push(CounterName::OPENED);
		$originator->push(CounterName::CLOSED);

		$counter = self::getInstance($fields['CREATED_BY']);
		$counter->processRecalculate($originator);
	}

	if ($auditor->count() > 0)
	{
		foreach ($fields['AUDITORS'] as $userId)
		{
			$counter = self::getInstance($userId);
			$counter->processRecalculate($auditor);
		}
	}

	if ($accomplice->count() > 0)
	{
		foreach ($fields['ACCOMPLICES'] as $userId)
		{
			$accomplice->push(CounterName::OPENED);
			$accomplice->push(CounterName::CLOSED);

			$counter = static::getInstance($userId);
			$counter->processRecalculate($accomplice);
		}
	}
}