- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/timeline/waitcontroller.php
- Класс: Bitrix\Crm\Timeline\WaitController
- Вызов: WaitController::onModify
public function onModify($ID, array $params)
{
if(!is_int($ID))
{
$ID = (int)$ID;
}
if($ID <= 0)
{
throw new Main\ArgumentException('ID must be greater than zero.', 'ID');
}
$currentFields = isset($params['CURRENT_FIELDS']) && is_array($params['CURRENT_FIELDS'])
? $params['CURRENT_FIELDS'] : array();
$previousFields = isset($params['PREVIOUS_FIELDS']) && is_array($params['PREVIOUS_FIELDS'])
? $params['PREVIOUS_FIELDS'] : array();
if(Main\Loader::includeModule('pull'))
{
$ownerTypeID = isset($previousFields['OWNER_TYPE_ID']) ? (int)$previousFields['OWNER_TYPE_ID'] : 0;
$ownerID = isset($previousFields['OWNER_ID']) ? (int)$previousFields['OWNER_ID'] : 0;
$historyEntryID = 0;
if(isset($currentFields['COMPLETED']))
{
$curCompleted = $currentFields['COMPLETED'] === 'Y';
$prevCompleted = isset($previousFields['COMPLETED']) && $previousFields['COMPLETED'] === 'Y';
if(!$prevCompleted && $curCompleted)
{
$authorID = isset($params['USER_ID']) && $params['USER_ID'] > 0
? (int)$params['USER_ID']
: \CCrmSecurityHelper::GetCurrentUserID();
$historyEntryID = \Bitrix\Crm\Timeline\WaitEntry::create(
array(
'ENTITY_ID' => $ID,
'AUTHOR_ID' => $authorID,
'BINDINGS' => array(
array(
'ENTITY_TYPE_ID' => $ownerTypeID,
'ENTITY_ID' => $ownerID
)
)
)
);
}
}
$pushParams = array(
'ENTITY' => self::prepareEntityDataModel($ID, $currentFields),
'SCHEDULE_ITEM' => self::prepareScheduleDataModel(
$currentFields,
array('ENABLE_USER_INFO' => true)
)
);
if($historyEntryID > 0)
{
$historyFields = TimelineEntry::getByID($historyEntryID);
if(is_array($historyFields))
{
$pushParams['HISTORY_ITEM'] = $this->prepareHistoryDataModel(
$historyFields,
array('ENABLE_USER_INFO' => true)
);
}
}
$tag = $pushParams['TAG'] = TimelineEntry::prepareEntityPushTag($ownerTypeID, $ownerID);
\CPullWatch::AddToStack(
$tag,
array(
'module_id' => 'crm',
'command' => 'timeline_wait_update',
'params' => $pushParams,
)
);
}
}