• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/delivery/services/automatic_profile.php
  • Класс: BitrixSaleDeliveryServicesAutomaticProfile
  • Вызов: AutomaticProfile::prepareFieldsForSaving
public function prepareFieldsForSaving(array $fields)
{
	$parentAutoConfig = $this->parentAutomatic->getConfigValues();

	if(isset($fields["CONFIG"]) && is_array($fields["CONFIG"]))
		$fields["CONFIG"] = array_merge($parentAutoConfig, $fields["CONFIG"]);

	$configMain = $fields["CONFIG"]["MAIN"];
	$handler = $this->parentHandlerInitParams;

	if (isset($handler["DBSETSETTINGS"]) && is_callable($handler["DBSETSETTINGS"]))
	{
		$oldSettings = $fields["CONFIG"];
		unset($oldSettings["MAIN"]);

		if(is_array($oldSettings))
			$oldSettings = Automatic::convertNewSettingsToOld($oldSettings);

		if (!$strOldSettings = call_user_func($handler["DBSETSETTINGS"], $oldSettings))
			throw new SystemException("Can't save delivery services's old settings");
	}
	else
	{
		$strOldSettings = "";
	}

	$strOldSettings = serialize($strOldSettings);

	$fields["CONFIG"] = array(
		"MAIN" => $configMain
	);

	$fields["CONFIG"]["MAIN"]["OLD_SETTINGS"] = $strOldSettings;
	$fields = parent::prepareFieldsForSaving($fields);
	$fields["CODE"] = $this->parentAutomatic->getSid().":".$this->profileId;

	if(!empty($fields['TRACKING_PARAMS']) && is_array($fields['TRACKING_PARAMS']))
	{
		$parentTP = $this->parentAutomatic->getTrackingParams();

		foreach($fields['TRACKING_PARAMS'] as $k => $v)
		{
			if (!empty($parentTP[$k]) && $v == $parentTP[$k])
			{
				$fields['TRACKING_PARAMS'][$k] = '';
			}
		}
	}

	return $fields;
}