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/export/setup/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/cvetdv.ru/bitrix/modules/yandex.market/lib/export/setup/table.php
<?php

namespace Yandex\Market\Export\Setup;

use Bitrix\Main;
use Yandex\Market;

Main\Localization\Loc::loadMessages(__FILE__);

class Table extends Market\Reference\Storage\Table
{
	public static function getTableName()
	{
		return 'yamarket_export_setup';
	}

	public static function getUfId()
	{
		return 'YAMARKET_EXPORT_SETUP';
	}

    /** @noinspection ClassConstantCanBeUsedInspection */
	public static function getMap()
	{
        return array_merge([
			new Main\Entity\IntegerField('ID', [
				'autocomplete' => true,
				'primary' => true
			]),
			new Main\Entity\StringField('NAME', [
				'required' => true
			]),
			new Main\Entity\StringField('DOMAIN', [
				'required' => true,
				'validation' => [__CLASS__, 'getValidationForDomain'],
			]),
			new Main\Entity\BooleanField('HTTPS', [
				'values' => ['0', '1']
			]),
			new Main\Entity\BooleanField('ENABLE_AUTO_DISCOUNTS', [
				'values' => ['0', '1'],
				'default_value' => '1'
			]),
			new Main\Entity\BooleanField('ENABLE_CPA', [
				'values' => ['0', '1'],
				'default_value' => '0',
			]),
        ],
        Market\Watcher\Setup\StorageSchedule::getFields(false, Market\Watcher\Setup\StorageSchedule::DAY),
        [
			new Main\Entity\StringField('EXPORT_SERVICE', [
				'required' => true,
				'size' => 20
			]),
			new Main\Entity\StringField('EXPORT_FORMAT', [
				'required' => true,
				'size' => 20
			]),
			new Main\Entity\StringField('FILE_NAME', [
				'required' => true,
				'format' => '/^[0-9A-Za-z-_.\\/]+$/',
				'size' => 20
			]),
			new Main\Entity\StringField('SALES_NOTES', [
				'size' => 50
			]),
			new Main\Entity\ReferenceField('IBLOCK_LINK', Market\Export\IblockLink\Table::class, [
				'=this.ID' => 'ref.SETUP_ID'
			]),
			new Main\Entity\ReferenceField('IBLOCK', 'Bitrix\Iblock\Iblock', [
				'=this.IBLOCK_LINK.IBLOCK_ID' => 'ref.ID',
			]),
			new Main\Entity\ReferenceField('DELIVERY', Market\Export\Delivery\Table::class, [
				'=this.ID' => 'ref.ENTITY_ID',
				'=ref.ENTITY_TYPE' => ['?', Market\Export\Delivery\Table::ENTITY_TYPE_SETUP],
			]),
			new Main\Entity\TextField(
				'SHOP_DATA',
				Market\Reference\Storage\Field\Serializer::getParameters()
			),
            new Main\Entity\ReferenceField('PROMO_LINK', Market\Export\Promo\Internals\SetupLinkTable::class, [
                '=this.ID' => 'ref.SETUP_ID'
            ]),
            new Main\Entity\ReferenceField('COLLECTION_LINK', Market\Export\Collection\Internals\SetupLinkTable::class, [
                '=this.ID' => 'ref.SETUP_ID'
            ]),
			new Main\Entity\ReferenceField('GROUP_LINK', Internals\GroupLinkTable::class, [
				'=this.ID' => 'ref.SETUP_ID',
			]),
			new Main\Entity\ReferenceField('GROUP', Internals\GroupTable::class, [
				'=this.GROUP_LINK.GROUP_ID' => 'ref.ID',
			]),
		]);
	}

	public static function migrate(Main\DB\Connection $connection)
	{
		$tableName = static::getTableName();
		$sqlHelper = $connection->getSqlHelper();
		$tableFields = $connection->getTableFields($tableName);

		parent::migrate($connection);

		if (!isset($tableFields['ENABLE_CPA']))
		{
			$connection->queryExecute(sprintf(
				'UPDATE %s SET %s=\'%s\'',
				$sqlHelper->quote($tableName),
				$sqlHelper->quote('ENABLE_CPA'),
				$sqlHelper->forSql('0')
			));
		}
	}

	public static function getValidationForDomain()
	{
		return [
			[ __CLASS__, 'validateDomain' ],
		];
	}

	public static function validateDomain($value)
	{
		$result = true;
		$value = trim($value);

		if (preg_match('#^(https?:)?//#i', $value))
		{
			$result = Market\Config::getLang('EXPORT_SETUP_VALIDATE_DOMAIN_WITHOUT_PROTOCOL');
		}

		return $result;
	}

	public static function getMapDescription()
	{
		$result = parent::getMapDescription();
		$result['NAME']['USER_TYPE'] = Market\Ui\UserField\Manager::getUserType('name');

        $result['IBLOCK']['MANDATORY'] = 'Y';
        $result['IBLOCK']['MULTIPLE'] = 'Y';
        $result['IBLOCK']['USER_TYPE'] = Market\Ui\UserField\Manager::getUserType('iblock');
        $result['IBLOCK']['USER_TYPE']['USE_FIELD_COMPONENT'] = false;

        $result['FILE_NAME']['USER_TYPE'] = Market\Ui\UserField\Manager::getUserType('exportFile');

        $result = Market\Watcher\Setup\StorageSchedule::extendMapDescription($result);

        $result['EXPORT_SERVICE']['USER_TYPE'] = Market\Ui\UserField\Manager::getUserType('enumeration');
        $result['EXPORT_SERVICE']['VALUES'] = [];

        $result['EXPORT_FORMAT']['USER_TYPE'] = Market\Ui\UserField\Manager::getUserType('enumeration');
        $result['EXPORT_FORMAT']['VALUES'] = [];

        $usedTypeList = [];

        foreach (Market\Export\Xml\Format\Manager::getServiceList() as $service)
        {
            $result['EXPORT_SERVICE']['VALUES'][] = [
                'ID' => $service,
                'VALUE' => Market\Export\Xml\Format\Manager::getServiceTitle($service)
            ];

            foreach (Market\Export\Xml\Format\Manager::getTypeList($service) as $type)
            {
                if (isset($usedTypeList[$type])) { continue; }

                $usedTypeList[$type] = true;

                $result['EXPORT_FORMAT']['VALUES'][] = [
                    'ID' => $type,
                    'VALUE' => Market\Export\Xml\Format\Manager::getTypeTitle($type),
                ];
            }
        }

        $result['ENABLE_CPA']['DEPRECATED'] = 'Y';
        $result['ENABLE_AUTO_DISCOUNTS']['DEPRECATED'] = 'Y';

		return $result;
	}

	/**
     * @param int|int[]|null $primary
	 *
	 * @return array
	 */
	public static function getReference($primary = null)
	{
		return [
			'IBLOCK_LINK' => [
				'TABLE' => Market\Export\IblockLink\Table::class,
				'LINK_FIELD' => 'SETUP_ID',
				'LINK' => [
					'SETUP_ID' => $primary,
				],
			],
			'DELIVERY' => [
				'TABLE' => Market\Export\Delivery\Table::class,
				'LINK_FIELD' => 'ENTITY_ID',
				'LINK' => [
					'ENTITY_TYPE' => Market\Export\Delivery\Table::ENTITY_TYPE_SETUP,
					'ENTITY_ID' => $primary,
				],
			]
		];
	}

	public static function loadExternalReference($primaryList, $select = null, $isCopy = false)
	{
		$result = parent::loadExternalReference($primaryList, $select, $isCopy);

		if (!empty($primaryList))
		{
			$referenceMap = [
				'IBLOCK' => 'loadExternalReferenceIblock',
				'GROUP' => 'loadExternalReferenceGroup',
			];

			foreach ($referenceMap as $field => $method)
			{
				if (empty($select) || in_array($field, $select, true))
				{
					$referenceDataList = static::$method($primaryList);

					foreach ($referenceDataList as $setupId => $referenceValue)
					{
						if (!isset($result[$setupId]))
						{
							$result[$setupId] = [];
						}

						$result[$setupId][$field] = $referenceValue;
					}
				}
			}
		}

		return $result;
	}

    /** @noinspection PhpUnused */
    protected static function loadExternalReferenceIblock($setupIds)
	{
		$result = [];

		// load row data

		$query = Market\Export\IblockLink\Table::getList([
			'filter' => [
				'=SETUP_ID' => $setupIds,
			],
			'select' => [
				'ID',
				'IBLOCK_ID',
				'SETUP_ID',
			],
		]);

		while ($row = $query->fetch())
		{
			if (!isset($result[$row['SETUP_ID']]))
			{
				$result[$row['SETUP_ID']] = [];
			}

			$result[$row['SETUP_ID']][$row['ID']] = $row['IBLOCK_ID'];
		}

		return $result;
	}

    /** @noinspection PhpUnused */
	protected static function loadExternalReferenceGroup($setupIds)
	{
		$result = [];

		$query = Internals\GroupLinkTable::getList([
			'filter' => [ '=SETUP_ID' => $setupIds, ],
			'select' => [ 'SETUP_ID',  'GROUP_ID' ],
		]);

		while ($row = $query->fetch())
		{
			if (!isset($result[$row['SETUP_ID']]))
			{
				$result[$row['SETUP_ID']] = [];
			}

			$result[$row['SETUP_ID']][] = (int)$row['GROUP_ID'];
		}

		return $result;
	}

	public static function saveExtractReference(array &$data)
	{
		$result = parent::saveExtractReference($data);

		if (array_key_exists('IBLOCK', $data))
		{
			unset($data['IBLOCK']);
		}

		if (array_key_exists('GROUP', $data))
		{
			$result['GROUP'] = $data['GROUP'];
			unset($data['GROUP']);
		}

		return $result;
	}

	protected static function saveApplyReference($primary, $fields)
	{
		parent::saveApplyReference($primary, $fields);

		if (array_key_exists('GROUP', $fields))
		{
			static::saveGroupReference($primary, (array)$fields['GROUP']);
		}
	}

	protected static function saveGroupReference($primary, $groups)
	{
		$queryExistsLinks = Internals\GroupLinkTable::getList([
			'filter' => [ '=SETUP_ID' => $primary ],
			'select' => [ 'GROUP_ID' ]
		]);
		$existsLinks = $queryExistsLinks->fetchAll();
		$existsGroups = array_column($existsLinks, 'GROUP_ID');
		$existsGroupsMap = array_flip($existsGroups);
		$groupsMap = array_flip($groups);
		$deleteGroups = array_diff_key($existsGroupsMap, $groupsMap);
		$addGroups = array_diff_key($groupsMap, $existsGroupsMap);

		foreach ($deleteGroups as $groupId => $dummy)
		{
			Internals\GroupLinkTable::delete([
				'SETUP_ID' => $primary,
				'GROUP_ID' => $groupId,
			]);
		}

		foreach ($addGroups as $groupId => $dummy)
		{
			Internals\GroupLinkTable::add([
				'SETUP_ID' => $primary,
				'GROUP_ID' => $groupId,
			]);
		}
	}

	public static function deleteReference($primary)
	{
		parent::deleteReference($primary);
		static::deleteReferenceTables($primary);
		static::deleteReferenceWriterIndex($primary);
		static::deleteReferenceChanges($primary);
	}

	protected static function deleteReferenceTables($primary)
	{
		/** @var \Yandex\Market\Reference\Storage\Table[] $runDataClassList */
		$runDataClassList = [
			Market\Export\Run\Storage\CategoryTable::class,
			Market\Export\Run\Storage\CurrencyTable::class,
			Market\Export\Run\Storage\OfferTable::class,
			Market\Export\Run\Storage\CollectionOfferTable::class,
			Market\Export\Run\Storage\CollectionTable::class,
			Market\Export\Run\Storage\PromoProductTable::class,
			Market\Export\Run\Storage\PromoGiftTable::class,
			Market\Export\Run\Storage\GiftTable::class,
			Market\Export\Run\Storage\PromoTable::class,
			Market\Logger\Table::class => 'ENTITY_PARENT',
			Internals\GroupLinkTable::class,
			Market\Export\Promo\Internals\SetupLinkTable::class,
			Market\Export\Collection\Internals\SetupLinkTable::class,
		];

		foreach ($runDataClassList as $key => $runDataClass)
		{
			if (!is_numeric($key))
			{
				$field = $runDataClass;
				$runDataClass = $key;
			}
			else
			{
				$field = 'SETUP_ID';
			}

			$runDataClass::deleteBatch([
				'filter' => [
					'=' . $field => $primary
				]
			]);
		}
	}

    protected static function deleteReferenceWriterIndex($primary)
    {
        Market\Export\Run\Writer\IndexFacade::remove($primary);
    }

	protected static function deleteReferenceChanges($primary)
	{
		Market\Watcher\Track\StampTable::deleteBatch([
			'filter' => [
				'=SERVICE' => Market\Glossary::SERVICE_EXPORT,
				'=SETUP_ID' => $primary,
			]
		]);
	}

	protected static function onBeforeRemove($primary)
	{
		$model = Model::loadById($primary);

		$model->onBeforeRemove();
	}

	protected static function onAfterSave($primary)
	{
		$model = Model::loadById($primary);

		$model->onAfterSave();
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit