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/bizproc/admin/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/bizproc/admin/bizproc_start.php
<?php

require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php");
\Bitrix\Main\Loader::includeModule('bizproc');
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/bizproc/prolog.php");

use Bitrix\Main\Localization\Loc;

IncludeModuleLangFile(__FILE__);

$fatalErrorMessage = "";
$errorMessage = "";

$moduleId = "";
if (defined("MODULE_ID"))
	$moduleId = MODULE_ID;

$entity = "";
if (defined("ENTITY"))
	$entity = ENTITY;

$documentType = trim($_REQUEST["document_type"]);
$documentId = trim($_REQUEST["document_id"]);

$backUrl = "/".ltrim(trim($_REQUEST["back_url"]), "\\/");

if ($documentType == '')
	$fatalErrorMessage .= GetMessage("BPABS_EMPTY_DOC_TYPE").". ";
if ($entity == '')
	$fatalErrorMessage .= GetMessage("BPABS_EMPTY_ENTITY").". ";
if ($documentId == '')
	$fatalErrorMessage .= GetMessage("BPABS_EMPTY_DOC_ID").". ";

if ($fatalErrorMessage == '')
{
	$documentType = array($moduleId, $entity, $documentType);
	$documentId = array($moduleId, $entity, $documentId);

	$runtime = CBPRuntime::GetRuntime();
	$runtime->StartRuntime();

	$documentService = $runtime->GetService("DocumentService");

	$bCanUserStartDocumentWorkflow = CBPDocument::CanUserOperateDocument(
		CBPCanUserOperateOperation::StartWorkflow,
		$GLOBALS["USER"]->GetID(),
		$documentId,
		array("UserGroups" => $GLOBALS["USER"]->GetUserGroupArray())
	);
	if (!$bCanUserStartDocumentWorkflow)
		$fatalErrorMessage .= GetMessage("BPABS_NO_PERMS").". ";
}

if ($fatalErrorMessage == '')
{
	$showMode = "SelectWorkflow";
	$workflowTemplateId = (int)($_REQUEST['workflow_template_id'] ?? null);
	$arWorkflowTemplates = array();

	$dbWorkflowTemplate = CBPWorkflowTemplateLoader::GetList(
		array(),
		array("DOCUMENT_TYPE" => $documentType, "ACTIVE"=>"Y"),
		false,
		false,
		array("ID", "NAME", "DESCRIPTION", "MODIFIED", "USER_ID", "PARAMETERS")
	);
	while ($arWorkflowTemplate = $dbWorkflowTemplate->GetNext())
	{
		$arWorkflowTemplates[$arWorkflowTemplate["ID"]] = $arWorkflowTemplate;
		$arWorkflowTemplates[$arWorkflowTemplate["ID"]]["URL"] = htmlspecialcharsex($APPLICATION->GetCurPageParam("workflow_template_id=".$arWorkflowTemplate["ID"].'&'.bitrix_sessid_get(), Array("workflow_template_id", "sessid")));
	}

	if (
		$workflowTemplateId > 0
		&& check_bitrix_sessid()
		&& empty($_POST['CancelStartParamWorkflow'])
		&& array_key_exists($workflowTemplateId, $arWorkflowTemplates)
	)
	{
		$arWorkflowTemplate = $arWorkflowTemplates[$workflowTemplateId];

		$arWorkflowParameters = array();
		$bCanStartWorkflow = false;

		if (count($arWorkflowTemplate["PARAMETERS"]) <= 0)
		{
			$bCanStartWorkflow = true;
		}
		elseif ($_SERVER["REQUEST_METHOD"] == "POST" && $_POST["DoStartParamWorkflow"] <> '')
		{
			$arErrorsTmp = array();

			$arRequest = $_REQUEST;

			foreach ($_FILES as $k => $v)
			{
				if (array_key_exists("name", $v))
				{
					if (is_array($v["name"]))
					{
						$ks = array_keys($v["name"]);
						for ($i = 0, $cnt = count($ks); $i < $cnt; $i++)
						{
							$ar = array();
							foreach ($v as $k1 => $v1)
								$ar[$k1] = $v1[$ks[$i]];

							$arRequest[$k][] = $ar;
						}
					}
					else
					{
						$arRequest[$k] = $v;
					}
				}
			}

			$arWorkflowParameters = CBPWorkflowTemplateLoader::CheckWorkflowParameters(
				$arWorkflowTemplate["PARAMETERS"],
				$arRequest,
				$documentType,
				$arErrorsTmp
			);

			if (count($arErrorsTmp) > 0)
			{
				$bCanStartWorkflow = false;

				foreach ($arErrorsTmp as $e)
					$errorMessage .= $e["message"]."<br />";
			}
			else
			{
				$bCanStartWorkflow = true;
			}
		}

		if ($bCanStartWorkflow)
		{
			$arErrorsTmp = array();

			$wfId = CBPDocument::StartWorkflow(
				$workflowTemplateId,
				$documentId,
				$arWorkflowParameters,
				$arErrorsTmp
			);

			if (count($arErrorsTmp) > 0)
			{
				$showMode = "StartWorkflowError";

				foreach ($arErrorsTmp as $e)
					$errorMessage .= "[".$e["code"]."] ".$e["message"]."<br />";
			}
			else
			{
				$showMode = "StartWorkflowSuccess";
				if ($backUrl == '')
					$backUrl = "/bitrix/admin/bizproc_log.php?ID=#WF#";
				LocalRedirect(str_replace("#WF#", $wfId, $backUrl));
				die();
			}
		}
		else
		{
			$p = ($_SERVER["REQUEST_METHOD"] == "POST" && $_POST["DoStartParamWorkflow"] <> '');
			$keys = array_keys($arWorkflowTemplate["PARAMETERS"]);
			foreach ($keys as $key)
			{
				$v = ($p ? $_REQUEST[$key] : $arWorkflowTemplate["PARAMETERS"][$key]["Default"]);
				if (!is_array($v))
				{
					$arParametersValues[$key] = $v;
				}
				else
				{
					$keys1 = array_keys($v);
					foreach ($keys1 as $key1)
						$arParametersValues[$key][$key1] = $v[$key1];
				}
			}

			$showMode = "WorkflowParameters";
		}
	}
	else
	{
		$showMode = "SelectWorkflow";
	}
}

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
CBPDocument::AddShowParameterInit(MODULE_ID, "only_users", $documentType[2], $documentType[1]);

if ($fatalErrorMessage <> '')
{
	$APPLICATION->SetTitle(GetMessage("BPABS_ERROR"));
	CAdminMessage::ShowMessage($fatalErrorMessage);
}
else
{
	if ($backUrl == '')
		$backUrl = CBPDocument::GetDocumentAdminPage($documentId);

	$aMenu = array(
		array(
			"TEXT" => GetMessage("BPABS_BACK"),
			"LINK" => $backUrl,
			"ICON" => "btn_list",
		)
	);
	$context = new CAdminContextMenu($aMenu);
	$context->Show();

	$APPLICATION->SetTitle(GetMessage("BPABS_TITLE"));

	CAdminMessage::ShowMessage($errorMessage);

	if ($showMode == "StartWorkflowSuccess")
	{
		?>
		<?= str_replace("#TEMPLATE#", $arWorkflowTemplates[$workflowTemplateId]["NAME"], GetMessage("BPABS_MESSAGE_SUCCESS")) ?>
		<?
	}
	elseif ($showMode == "StartWorkflowError")
	{
		?>
		<?= str_replace("#TEMPLATE#", $arWorkflowTemplates[$workflowTemplateId]["NAME"], GetMessage("BPABS_MESSAGE_ERROR")) ?>
		<?
	}
	elseif ($showMode == "WorkflowParameters")
	{
		?>
		<form method="post" name="start_workflow_form1" action="<?= GetPagePath(false, true) ?>" enctype="multipart/form-data">
			<input type="hidden" name="workflow_template_id" value="<?= intval($workflowTemplateId) ?>">
			<input type="hidden" name="document_type" value="<?= htmlspecialcharsbx($documentType[2]) ?>">
			<input type="hidden" name="document_id" value="<?= htmlspecialcharsbx($documentId[2]) ?>">
			<input type="hidden" name="back_url" value="<?= htmlspecialcharsbx($backUrl) ?>">

			<?= bitrix_sessid_post() ?>
			<?php
			$aTabs = [
				[
					'DIV' => 'edit1',
					'TAB' => Loc::getMessage('BPABS_TAB'),
					'ICON' => 'bizproc',
					'TITLE' => Loc::getMessage('BPABS_TAB_TITLE_MSGVER_1'),
				],
			];

			$tabControl = new CAdminTabControl("tabControl", $aTabs);

			$tabControl->Begin();
			$tabControl->BeginNextTab();
			?>
			<tr>
				<td width="40%"><?= GetMessage("BPABS_NAME") ?>:</td>
				<td width="60%">
					<?= $arWorkflowTemplates[$workflowTemplateId]["NAME"] ?>
				</td>
			</tr>
			<?if($arWorkflowTemplates[$workflowTemplateId]["DESCRIPTION"]!=''):?>
			<tr>
				<td class="adm-detail-valign-top"><?= GetMessage("BPABS_DESCRIPTION") ?>:</td>
				<td>
					<?= $arWorkflowTemplates[$workflowTemplateId]["DESCRIPTION"] ?>
				</td>
			</tr>
			<?endif?>
			<?
			foreach ($arWorkflowTemplates[$workflowTemplateId]["PARAMETERS"] as $parameterKey => $arParameter)
			{
				?>
				<tr<?if ($arParameter["Required"]):?> class="adm-detail-required-field"<?endif?>>
					<td><?= htmlspecialcharsbx($arParameter["Name"]) ?>:<?if ($arParameter["Description"] <> '') echo "<br /><small>".htmlspecialcharsbx($arParameter["Description"])."</small><br />";?></td>
					<td><?
						echo $documentService->GetFieldInputControl(
							$documentType,
							$arParameter,
							array("Form" => "start_workflow_form1", "Field" => $parameterKey),
							$arParametersValues[$parameterKey],
							false,
							true
						);
					?></td>
				</tr>
				<?
			}
			?>
			<?
			$tabControl->Buttons();
			?>
			<input type="submit" class="adm-btn-save" name="DoStartParamWorkflow" value="<?= GetMessage("BPABS_DO_START") ?>" />
			<input type="submit" name="CancelStartParamWorkflow" value="<?= GetMessage("BPABS_DO_CANCEL") ?>" />
			<?
			$tabControl->End();
			?>
		</form>
		<?
	}
	elseif ($showMode == "SelectWorkflow")
	{
		$aTabs = array(
				array("DIV" => "edit1", "TAB" => GetMessage("BPABS_TAB1"), "ICON" => "bizproc", "TITLE" => GetMessage("BPABS_TAB1_TITLE"))
			);

		$tabControl = new CAdminTabControl("tabControl", $aTabs);

		$tabControl->Begin();
		$tabControl->BeginNextTab();

		if (count($arWorkflowTemplates) > 0)
		{
			foreach ($arWorkflowTemplates as $workflowTemplateId => $arWorkflowTemplate)
			{
				?>
				<tr>
					<td colspan="2">
						<a href="<?= $arWorkflowTemplate["URL"] ?>"><?= $arWorkflowTemplate["NAME"] ?></a><br>
						<?= $arWorkflowTemplate["DESCRIPTION"] ?><br><br>
					</td>
				</tr>
				<?
			}
		}
		else
		{
			?>
			<tr>
				<td colspan="2"><?= GetMessage("BPABS_NO_TEMPLATES") ?></td>
			</tr>
			<?
		}

		$tabControl->End();
	}
}

require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php");
?>

Youez - 2016 - github.com/yon3zu
LinuXploit