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/main/lib/grid/panel/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/main/lib/grid/panel/panel.php
<?php

namespace Bitrix\Main\Grid\Panel;

use Bitrix\Main\Filter\Filter;
use Bitrix\Main\Grid\GridRequest;
use Bitrix\Main\Grid\GridResponse;
use Bitrix\Main\Grid\Panel\Action\DataProvider;
use Bitrix\Main\Grid\Panel\Action\Action;
use Bitrix\Main\Grid\Panel\Action\GroupAction;
use Bitrix\Main\Grid\UI\Response\GridResponseFactory;

class Panel
{
	/**
	 * @var Action[]
	 */
	private array $actions;
	/**
	 * @var array[]
	 */
	private array $controls;
	/**
	 * @var DataProvider[]
	 */
	private array $providers;

	/**
	 * @param DataProvider[] $providers
	 */
	public function __construct(DataProvider ...$providers)
	{
		$this->providers = [];
		foreach ($providers as $provider)
		{
			$this->providers[] = $provider;
		}
	}

	/**
	 * @return Action[]
	 */
	final public function getActions(): array
	{
		if (!isset($this->actions))
		{
			$this->actions = [];

			foreach ($this->providers as $provider)
			{
				foreach ($provider->prepareActions() as $action)
				{
					$this->actions[$action::getId()] ??= $action;
				}
			}
		}

		return $this->actions;
	}

	final protected function getActionById(string $id): ?Action
	{
		if (empty($id))
		{
			return null;
		}

		return $this->getActions()[$id] ?? null;
	}

	/**
	 * @return array[]
	 */
	public function getControls(): array
	{
		if (!isset($this->controls))
		{
			$this->controls = [];

			foreach ($this->providers as $extraProvider)
			{
				$this->controls += $extraProvider->prepareControls();
			}
		}

		return $this->controls;
	}

	/**
	 * Processing all actions of the panel.
	 *
	 * @param GridRequest $request
	 * @param Filter|null $filter
	 *
	 * @return GridResponse|null
	 */
	public function processRequest(GridRequest $request, ?Filter $filter): ?GridResponse
	{
		$result = null;

		if (!check_bitrix_sessid())
		{
			return null;
		}

		// direct actions
		$action = $this->getActionById(
			$request->getPanelActionId() ?? ''
		);
		if ($action)
		{
			$result = $action->processRequest(
				$request->getHttpRequest(),
				$request->isSelectedAllPanelRows(),
				$filter
			);
		}
		else
		{
			// group actions
			$groupAction = $this->getActionById(GroupAction::getId());
			if ($groupAction)
			{
				$result = $groupAction->processRequest(
					$request->getHttpRequest(),
					$request->isSelectedAllPanelGroupRows(),
					$filter
				);
			}
		}

		return
			isset($result)
				? (new GridResponseFactory)->createFromResult($result)
				: null
		;
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit