- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/timeline/orderpaymentcontroller.php
- Класс: Bitrix\Crm\Timeline\OrderPaymentController
- Вызов: OrderPaymentController::updateSettingFields
public function updateSettingFields($ownerID, $entryTypeID, array $fields)
{
$result = new Main\Result();
$ownerID = (int)$ownerID;
$entryTypeID = (int)$entryTypeID;
if($ownerID <= 0)
{
throw new Main\ArgumentException('Owner ID must be greater than zero.', 'ownerID');
}
$timelineData = Entity\TimelineTable::getList([
'filter' => [
'ASSOCIATED_ENTITY_ID' => $ownerID,
'ASSOCIATED_ENTITY_TYPE_ID' => \CCrmOwnerType::OrderPayment,
'TYPE_ID' => $entryTypeID,
]
]);
while ($row = $timelineData->fetch())
{
$settings = $row['SETTINGS'];
$settings['FIELDS'] = $fields;
$r = Entity\TimelineTable::update($row['ID'], ['SETTINGS' => $settings]);
if (!$r->isSuccess())
{
$result->addErrors($r->getErrors());
}
elseif (is_array($settings['BASE']))
{
$baseOwnerId = (int)$settings['BASE']['ENTITY_ID'];
$baseOwnerTypeId = (int)$settings['BASE']['ENTITY_TYPE_ID'];
if ($baseOwnerId > 0 && \CCrmOwnerType::IsDefined($baseOwnerTypeId))
{
$row['SETTINGS'] = $settings;
$items = array($row['ID'] => $row);
TimelineManager::prepareDisplayData($items);
if(Main\Loader::includeModule('pull') && \CPullOptions::GetQueueServerStatus())
{
$tag = TimelineEntry::prepareEntityPushTag($baseOwnerTypeId, $baseOwnerId);
\CPullWatch::AddToStack(
$tag,
array(
'module_id' => 'crm',
'command' => 'timeline_item_update',
'params' => array('ENTITY_ID' => $row['ID'], 'TAG' => $tag, 'HISTORY_ITEM' => $items[$row['ID']]),
)
);
}
}
}
}
return $result;
}