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