- Модуль: tasks
- Путь к файлу: ~/bitrix/modules/tasks/lib/internals/counter/user.php
- Класс: BitrixTasksInternalsCounterUser
- Вызов: User::onAfterTaskUpdate
static function onAfterTaskUpdate($fields, $newFields)
{
$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(array_key_exists('RESPONSIBLE_ID', $newFields) &&
$newFields['RESPONSIBLE_ID'] != $fields['RESPONSIBLE_ID'])
{
$counter = self::getInstance($newFields['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(array_key_exists('CREATED_BY', $newFields) &&
$newFields['CREATED_BY'] != $fields['CREATED_BY'])
{
$counter = self::getInstance($newFields['CREATED_BY']);
$counter->processRecalculate($originator);
}
}
if ($auditor->count() > 0)
{
$auditors = array_unique(
array_merge($fields['AUDITORS'], $newFields['AUDITORS'])
);
foreach ($auditors as $userId)
{
$auditor->push(CounterName::OPENED);
$auditor->push(CounterName::CLOSED);
$counter = self::getInstance($userId);
$counter->processRecalculate($auditor);
}
}
if ($accomplice->count() > 0)
{
$accomplices = array_unique(
array_merge($fields['ACCOMPLICES'], $newFields['ACCOMPLICES'])
);
foreach ($accomplices as $userId)
{
$accomplice->push(CounterName::OPENED);
$accomplice->push(CounterName::CLOSED);
$counter = static::getInstance($userId);
$counter->processRecalculate($accomplice);
}
}
}