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/tradingplatform/landing/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

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

namespace Bitrix\Sale\TradingPlatform\Landing;

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

Loc::loadMessages(__FILE__);

/**
 * Class Landing
 * @package Bitrix\Sale\TradingPlatform\Landing
 */
class Landing
	extends Sale\TradingPlatform\Platform
	implements Sale\TradingPlatform\IRestriction
{
	public const TRADING_PLATFORM_CODE = 'landing';
	public const CODE_DELIMITER = '_';

	public const LANDING_STORE_CLOTHES = 'clothes';
	public const LANDING_STORE_INSTAGRAM = 'instagram';
	public const LANDING_STORE_CHATS = 'chats';
	public const LANDING_STORE_MINI_ONE_ELEMENT = 'mini-one-element';
	public const LANDING_STORE_MINI_CATALOG = 'mini-catalog';
	public const LANDING_STORE_STORE_V3 = 'store_v3';

	protected static $stores = [
		self::LANDING_STORE_CLOTHES,
		self::LANDING_STORE_INSTAGRAM,
		self::LANDING_STORE_CHATS,
		self::LANDING_STORE_MINI_ONE_ELEMENT,
		self::LANDING_STORE_MINI_CATALOG,
		self::LANDING_STORE_STORE_V3,
	];

	protected $site = [];

	/**
	 * @return bool|int
	 */
	public function install()
	{
		$data = $this->getInfo();

		$result = Sale\TradingPlatformTable::add([
			"CODE" => $this->getCode(),
			"ACTIVE" => "Y",
			"NAME" => Loc::getMessage('SALE_LANDING_NAME', ['#NAME#' => $data['TITLE']]),
			"DESCRIPTION" => '',
			"CLASS" => '\\'.static::class,
			"XML_ID" => static::generateXmlId(),
		]);

		if ($result->isSuccess())
		{
			$this->isInstalled = true;
			$this->id = $result->getId();
		}

		return $result->isSuccess();
	}

	/**
	 * @return string
	 */
	protected static function generateXmlId()
	{
		return uniqid('bx_');
	}

	/**
	 * @return int
	 */
	protected function getSiteId()
	{
		return (int)mb_substr($this->getCode(), mb_strrpos($this->getCode(), '_') + 1);
	}

	/**
	 * @return void
	 */
	public static function setShipmentTableOnAfterUpdateEvent()
	{
		return;
	}

	/**
	 * @return void
	 */
	protected static function unSetShipmentTableOnAfterUpdateEvent()
	{
		return;
	}

	/**
	 * @return void
	 */
	protected function setCatalogSectionsTabEvent()
	{
		return;
	}

	/**
	 * @return void
	 */
	protected function unSetCatalogSectionsTabEvent()
	{
		return;
	}

	/**
	 * @param Main\Event $event
	 */
	public static function onLandingSiteAdd(Main\Event $event)
	{
		$fields = $event->getParameter('fields');
		if ($fields['TYPE'] !== 'STORE')
		{
			return;
		}

		$primary = $event->getParameter('primary');
		$landing = Landing::getInstanceByCode(static::getCodeBySiteId($primary['ID']));
		if (!$landing->isInstalled())
		{
			$landing->install();
		}
	}

	public static function onLandingSiteUpdate(Main\Event $event)
	{
		$fields = $event->getParameter('fields');
		if (empty($fields['TYPE']) || $fields['TYPE'] !== 'STORE')
		{
			return;
		}

		$primary = $event->getParameter('primary');
		$landing = Landing::getInstanceByCode(static::getCodeBySiteId($primary['ID']));
		if ($landing->isInstalled())
		{
			Sale\TradingPlatformTable::update(
				$landing->getId(),
				[
					'NAME' => Loc::getMessage('SALE_LANDING_NAME', ['#NAME#' => $fields['TITLE']]),
				]
			);
		}
	}

	/**
	 * @param Main\Event $event
	 */
	public static function onLandingSiteDelete(Main\Event $event)
	{
		$primary = $event->getParameter('primary');

		$landing = Landing::getInstanceByCode(static::getCodeBySiteId($primary['ID']));
		if ($landing->isInstalled())
		{
			$registry = Sale\Registry::getInstance(Sale\Registry::REGISTRY_TYPE_ORDER);

			/** @var Sale\TradeBindingCollection $tradeBindingCollection */
			$tradeBindingCollection = $registry->get(Sale\Registry::ENTITY_TRADE_BINDING_COLLECTION);

			$dbRes = $tradeBindingCollection::getList([
				'select' => ['ID'],
				'filter' => [
					'=TRADING_PLATFORM_ID' => $landing->getId()
				]
			]);

			if ($dbRes->fetch())
			{
				$landing->unsetActive();
			}
			else
			{
				$landing->uninstall();
			}
		}
	}

	/**
	 * @param Main\Event $event
	 */
	public static function onLandingBeforeSiteRecycle(Main\Event $event)
	{
		$id = $event->getParameter('id');
		$delete = $event->getParameter('delete');

		$res = \Bitrix\Landing\Site::getList([
			'select' => [
				'ID'
			],
			'filter' => [
				'=ID' => $id,
				'CHECK_PERMISSIONS' => 'N',
				'=TYPE' => 'STORE'
			]
		]);

		if (!$res->fetch())
		{
			return;
		}

		$landing = Landing::getInstanceByCode(static::getCodeBySiteId($id));
		if (!$landing || !$landing->isInstalled())
		{
			return;
		}

		if ($delete)
		{
			$landing->unsetActive();
		}
		else
		{
			$landing->setActive();
		}
	}

	/**
	 * @param $id
	 * @return string
	 */
	public static function getCodeBySiteId($id)
	{
		return static::TRADING_PLATFORM_CODE.static::CODE_DELIMITER.$id;
	}

	/**
	 * @return array
	 */
	public function getInfo()
	{
		if (!Main\Loader::includeModule('landing'))
		{
			return [];
		}

		if ($this->site)
		{
			return $this->site;
		}

		/** @var Main\DB\Result $dbRes */
		$dbRes = \Bitrix\Landing\Site::getList([
			'filter' => [
				'=ID' => $this->getSiteId(),
				'CHECK_PERMISSIONS' => 'N',
				'=DELETED' => ['Y', 'N'],
			]
		]);

		if ($data = $dbRes->fetch())
		{
			$this->site = $data;
			$this->site['PUBLIC_URL'] = \Bitrix\Landing\Site::getPublicUrl($this->getSiteId());
		}

		return $this->site;
	}

	public function getAnalyticCode()
	{
		$data = $this->getInfo();
		if (!isset($data['XML_ID']) || !$data['XML_ID'])
		{
			return parent::getAnalyticCode();
		}

		foreach (static::$stores as $store)
		{
			if (mb_strpos($data['XML_ID'], $store) !== false)
			{
				return $store;
			}
		}

		return $data['XML_ID'];
	}

	/**
	 * @param $type
	 * @param Sale\Order $order
	 * @return string
	 * @throws Main\ArgumentException
	 */
	public function getExternalLink($type, Sale\Order $order)
	{
		if ($type === static::LINK_TYPE_PUBLIC_DETAIL_ORDER)
		{
			return $this->getLandingSysPageUrl(
				'personal',
				[
					'SECTION' => 'orders',
					'ID' => $order->getId()
				]
			);
		}

		if ($type === static::LINK_TYPE_PUBLIC_FEEDBACK)
		{
			return $this->getLandingSysPageUrl('feedback');
		}

		throw new Main\ArgumentException("Unsupported link type: {$type}");
	}

	/**
	 * @param string $type
	 * @param array $additional
	 * @return string
	 */
	private function getLandingSysPageUrl(string $type, array $additional = []): string
	{
		if (!Main\Loader::includeModule('landing'))
		{
			return '';
		}

		return \Bitrix\Landing\Syspage::getSpecialPage($this->getSiteId(), $type, $additional);
	}

	/**
	 * @return string
	 */
	public function getRealName()
	{
		return (string)($this->getInfo()['TITLE'] ?? '');
	}

	/**
	 * @param string $type
	 * @return bool
	 */
	public function isOfType(string $type): bool
	{
		$info = $this->getInfo();
		if (!isset($info['XML_ID']))
		{
			return false;
		}

		return mb_strpos($info['XML_ID'], $type) !== false;
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit