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/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/sale/lib/basket.php
<?php
/**
 * Bitrix Framework
 * @package bitrix
 * @subpackage sale
 * @copyright 2001-2012 Bitrix
 */
namespace Bitrix\Sale;

use Bitrix\Main\Localization\Loc;
use Bitrix\Sale\Internals;
use Bitrix\Main;

Loc::loadMessages(__FILE__);

/**
 * Class Basket
 * @package Bitrix\Sale
 */
class Basket extends BasketBase
{
	const BASKET_DELETE_LIMIT = 2000;

	/**
	 * @return string
	 */
	public static function getRegistryType()
	{
		return Registry::REGISTRY_TYPE_ORDER;
	}

	/**
	 * @param array $parameters
	 * @return Main\DB\Result|mixed
	 * @throws Main\ArgumentException
	 */
	public static function getList(array $parameters = array())
	{
		return Internals\BasketTable::getList($parameters);
	}

	/**
	 * @param $idOrder
	 * @return Result
	 * @throws Main\ArgumentException
	 * @throws Main\ArgumentNullException
	 * @throws Main\NotImplementedException
	 */
	public static function deleteNoDemand($idOrder)
	{
		$result = new Result();

		$itemsDataList = static::getList(
			array(
				"filter" => array("=ORDER_ID" => $idOrder),
				"select" => array("ID", "TYPE")
			)
		);

		/** @var BasketItem $itemClassName */
		$itemClassName = static::getItemCollectionClassName();
		while ($item = $itemsDataList->fetch())
		{
			if ($item['TYPE'] === $itemClassName::TYPE_SET)
			{
				$r = Internals\BasketTable::deleteBundle($item['ID']);
			}
			else
			{
				$r = Internals\BasketTable::deleteWithItems($item['ID']);
			}

			if (!$r->isSuccess())
			{
				$result->addErrors($r->getErrors());
			}
		}

		return $result;
	}

	/**
	 * @param int $days
	 *
	 * @return int
	 */
	public static function deleteOld($days): int
	{
		$days = (int)$days;

		$connection = Main\Application::getConnection();
		$helper = $connection->getSqlHelper();

		$query = $helper->prepareDeleteLimit(
			Internals\BasketTable::getTableName(),
			['ID'],
			"
				FUSER_ID IN (
				SELECT b_sale_fuser.ID FROM b_sale_fuser WHERE
						b_sale_fuser.DATE_UPDATE < " . $helper->addDaysToDateTime(-$days) . "
						AND b_sale_fuser.USER_ID IS NULL
				) AND ORDER_ID IS NULL
			",
			[],
			static::BASKET_DELETE_LIMIT
		);

		$connection->queryExecute($query);
		$affectRows = $connection->getAffectedRowsCount();

		$query = $helper->prepareDeleteLimit(
			Internals\BasketTable::getTableName(),
			['ID'],
			"
				FUSER_ID NOT IN (SELECT b_sale_fuser.ID FROM b_sale_fuser)
				AND ORDER_ID IS NULL
			",
			[],
			static::BASKET_DELETE_LIMIT
		);

		$connection->queryExecute($query);
		$affectRows = max($affectRows, $connection->getAffectedRowsCount());

		$query = $helper->prepareDeleteLimit(
			Internals\BasketPropertyTable::getTableName(),
			['ID'],
			"
				BASKET_ID NOT IN (
					SELECT b_sale_basket.ID FROM b_sale_basket
				)
			",
			[],
			static::BASKET_DELETE_LIMIT
		);

		$connection->queryExecute($query);

		return max($affectRows, $connection->getAffectedRowsCount());
	}

	/**
	 * @param $days
	 * @param int $speed
	 * @return string
	 */
	public static function deleteOldAgent($days, $speed = 0)
	{
		$days = (int)$days;

		$affectRows = static::deleteOld($days);
		Fuser::deleteOld($days);

		$days = (int)Main\Config\Option::get('sale', 'delete_after');
		$result = "\Bitrix\Sale\Basket::deleteOldAgent(" . $days . ");";

		if ($affectRows === static::BASKET_DELETE_LIMIT)
		{
			global $pPERIOD;
			$pPERIOD = 300;
		}

		return $result;
	}

	/**
	 * @return array|bool
	 * @throws Main\ArgumentException
	 * @throws Main\ArgumentNullException
	 * @throws Main\NotImplementedException
	 */
	// must be moved to notify
	public function getListOfFormatText()
	{
		$list = array();

		/** @var BasketItem $basketItemClassName */
		$basketItemClassName = static::getItemCollectionClassName();

		/** @var BasketItem $basketItem */
		foreach ($this->collection as $basketItem)
		{
			$basketItemData = $basketItem->getField("NAME");

			/** @var \Bitrix\Sale\BasketPropertiesCollection $basketPropertyCollection */
			if ($basketPropertyCollection = $basketItem->getPropertyCollection())
			{
				$basketItemDataProperty = "";
				/** @var \Bitrix\Sale\BasketPropertyItem $basketPropertyItem */
				foreach ($basketPropertyCollection as $basketPropertyItem)
				{
					if ($basketPropertyItem->getField('CODE') == "PRODUCT.XML_ID"
						|| $basketPropertyItem->getField('CODE') == "CATALOG.XML_ID"
						|| $basketPropertyItem->getField('CODE') == "SUM_OF_CHARGE"
					)
					{
						continue;
					}

					if (strval(trim($basketPropertyItem->getField('VALUE'))) == "")
						continue;


					$basketItemDataProperty .= (!empty($basketItemDataProperty) ? "; " : "").trim($basketPropertyItem->getField('NAME')).": ".trim($basketPropertyItem->getField('VALUE'));
				}

				if (!empty($basketItemDataProperty))
					$basketItemData .= " [".$basketItemDataProperty."]";
			}

			$measure = (strval($basketItem->getField("MEASURE_NAME")) != '') ? $basketItem->getField("MEASURE_NAME") : Loc::getMessage("SOA_SHT");
			$list[$basketItem->getBasketCode()] = $basketItemData." - ".$basketItemClassName::formatQuantity($basketItem->getQuantity())." ".$measure." x ".SaleFormatCurrency($basketItem->getPrice(), $basketItem->getCurrency());

		}

		return !empty($list) ? $list : false;
	}

	/**
	 * Save basket
	 *
	 * @return Result
	 */
	public function save()
	{
		$result = parent::save();

		$orderId = $this->getOrderId();
		if ($orderId > 0)
		{
			$registry = Registry::getInstance(static::getRegistryType());

			/** @var OrderHistory $orderHistory */
			$orderHistory = $registry->getOrderHistoryClassName();
			$orderHistory::collectEntityFields('BASKET', $orderId);
		}

		return $result;
	}

	/**
	 * @param array $itemValues
	 * @return Result
	 * @throws Main\ArgumentException
	 * @throws Main\ArgumentNullException
	 * @throws Main\NotImplementedException
	 */
	protected function deleteInternal(array $itemValues)
	{
		$result = new Result();

		/** @var BasketItem $itemClassName */
		$itemClassName = static::getItemCollectionClassName();
		if ($itemValues['TYPE'] == $itemClassName::TYPE_SET)
		{
			$r = Internals\BasketTable::deleteBundle($itemValues['ID']);
		}
		else
		{
			$r = Internals\BasketTable::deleteWithItems($itemValues['ID']);
		}

		if (!$r->isSuccess())
		{
			$result->addErrors($r->getErrors());
		}

		$orderId = $this->getOrderId();
		if ($orderId > 0)
		{
			$registry = Registry::getInstance(static::getRegistryType());

			/** @var OrderHistory $orderHistory */
			$orderHistory = $registry->getOrderHistoryClassName();
			$orderHistory::addLog(
				'BASKET',
				$orderId,
				'BASKET_ITEM_DELETED',
				$itemValues['ID'],
				null,
				array(
					"PRODUCT_ID" => $itemValues["PRODUCT_ID"],
					"NAME" => $itemValues["NAME"],
					"QUANTITY" => $itemValues["QUANTITY"],
				),
				$orderHistory::SALE_ORDER_HISTORY_LOG_LEVEL_1
			);
		}

		return $result;
	}

	/**
	 * @param $itemValues
	 * @throws Main\ArgumentException
	 * @return void
	 */
	protected function callEventOnSaleBasketItemDeleted($itemValues)
	{
		parent::callEventOnSaleBasketItemDeleted($itemValues);

		$orderId = $this->getOrderId();
		if ($orderId > 0)
		{
			$registry = Registry::getInstance(static::getRegistryType());

			/** @var OrderHistory $orderHistory */
			$orderHistory = $registry->getOrderHistoryClassName();
			$orderHistory::addAction(
				'BASKET',
				$orderId,
				'BASKET_REMOVED',
				$itemValues['ID'],
				null,
				array(
					'NAME' => $itemValues['NAME'],
					'QUANTITY' => $itemValues['QUANTITY'],
					'PRODUCT_ID' => $itemValues['PRODUCT_ID'],
				)
			);

			/** @var EntityMarker $entityMarker */
			$entityMarker = $registry->getEntityMarkerClassName();
			$entityMarker::deleteByFilter(array(
				'=ORDER_ID' => $orderId,
				'=ENTITY_TYPE' => $entityMarker::ENTITY_TYPE_BASKET_ITEM,
				'=ENTITY_ID' => $itemValues['ID'],
			));
		}
	}

	/**
	 * @internal
	 *
	 * @param $index
	 * @return BasketItemBase
	 * @throws Main\ArgumentException
	 * @throws Main\ArgumentNullException
	 * @throws Main\ArgumentOutOfRangeException
	 * @throws Main\NotSupportedException
	 * @throws Main\ObjectNotFoundException
	 * @throws Main\SystemException
	 */
	public function deleteItem($index)
	{
		/** @var Order $order */
		if ($order = $this->getOrder())
		{
			/** @var BasketItem $item */
			$item = $this->getItemByIndex($index);

			$order->onBeforeBasketItemDelete($item);
		}

		return parent::deleteItem($index);
	}

}

Youez - 2016 - github.com/yon3zu
LinuXploit