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/component/molecules/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/cvetdv.ru/bitrix/modules/yandex.market/lib/component/molecules/userfields.php
<?php
namespace Yandex\Market\Component\Molecules;

use Bitrix\Main;
use Yandex\Market\Reference\Concerns;
use Yandex\Market\Utils;
use Yandex\Market\Error;

class UserFields
{
	use Concerns\HasMessage;

	const FIELDS_ALL = 'all';
	const FIELDS_KNOWN = 'known';

	private $fieldsStrategy;
	private $fields = [];

	public function __construct($fieldsStrategy = self::FIELDS_ALL)
	{
		$this->fieldsStrategy = $fieldsStrategy;
	}

	public function know($name)
	{
		$this->fields[$name] = true;
	}

	protected function isOur($name)
	{
		return $this->fieldsStrategy === self::FIELDS_ALL || isset($this->fields[$name]);
	}

	public function sanitize(array $request, array $fields)
	{
		foreach ($fields as $fieldName => $userField)
		{
			if (!$this->isOur($fieldName)) { continue; }

			if (!empty($userField['SETTINGS']['READONLY']))
			{
				Utils\Field::unsetChainValue($request, $fieldName, Utils\Field::GLUE_BRACKET);
				continue;
			}

			$requested = Utils\Field::getChainValue($request, $fieldName, Utils\Field::GLUE_BRACKET);

			if ($userField['MULTIPLE'] === 'Y')
			{
				if ($requested === null) { continue; }

				$sanitized = [];
				$requested = is_array($requested) ? $requested : [];

				foreach ($requested as $requestValueItem)
				{
					$sanitizedValue = $this->sanitizeUserFieldValue($userField, $requestValueItem);

					if (!Utils\Value::isEmpty($sanitizedValue))
					{
						$sanitized[] = $sanitizedValue;
					}
				}
			}
			else
			{
				$sanitized = $this->sanitizeUserFieldValue($userField, $requested);
			}

			Utils\Field::setChainValue($request, $fieldName, $sanitized, Utils\Field::GLUE_BRACKET);
		}

		return $request;
	}

	protected function sanitizeUserFieldValue(array $userField, $value)
	{
		$result = $value;

		if (
			!empty($userField['USER_TYPE']['CLASS_NAME'])
			&& is_callable([$userField['USER_TYPE']['CLASS_NAME'], 'SanitizeFields'])
		)
		{
			$result = call_user_func(
				[$userField['USER_TYPE']['CLASS_NAME'], 'SanitizeFields'],
				$userField,
				$value
			);
		}

		return $result;
	}

	public function validate(Main\Entity\Result $result, $data, array $fields)
	{
		foreach ($fields as $fieldName => $userField)
		{
			if (!$this->isOur($fieldName)) { continue; }
			if (!empty($userField['SETTINGS']['READONLY']) || !empty($userField['DEPEND_HIDDEN'])) { continue; }
			if (!empty($userField['HIDDEN']) && $userField['HIDDEN'] !== 'N') { continue; }

			$dataField = Utils\Field::getChainValue($data, $fieldName, Utils\Field::GLUE_BRACKET);

			if ($userField['MULTIPLE'] === 'Y')
			{
				$values = is_array($dataField) ? $dataField : [];
			}
			else
			{
				$values = !Utils\Value::isEmpty($dataField) ? [ $dataField ] : [];
			}

			if (!empty($values))
			{
				foreach ($values as $value)
				{
					$checkResult = $this->checkUserFieldValue($fieldName, $userField, $value);

					if (!$checkResult->isSuccess())
					{
						$result->addErrors($checkResult->getErrors());
					}
				}
			}
			else if ($userField['MANDATORY'] === 'Y')
			{
				if (isset($userField['DEPRECATED']) && $userField['DEPRECATED'] === 'Y') { continue; }

				$result->addError(new Error\EntityError(
					self::getMessage('FIELD_REQUIRED', [
						'#FIELD_NAME#' => $userField['EDIT_FORM_LABEL'] ?: $fieldName,
					]),
					0,
					[ 'FIELD' => $fieldName ]
				));
			}
		}
	}

	protected function checkUserFieldValue($fieldName, $userField, $value)
	{
		$result = new Main\Entity\Result();

		if (!empty($userField['USER_TYPE']['CLASS_NAME']) && is_callable([$userField['USER_TYPE']['CLASS_NAME'], 'CheckFields']))
		{
			$userErrors = call_user_func(
				[$userField['USER_TYPE']['CLASS_NAME'], 'CheckFields'],
				$userField,
				$value
			);

			if (!empty($userErrors) && is_array($userErrors))
			{
				foreach ($userErrors as $userError)
				{
					$result->addError(new Error\EntityError(
						$userError['text'],
						0,
						[ 'FIELD' => $fieldName ]
					));
				}
			}
		}

		return $result;
	}

	public function beforeSave(array $fields, array $values, $primary = null, $originalValues = [])
	{
		$result = $values;

		foreach ($fields as $fieldName => $field)
		{
			if (!$this->isOur($fieldName)) { continue; }

			if (
				isset($field['USER_TYPE']['CLASS_NAME'])
				&& is_callable([$field['USER_TYPE']['CLASS_NAME'], 'onBeforeSave'])
			)
			{
				$userField = $field;
				$userField['ENTITY_VALUE_ID'] = $primary;
				$userField['VALUE'] = isset($originalValues[$fieldName]) ? $originalValues[$fieldName] : null;

				$fieldValue = Utils\Field::getChainValue($values, $fieldName, Utils\Field::GLUE_BRACKET);
				$fieldValue = call_user_func(
					[$field['USER_TYPE']['CLASS_NAME'], 'onBeforeSave'],
					$userField,
					$fieldValue
				);

				Utils\Field::setChainValue($result, $fieldName, $fieldValue, Utils\Field::GLUE_BRACKET);
			}
		}

		return $result;
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit