AnonSec Shell
Server IP : 85.193.89.191  /  Your IP : 3.133.126.164
Web Server : Apache
System : Linux 956367-cx40159.tmweb.ru 3.10.0-1160.105.1.el7.x86_64 #1 SMP Thu Dec 7 15:39:45 UTC 2023 x86_64
User : bitrix ( 600)
PHP Version : 8.1.27
Disable Function : NONE
MySQL : OFF  |  cURL : OFF  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /home/bitrix/www/bitrix/components/bitrix/bizproc.document/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     

Current File : /home/bitrix/www/bitrix/components/bitrix/bizproc.document/component.php
<?php

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

if (!CModule::IncludeModule('bizproc'))
{
	return false;
}

/********************************************************************
 * Input params
 ********************************************************************/
/***************** BASE ********************************************/
$arParams["MODULE_ID"] = trim(empty($arParams["MODULE_ID"]) ? $_REQUEST["module_id"] : $arParams["MODULE_ID"]);
$arParams["ENTITY"] = trim(empty($arParams["ENTITY"]) ? $_REQUEST["entity"] : $arParams["ENTITY"]);
$arParams["DOCUMENT_TYPE"] = trim(empty($arParams["DOCUMENT_TYPE"]) ? $_REQUEST["document_type"] : $arParams["DOCUMENT_TYPE"]);
$arParams["DOCUMENT_ID"] = trim(empty($arParams["DOCUMENT_ID"]) ? $_REQUEST["document_id"] ?? '' : $arParams["DOCUMENT_ID"]);

if (isset($arParams["TASK_ID"]))
{
	$arTask = CBPStateService::GetWorkflowState($arParams["TASK_ID"]);
	if (!empty($arTask))
	{
		$arResult["TASK"] = $arTask;
	}
	else
	{
		if (isset($arParams["TASK_LIST_URL"]))
		{
			LocalRedirect($arParams["TASK_LIST_URL"]);
		}
	}
}
//***************** URL ********************************************/
$arParams["back_url"] = (!empty($arParams["back_url"]) ? $arParams["back_url"] : (!empty($_REQUEST["back_url"]) ? urldecode($_REQUEST["back_url"]) : ""));

$URL_NAME_DEFAULT = [
	"workflow_start" => "PAGE_NAME=start&ID=#ID#",
	"workflow_log" => "PAGE_NAME=log&ID=#ID#",
	"task_edit" => "PAGE_NAME=task_edit&ID=#ID#",
];

foreach ($URL_NAME_DEFAULT as $URL => $URL_VALUE)
{
	$arParams[mb_strtoupper($URL) . "_URL"] = trim($arParams[mb_strtoupper($URL) . "_URL"] ?? '');
	if (empty($arParams[mb_strtoupper($URL) . "_URL"])):
		$arParams[mb_strtoupper($URL) . "_URL"] = $APPLICATION->GetCurPage();
	endif;
	$arParams["~" . mb_strtoupper($URL) . "_URL"] = $arParams[mb_strtoupper($URL) . "_URL"];
	$arParams[mb_strtoupper($URL) . "_URL"] = htmlspecialcharsbx($arParams["~" . mb_strtoupper($URL) . "_URL"]);
}
/***************** ADDITIONAL **************************************/
/***************** STANDART ****************************************/
$arParams["SET_TITLE"] = (isset($arParams["SET_TITLE"]) && $arParams["SET_TITLE"] === "N" ? "N" : "Y");
/********************************************************************
 * /Input params
 ********************************************************************/

/********************************************************************
 * Main data
 ********************************************************************/
$arError = [];
if ($arParams["MODULE_ID"] == '')
{
	$arError[] = [
		"id" => "empty_module_id",
		"text" => GetMessage("BPATT_NO_MODULE_ID"),
	];
}
if ($arParams["ENTITY"] == '')
{
	$arError[] = [
		"id" => "empty_entity",
		"text" => GetMessage("BPABS_EMPTY_ENTITY"),
	];
}
if ($arParams["DOCUMENT_TYPE"] == '')
{
	$arError[] = [
		"id" => "empty_document_type",
		"text" => GetMessage("BPABS_EMPTY_DOC_TYPE"),
	];
}
if ($arParams["DOCUMENT_ID"] == '')
{
	$arError[] = [
		"id" => "empty_document_id",
		"text" => GetMessage("BPABS_EMPTY_DOC_ID"),
	];
}

$arParams["DOCUMENT_TYPE"] = [$arParams["MODULE_ID"], $arParams["ENTITY"], $arParams["DOCUMENT_TYPE"]];
$arParams["DOCUMENT_ID"] = [$arParams["MODULE_ID"], $arParams["ENTITY"], $arParams["DOCUMENT_ID"]];

$isLazyLoad = isset($arParams['LAZYLOAD']) && $arParams['LAZYLOAD'] === 'Y';

if (empty($arError))
{
	$arDocumentStates = $isLazyLoad
		? CBPDocument::getActiveStates($arParams["DOCUMENT_ID"])
		: CBPDocument::GetDocumentStates($arParams["DOCUMENT_TYPE"], $arParams["DOCUMENT_ID"])
	;

	$arResult['DOCUMENT_STATES'] = $arDocumentStates;

	if (!CBPDocument::CanUserOperateDocument(
		CBPCanUserOperateOperation::ViewWorkflow,
		$GLOBALS["USER"]->GetID(),
		$arParams["DOCUMENT_ID"],
		["DocumentStates" => $arDocumentStates]
	))
	{
		$arError[] = [
			"id" => "access_denied",
			"text" => GetMessage("BPADH_NO_PERMS"),
		];
	}
}
if (!empty($arError))
{
	$e = new CAdminException($arError);
	ShowError($e->GetString());

	return false;
}

if (method_exists($arParams["DOCUMENT_TYPE"][1], "GetUserGroups"))
{
	$arParams["USER_GROUPS"] = call_user_func_array(
		[$arParams["DOCUMENT_TYPE"][1], "GetUserGroups"],
		[$arParams["DOCUMENT_TYPE"], $arParams["DOCUMENT_ID"], $GLOBALS["USER"]->GetID()]
	);
}
else
{
	$arParams["USER_GROUPS"] = $GLOBALS["USER"]->GetUserGroupArray();
}

/********************************************************************
 * /Main data
 ********************************************************************/

$arResult["ERROR_MESSAGE"] = "";
$arParams["StartWorkflowPermission"] = (CBPDocument::CanUserOperateDocument(
	CBPCanUserOperateOperation::StartWorkflow,
	$USER->GetID(),
	$arParams["DOCUMENT_ID"],
	["DocumentStates" => $arDocumentStates]
) ? "Y" : "N");
$arParams["StopWorkflowPermission"] = $arParams["StartWorkflowPermission"];
$arParams["DropWorkflowPermission"] = (CBPDocument::CanUserOperateDocument(
	CBPCanUserOperateOperation::CreateWorkflow,
	$GLOBALS["USER"]->GetID(),
	$arParams["DOCUMENT_ID"],
	["DocumentStates" => $arDocumentStates]) ? "Y" : "N"
);

/********************************************************************
 * Action
 ********************************************************************/
if (!((!empty($_REQUEST["action"]) || $_SERVER['REQUEST_METHOD'] == "POST") && check_bitrix_sessid()))
{
}
elseif (!empty($_POST["cancel"]) && !empty($arParams["back_url"]))
{
	LocalRedirect($arParams["back_url"]);
}
else
{
	if (isset($_REQUEST["action"]) && $_REQUEST["action"] === "stop_bizproc")
	{
		if ($arParams["StopWorkflowPermission"] != "Y")
		{
			$arError[] = [
				"id" => "access_denied",
				"text" => GetMessage("BPADH_NO_PERMS"),
			];
		}
		else
		{
			CBPDocument::TerminateWorkflow(
				$_REQUEST["id"],
				$arParams["DOCUMENT_ID"],
				$ar
			);

			if ($ar)
			{
				$str = "";
				foreach ($ar as $a)
					$str .= $a["message"];
				$arError[] = [
					"id" => "stop_bizproc",
					"text" => $str];
			}
		}
	}
	elseif (isset($_REQUEST["action"]) && $_REQUEST["action"] === "del_bizproc")
	{
		if ($arParams["DropWorkflowPermission"] != "Y")
		{
			$arError[] = [
				"id" => "access_denied",
				"text" => GetMessage("BPADH_NO_PERMS")];
		}
		else
		{
			$terminateWorkflow = isset($arDocumentStates[$_REQUEST['id']]['WORKFLOW_STATUS']) && $arDocumentStates[$_REQUEST['id']]['WORKFLOW_STATUS'] !== null;
			$ar = CBPDocument::killWorkflow($_REQUEST["id"], $terminateWorkflow, $arParams["DOCUMENT_ID"]);

			if (count($ar) > 0)
			{
				$str = "";
				foreach ($ar as $a)
					$str .= $a["message"];
				$arError[] = [
					"id" => "stop_bizproc",
					"text" => $str];
			}
		}
	}
	elseif (
		$_SERVER['REQUEST_METHOD'] === "POST"
		&& isset($_REQUEST["bizproc_index"])
		&& intval($_REQUEST["bizproc_index"]) > 0
	)
	{
		$arBizProcWorkflowId = [];
		$bizprocIndex = intval($_REQUEST["bizproc_index"]);
		$needUpdateStatesList = false;
		for ($i = 1; $i <= $bizprocIndex; $i++)
		{
			$bpId = trim($_REQUEST["bizproc_id_" . $i] ?? '');
			$bpTemplateId = intval($_REQUEST["bizproc_template_id_" . $i] ?? 0);
			$bpEvent = trim($_REQUEST["bizproc_event_" . $i] ?? '');

			if ($bpEvent <> '')
			{
				if ($bpId <> '')
				{
					if (!array_key_exists($bpId, $arDocumentStates))
						continue;
				}
				else
				{
					if (!array_key_exists($bpTemplateId, $arDocumentStates))
						continue;
					$bpId = $arBizProcWorkflowId[$bpTemplateId];
				}

				$needUpdateStatesList = true;
				$arErrorTmp = [];
				CBPDocument::SendExternalEvent(
					$bpId,
					$bpEvent,
					["Groups" => $arParams["USER_GROUPS"], "User" => $GLOBALS["USER"]->GetID()],
					$arErrorTmp
				);

				if ($arErrorTmp)
				{
					$arError[] = [
						"id" => "update_workfow",
						"text" => implode(', ', array_column($arErrorTmp, 'message')),
					];
				}
			}
		}
		if ($needUpdateStatesList && empty($arError))
		{
			$arResult['DOCUMENT_STATES'] = CBPDocument::GetDocumentStates($arParams["DOCUMENT_TYPE"], $arParams["DOCUMENT_ID"]);
		}
	}

	if (!empty($arError))
	{
		$e = new CAdminException($arError);
		$arResult["ERROR_MESSAGE"] = $e->GetString();
	}
	else
	{
		$url = (!empty($arParams["back_url"]) ? $arParams["back_url"] : $APPLICATION->GetCurPageParam("", ["action", "id", "sessid"]));
		$url = (empty($_POST["apply"]) ? $url : $APPLICATION->GetCurPageParam("", ["action", "id", "sessid"]));
		if (!empty($_REQUEST['action']))
		{
			LocalRedirect($url);
		}
	}
}
/********************************************************************
 * /Action
 ********************************************************************/

/********************************************************************
 * Data
 ********************************************************************/

/********************************************************************
 * /Data
 ********************************************************************/

$this->IncludeComponentTemplate();

/********************************************************************
 * Standart operations
 ********************************************************************/
if ($arParams["SET_TITLE"] == "Y")
{
	$APPLICATION->SetTitle(GetMessage("BPADH_TITLE"));
}
/********************************************************************
 * /Standart operations
 ********************************************************************/

Anon7 - 2022
AnonSec Team