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/rest/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

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

namespace Bitrix\Sale\Rest;

use Bitrix\Main\Event;
use Bitrix\Main\Loader;
use Bitrix\Rest\RestException;
use Bitrix\Sale\EventActions;
use Bitrix\Sale\Internals\Entity;
use Bitrix\Sale\Rest\Synchronization\LoggerDiag;
use Bitrix\Sale\Rest\Synchronization\Manager;
use Bitrix\Sale\Rest\Synchronization\Synchronizer;
use Bitrix\Rest\Sqs;

class RestManager
{

//RegisterModuleDependences("rest", "onRestGetModule", "sale", "\\Bitrix\\Sale\\Rest\\RestManager", "onRestGetModule");
//RegisterModuleDependences("rest", "OnRestServiceBuildDescription", "sale", "\\Bitrix\\Sale\\Rest\\RestManager", "onRestServiceBuildDescription");
///rest/event.bind.json?auth=423f8e5b0000cdb90000cdb8000000010000030eb629c718430b3c900e901aa414b84c&auth_type=0&event=OnSaleOrderSaved&handler=http://evgenik.office.bitrix.ru/handler/
///rest/event.bind.json?auth=423f8e5b0000cdb90000cdb8000000010000030eb629c718430b3c900e901aa414b84c&auth_type=0&event=OnSaleBeforeOrderDelete&handler=http://evgenik.office.bitrix.ru/handler/

//	public static function onRestGetModule()
//	{
//		return ['MODULE_ID' => 'sale'];
//	}

	public static function onRestServiceBuildDescription()
	{
		Loader::includeModule('sale');

		return [
			'sale' => [
				\CRestUtil::EVENTS => [
					'OnSaleOrderSaved' => [
						'sale',
						'OnSaleOrderSaved',
						[
							RestManager::class,
							'processEvent',
						],
						[
							'category' => Sqs::CATEGORY_CRM,
						],
					],
					'OnSaleBeforeOrderDelete' => [
						'sale',
						'OnSaleBeforeOrderDelete',
						[
							RestManager::class,
							'processEvent',
						],
						[
							'category' => Sqs::CATEGORY_CRM,
						],
					],
					'OnPropertyValueEntitySaved' => [
						'sale',
						'OnSalePropertyValueEntitySaved',
						[
							RestManager::class,
							'processEvent',
						],
						[
							'category' => Sqs::CATEGORY_CRM,
						],
					],
					'OnPaymentEntitySaved' => [
						'sale',
						'OnSalePaymentEntitySaved',
						[
							RestManager::class,
							'processEvent',
						],
						[
							'category' => Sqs::CATEGORY_CRM,
						],
					],
					'OnShipmentEntitySaved' => [
						'sale',
						'OnSaleShipmentEntitySaved',
						[
							RestManager::class,
							'processEvent',
						],
						[
							'category' => Sqs::CATEGORY_CRM,
						],
					],
					'OnOrderEntitySaved' => [
						'sale',
						'OnSaleOrderEntitySaved',
						[
							RestManager::class,
							'processEvent',
						],
						[
							'category' => Sqs::CATEGORY_CRM,
						],
					],
					'OnPropertyValueDeleted' => [
						'sale',
						'OnSalePropertyValueDeleted',
						[
							RestManager::class,
							'processEvent',
						],
						[
							'category' => Sqs::CATEGORY_CRM,
						],
					],
					'OnPaymentDeleted' => [
						'sale',
						'OnSalePaymentDeleted',
						[
							RestManager::class,
							'processEvent',
						],
						[
							'category' => Sqs::CATEGORY_CRM,
						],
					],
					'OnShipmentDeleted' => [
						'sale',
						'OnSaleShipmentDeleted',
						[
							RestManager::class,
							'processEvent',
						],
						[
							'category' => Sqs::CATEGORY_CRM,
						],
					],
					'OnOrderDeleted' => [
						'sale',
						'OnSaleOrderDeleted',
						[
							RestManager::class,
							'processEvent',
						],
						[
							'category' => Sqs::CATEGORY_CRM,
						],
					],
				]
			]
		];
	}

	public static function processEvent(array $params, array $handlerFields)
	{
		/** @var Event $event */
		$event = $params[0];
		$eventParameters = $event->getParameters();
		/** @var Entity|null $entity */
		$entity = $eventParameters['ENTITY'] ?? null;
		$eventName = $handlerFields['EVENT_NAME'];
		$eventHandler = $handlerFields['EVENT_HANDLER'];

		$instance = Manager::getInstance();
		$action = $instance->getAction();

		LoggerDiag::addMessage(
			'processEvent',
			var_export(
				[
					'processEvent [process-01]' => [
						'eventName' => $eventName,
						'action' => $action,
					],
				],
				true
			)
		);

		switch(mb_strtolower($eventName))
		{
			case 'onsaleordersaved':
				if (in_array($action, [Manager::ACTION_IMPORT, Manager::ACTION_DELETED], true))
				{
					throw new RestException("Event stopped");
				}
				elseif ($instance->isExecutedHandler($eventHandler))
				{
					throw new RestException("Event stopped");
				}

				if ($entity->getId() <= 0)
				{
					throw new RestException("Could not find entity ID in fields of event \"{$eventName}\"");
				}

				$parameters = [
					'FIELDS' => [
						'ID' => $entity->getId(),
						'XML_ID' => $entity->getField('XML_ID'),
						'ACTION' => Synchronizer::MODE_SAVE,
					]
				];

				LoggerDiag::addMessage(
					mb_strtolower($eventName),
					var_export(
						[
							'processEvent [process-02]' => [
								'parameters' => $parameters,
							],
						],
						true
					)
				);

				$instance->pushHandlerExecuted($eventHandler);

				return $parameters;

			case 'onsalebeforeorderdelete':
				if (in_array($action, [Manager::ACTION_IMPORT, Manager::ACTION_DELETED], true))
				{
					throw new RestException("Event stopped");
				}

				$instance->setAction(Manager::ACTION_DELETED);

				$parameters = [
					'FIELDS' => [
						'ID' => $entity->getId(),
						'XML_ID' => $entity->getField('XML_ID'),
						'ACTION' => Synchronizer::MODE_DELETE,
					]
				];

				LoggerDiag::addMessage(
					mb_strtolower($eventName),
					var_export(
						[
							'processEvent [process-03]' => [
								'parameters' => $parameters,
							],
						],
						true
					)
				);

				return $parameters;

			case 'onpropertyvalueentitysaved':
			case 'onpaymententitysaved':
			case 'onshipmententitysaved':
			case 'onorderentitysaved':
			case 'onpropertyvaluedeleted':
			case 'onpaymentdeleted':
			case 'onshipmentdeleted':
			case 'onorderdeleted':
				$entityId = 0;
				if ($entity !== null)
				{
					$entityId = $entity->getId();
				}
				elseif (isset($event->getParameters()['VALUES']))
				{
					$entityId = $event->getParameters()['VALUES']['ID'];
				}

				$parameters = ['FIELDS' => ['ID' => $entityId]];

				LoggerDiag::addMessage(
					mb_strtolower($eventName),
					var_export(
						[
							'processEvent [process-04]' => [
								'parameters' => $parameters,
							],
						],
						true
					)
				);

				return $parameters;

			default:
				throw new RestException("The Event \"{$eventName}\" is not supported in current context");
		}
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit