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/components/bitrix/bizproc.script.list/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/components/bitrix/bizproc.script.list/class.php
<?php

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

use Bitrix\Main;

class BizprocScriptListComponent extends \CBitrixComponent
{
	protected $gridId = 'bizproc_script_list';

	public function onPrepareComponentParams($params)
	{
		if (isset($params['DOCUMENT_TYPE_SIGNED']) && Main\Loader::includeModule('bizproc'))
		{
			$params['DOCUMENT_TYPE_SIGNED'] = htmlspecialcharsback($params['DOCUMENT_TYPE_SIGNED']);
			$params['DOCUMENT_TYPE'] = CBPDocument::unSignDocumentType($params['DOCUMENT_TYPE_SIGNED']);
		}
		else
		{
			$params['DOCUMENT_TYPE'] = null;
		}

		return $params;
	}

	public function executeComponent()
	{
		global $APPLICATION;

		if (!Main\Loader::includeModule('bizproc') || !is_array($this->arParams['DOCUMENT_TYPE']))
		{
			return false;
		}

		if ($this->arParams['SET_TITLE'] === 'Y')
		{
			$APPLICATION->SetTitle(GetMessage('BIZPROC_SCRIPT_LIST_TITLE'));
		}

		$pageNav = $this->getPageNavigation();

		$this->arResult['GridId'] = $this->gridId;
		$this->arResult['GridColumns'] = $this->getGridColumns();
		$this->arResult['GridRows'] = $this->getGridRows($pageNav);
		$this->arResult['PageNavigation'] = $pageNav;
		$this->arResult['PageSizes'] = $this->getPageSizes();
		$this->arResult['canCreateScript'] = $this->canCreateScript();

		return $this->includeComponentTemplate();
	}

	protected function getGridColumns(): array
	{
		$columns = [
			['id' => 'NAME', 'name' => GetMessage('BIZPROC_SCRIPT_LIST_NAME'), 'sort' => 'NAME', 'default' => true],
			['id' => 'LAST_STARTED_DATE', 'name' => GetMessage('BIZPROC_SCRIPT_LIST_LAST_STARTED_DATE'), 'default' => true],
			['id' => 'QUEUE_CNT', 'name' => GetMessage('BIZPROC_SCRIPT_LIST_QUEUE_CNT'), 'default' => true],
			['id' => 'ACTIVE', 'name' => GetMessage('BIZPROC_SCRIPT_LIST_ACTIVE'), 'default' => false],
		];

		if ($this->canCreateScript())
		{
			$columns[] = ['id' => 'ACTIONS', 'name' => GetMessage('BIZPROC_SCRIPT_LIST_ACTIONS'), 'default' => true];
		}

		return $columns;
	}

	protected function getGridRows(\Bitrix\Main\UI\PageNavigation $pageNavigation): array
	{
		$rows = [];

		$gridTableMapping = [
			'NAME' => 'NAME'
		];

		$order = ['ID' => 'asc'];
		if(array_key_exists($this->request->get('by'), $gridTableMapping))
		{
			$order = [$gridTableMapping[$this->request->get('by')] => $this->request->get('order')];
		}

		$filter = [
			'=MODULE_ID' => $this->arParams['DOCUMENT_TYPE'][0],
			'=ENTITY' => $this->arParams['DOCUMENT_TYPE'][1],
			'=DOCUMENT_TYPE' => $this->arParams['DOCUMENT_TYPE'][2]
		];

		$dbResult = \Bitrix\Bizproc\Script\Entity\ScriptTable::getList([
			'select' => ['ID', 'NAME', 'ACTIVE'],
			'filter' => $filter,
			'order' => $order,
			'limit' => $pageNavigation->getLimit(),
			'offset' => $pageNavigation->getOffset(),
		]);

		$pageNavigation->setRecordCount(\Bitrix\Bizproc\Script\Entity\ScriptTable::getCount($filter));

		$jsHandlerEdit = 'BX.Bizproc.ScriptListComponent.Instance.editScript(%d);';
		$jsHandlerDelete = 'BX.Bizproc.ScriptListComponent.Instance.deleteScript(%d);';
		$jsHandlerView = 'BX.Bizproc.Script.Manager.Instance.showScriptQueueList(%d);';
		$jsHandlerActivate = 'BX.Bizproc.ScriptListComponent.Instance.activateScript(%d);';
		$jsHandlerDeactivate = 'BX.Bizproc.ScriptListComponent.Instance.deactivateScript(%d);';

		while($script = $dbResult->fetch())
		{
			$rowActions = [];
			if ($this->canCreateScript())
			{
				$rowActions = [
					[
						'text' => GetMessage('BIZPROC_SCRIPT_LIST_ACTIONS_SET'),
						'onclick' => sprintf($jsHandlerEdit, $script['ID'])
					],
					[
						'text' => GetMessage('BIZPROC_SCRIPT_LIST_ACTIONS_DELETE'),
						'onclick' => sprintf($jsHandlerDelete, $script['ID'])
					]
				];

				if ($script['ACTIVE'] === 'Y')
				{
					$rowActions[] = [
						'text' => GetMessage('BIZPROC_SCRIPT_LIST_ACTIONS_DEACTIVATE'),
						'onclick' => sprintf($jsHandlerDeactivate, $script['ID'])
					];
				}
				else
				{
					$rowActions[] = [
						'text' => GetMessage('BIZPROC_SCRIPT_LIST_ACTIONS_ACTIVATE'),
						'onclick' => sprintf($jsHandlerActivate, $script['ID'])
					];
				}
			}

			$rows[] = [
				'id' => $script['ID'],
				'data' => [
					"NAME" => $this->renderLinkTag($script['NAME'], sprintf($jsHandlerView, $script['ID']), 'view'),
					'LAST_STARTED_DATE' => \Bitrix\Bizproc\Script\Entity\ScriptTable::getLastStartedDate($script['ID']),
					'QUEUE_CNT' => \Bitrix\Bizproc\Script\Entity\ScriptTable::getQueueCount($script['ID']),
					'ACTIVE' => $this->renderActiveCell($script['ACTIVE']),
					"ACTIONS" =>
						$this->renderLinkTag(GetMessage('BIZPROC_SCRIPT_LIST_ACTIONS_SET'), sprintf($jsHandlerEdit, $script['ID']), 'edit')
						.$this->renderLinkTag(GetMessage('BIZPROC_SCRIPT_LIST_ACTIONS_DELETE'), sprintf($jsHandlerDelete, $script['ID']), 'delete')
				],
				'actions' => $rowActions
			];
		}

		return $rows;
	}

	protected function renderLinkTag(string $text, string $handler, string $actionName)
	{
		$className = 'bizproc-script-list-action-'.$actionName;
		return sprintf(
			'<a class="ui-btn-link %s" onclick="%s" href="#">%s</a>',
			$className,
			htmlspecialcharsbx($handler),
			htmlspecialcharsbx($text)
		);
	}

	protected function renderActiveCell($value)
	{
		return $value === 'Y' ? GetMessage('MAIN_YES') : GetMessage('MAIN_NO');
	}

	protected function getPageNavigation(): \Bitrix\Main\UI\PageNavigation
	{
		$gridOptions = new Bitrix\Main\Grid\Options($this->gridId);
		$navParams = $gridOptions->GetNavParams();

		$pageNavigation= new Bitrix\Main\UI\PageNavigation($this->gridId);
		$pageNavigation->setPageSize($navParams['nPageSize'])->initFromUri();

		return $pageNavigation;
	}

	protected function getPageSizes(): array
	{
		return [
			['NAME' => '5', 'VALUE' => '5'],
			['NAME' => '10', 'VALUE' => '10'],
			['NAME' => '20', 'VALUE' => '20'],
			['NAME' => '50', 'VALUE' => '50'],
			['NAME' => '100', 'VALUE' => '100']
		];
	}

	protected function canCreateScript(): bool
	{
		static $can;

		if ($can === null)
		{
			$user = new \CBPWorkflowTemplateUser(\CBPWorkflowTemplateUser::CurrentUser);
			$can = \Bitrix\Bizproc\Script\Manager::canUserCreateScript(
				$this->arParams['DOCUMENT_TYPE'],
				$user->getId()
			);
		}

		return $can;
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit