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/ilovecveti.ru/bitrix/modules/catalog/lib/grid/row/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/ilovecveti.ru/bitrix/modules/catalog/lib/grid/row/productrowassembler.php
<?php

namespace Bitrix\Catalog\Grid\Row;

use Bitrix\Catalog\Grid\Row\Assembler\Factory\PriceFieldAssemblerFactory;
use Bitrix\Catalog\Grid\Row\Assembler\MeasureFieldAssembler;
use Bitrix\Catalog\Grid\Row\Assembler\MorePhotoAssembler;
use Bitrix\Catalog\Grid\Row\Assembler\ProductSelectorFieldAssembler;
use Bitrix\Catalog\Grid\Row\Assembler\ProductTypeFieldAssembler;
use Bitrix\Catalog\Grid\Row\Assembler\LockedFieldAssembler;
use Bitrix\Catalog\Grid\Row\Assembler\ProductNameFieldAssembler;
use Bitrix\Catalog\Grid\Row\Assembler\PurchasingPriceFieldAssembler;
use Bitrix\Catalog\Grid\Row\Assembler\VatFieldAssembler;
use Bitrix\Catalog\Grid\Settings\ProductSettings;
use Bitrix\Catalog\ProductTable;
use Bitrix\Iblock\Grid\Row\Assembler\SectionNameFieldAssembler;
use Bitrix\Iblock\Grid\Row\ElementRowAssembler;
use Bitrix\Main\Grid\Row\Assembler\Field\StringFieldAssembler;
use Bitrix\Main\Loader;

Loader::requireModule('iblock');

/**
 * @property ProductSettings $settings
 */
class ProductRowAssembler extends ElementRowAssembler
{
	private bool $isUseCatalogTab = false;
	private bool $isUseSkuSelector = false;

	public function setUseCatalogTab(bool $value = true): void
	{
		$this->isUseCatalogTab = $value;
	}

	public function setUseSkuSelector(bool $value = true): void
	{
		$this->isUseSkuSelector = $value;
	}

	protected function prepareFieldAssemblers(): array
	{
		$result = parent::prepareFieldAssemblers();

		if ($this->isUseSkuSelector)
		{
			$result[] = new ProductSelectorFieldAssembler(
				'PRODUCT', $this->settings
			);
		}
		else
		{
			$result[] = new ProductNameFieldAssembler(
				['PRODUCT'],
				$this->settings->getUrlBuilder()
			);
		}

		$result[] = new SectionNameFieldAssembler(
			['PRODUCT'],
			$this->settings->getUrlBuilder()
		);

		$result[] = new MeasureFieldAssembler(['MEASURE']);

		$result[] = new ProductTypeFieldAssembler(['TYPE']);

		$result[] = new VatFieldAssembler(['VAT_ID']);

		$result[] = new LockedFieldAssembler($this->settings);

		$result[] = (new PriceFieldAssemblerFactory)->createForCatalogPrices();

		$result[] = new PurchasingPriceFieldAssembler();

		$result[] = new MorePhotoAssembler(
			['MORE_PHOTO'],
			$this->settings
		);

		$result[] = new StringFieldAssembler(['XML_ID', 'CODE']);

		return $result;
	}

	private function getClearedProductFields(): array
	{
		$result = array_fill_keys(ProductTable::getProductTypes(false), []);

		$baseClearSkuFields = [
			'QUANTITY',
			'QUANTITY_RESERVED',
			'QUANTITY_TRACE',
			'CAN_BUY_ZERO',
			'PURCHASING_PRICE',
			'PURCHASING_CURRENCY',
			'MEASURE',
			'VAT_INCLUDED',
			'VAT_ID',
			'WEIGHT',
			'WIDTH',
			'LENGTH',
			'HEIGHT',
		];

		if (!$this->isUseSkuSelector && !$this->isUseCatalogTab)
		{
			$result[ProductTable::TYPE_SKU] = $baseClearSkuFields;
		}

		if (!$this->isUseCatalogTab)
		{
			$result[ProductTable::TYPE_EMPTY_SKU] = $baseClearSkuFields;
		}

		$result[ProductTable::TYPE_SET] = [
			'QUANTITY_RESERVED',
		];

		$result[ProductTable::TYPE_SERVICE] = [
			'QUANTITY',
			'QUANTITY_RESERVED',
			'QUANTITY_TRACE',
			'CAN_BUY_ZERO',
			'WEIGHT',
			'WIDTH',
			'LENGTH',
			'HEIGHT',
		];

		return $result;
	}

	private function clearProductFields(array $rowsList): array
	{
		$clearedFields = $this->getClearedProductFields();

		foreach ($rowsList as $index => $rowItem)
		{
			$productType = (int)($rowList[$index]['data']['TYPE'] ?? 0);
			if (isset($clearedFields[$productType]))
			{
				foreach ($clearedFields[$productType] as $fieldName)
				{
					if (isset($rowList[$index]['data'][$fieldName]))
					{
						$rowList[$index]['data'][$fieldName] = '';
					}
				}
			}
		}

		return $rowsList;
	}

	public function prepareRows(array $rowsList): array
	{
		$rowsList = $this->clearProductFields($rowsList);

		return parent::prepareRows($rowsList);
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit