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/calendar/lib/integration/pull/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/calendar/lib/integration/pull/pushservice.php
<?php

namespace Bitrix\Calendar\Integration\Pull;

use Bitrix\Main\Application;
use Bitrix\Main\Loader;
use Bitrix\Main\LoaderException;
use Bitrix\Pull\Event;

class PushService
{
	public const MODULE_ID = 'calendar';

	private static ?self $instance;
	private static bool $isJobOn = false;

	private array $registry = [];

	public static function getInstance(): PushService
	{
		self::$instance ??= new self();

		return self::$instance;
	}

	/**
	 * @throws LoaderException
	 */
	public static function proceed(): void
	{
		if (!Loader::includeModule('pull'))
		{
			return;
		}

		self::getInstance()->sendEvents();
	}

	/**
	 * @param $recipients
	 * @param array $params
	 */
	public static function addEvent($recipients, array $params): void
	{
		$params = self::preparePullManagerParams($params);

		$parameters = [
			'RECIPIENTS' => $recipients,
			'PARAMS' => $params,
		];
		self::getInstance()->registerEvent($parameters);
		self::getInstance()->addBackgroundJob();
	}

	public static function addEventByTag(string $tag, array $params): void
	{
		$params = self::preparePullManagerParams($params);

		$parameters = [
			'TAG' => $tag,
			'PARAMS' => $params,
		];
		self::getInstance()->registerEvent($parameters);
		self::getInstance()->addBackgroundJob();
	}

	private function addBackgroundJob(): void
	{
		if (!self::$isJobOn)
		{
			$application = Application::getInstance();
			$application && $application->addBackgroundJob(self::proceed(...), [], 0);

			self::$isJobOn = true;
		}
	}

	/**
	 * @param array $parameters
	 */
	private function registerEvent(array $parameters): void
	{
		$this->registry[] = [
			'TAG' => $parameters['TAG'] ?? null,
			'RECIPIENTS' => $parameters['RECIPIENTS'] ?? null,
			'PARAMS' => $parameters['PARAMS'] ?? null,
		];
	}

	private function sendEvents(): void
	{
		foreach ($this->registry as $event)
		{
			if (isset($event['TAG']) && $event['TAG'] !== '')
			{
				\CPullWatch::AddToStack($event['TAG'], $event['PARAMS']);
			}
			else
			{
				Event::add($event['RECIPIENTS'], $event['PARAMS']);
			}
		}
	}

	private static function preparePullManagerParams(array $params): array
	{
		$pullManagerParams = [
			'eventName' => $params['command'],
			'item' => [],
			'skipCurrentUser' => false,
			'eventId' => null,
			'ignoreDelay' => false,
		];

		$params['params'] = array_merge($params['params'], $pullManagerParams);

		return $params;
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit