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");
IncludeModuleLangFile(__FILE__);
$errorMessage = "";
$allowAdminAccess = $USER->IsAdmin();
$taskId = intval($_REQUEST["id"]);
$userId = intval($_REQUEST["uid"]);
if (!$allowAdminAccess || $userId <= 0)
$userId = $USER->GetID();
$arTask = false;
if ($taskId > 0)
{
$dbTask = CBPTaskService::GetList(
array(),
array("ID" => $taskId, "USER_ID" => $userId),
false,
false,
array("ID", "WORKFLOW_ID", "ACTIVITY", "ACTIVITY_NAME", "MODIFIED", "OVERDUE_DATE", "NAME", "DESCRIPTION", "PARAMETERS", "USER_ID", 'STATUS', 'USER_STATUS',)
);
$arTask = $dbTask->GetNext();
}
if (!$arTask)
{
$workflowId = trim($_REQUEST["workflow_id"]);
if ($workflowId <> '')
{
$dbTask = CBPTaskService::GetList(
array(),
array("WORKFLOW_ID" => $workflowId, "USER_ID" => $userId),
false,
false,
array("ID", "WORKFLOW_ID", "ACTIVITY", "ACTIVITY_NAME", "MODIFIED", "OVERDUE_DATE", "NAME", "DESCRIPTION", "PARAMETERS", "USER_ID", 'STATUS', 'USER_STATUS',)
);
$arTask = $dbTask->GetNext();
}
}
if (!$arTask)
{
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
$APPLICATION->SetTitle(GetMessage("BPAT_NO_TASK"));
CAdminMessage::ShowMessage(GetMessage("BPAT_NO_TASK").". ");
}
else
{
$arTask["PARAMETERS"]["DOCUMENT_ID"] = CBPStateService::GetStateDocumentId($arTask['WORKFLOW_ID']);
$backUrl = !empty($_REQUEST["back_url"]) ? "/".ltrim(trim($_REQUEST["back_url"]), "\\/") : '';
if ($backUrl == '')
$backUrl = "/bitrix/admin/bizproc_task_list.php?lang=".LANGUAGE_ID;
if ($backUrl == '' && !empty($arTask["PARAMETERS"]["DOCUMENT_ID"]))
$backUrl = CBPDocument::GetDocumentAdminPage($arTask["PARAMETERS"]["DOCUMENT_ID"]);
$backUrl = CHTTP::urlDeleteParams($backUrl, array('mode'));
$showType = "Form";
if ($arTask['STATUS'] > CBPTaskStatus::Running || $arTask['USER_STATUS'] > CBPTaskUserStatus::Waiting)
{
$showType = "Success";
}
if ($_SERVER["REQUEST_METHOD"] == "POST" && check_bitrix_sessid())
{
if ($_POST["action"] == "doTask")
{
$arErrorsTmp = array();
if (CBPDocument::PostTaskForm($arTask, $userId, $_REQUEST + $_FILES, $arErrorsTmp, $USER->GetFormattedName(false)))
{
$showType = "Success";
if ($backUrl <> '')
{
LocalRedirect($backUrl);
die();
}
}
else
{
foreach ($arErrorsTmp as $e)
$errorMessage .= $e["message"].".
";
}
}
elseif (
$_POST["action"] == "delegate"
&& $showType == 'Form'
&& $allowAdminAccess
&& !empty($_POST['delegate_to'])
&& $arTask["USER_ID"] != $_POST['delegate_to']
)
{
$errors = array();
CBPDocument::delegateTasks($arTask["USER_ID"], $_POST['delegate_to'], $arTask['ID'], $errors);
if ($errors)
$errorMessage .= $errors[0].'.';
else
LocalRedirect($backUrl);
}
}
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php");
$aMenu = array(
array(
"TEXT" => GetMessage("BPAT_BACK"),
"LINK" => $backUrl,
"ICON" => "btn_list",
)
);
if ($showType == 'Form' && $allowAdminAccess)
{
$aMenu[] = array(
"TEXT"=> GetMessage('BPAT_ACTION_DELEGATE'),
'ONCLICK' => 'bizprocShowDelegateDialog();'
);
}
$context = new CAdminContextMenu($aMenu);
$context->Show();
$APPLICATION->SetTitle(str_replace("#ID#", $taskId, GetMessage("BPAT_TITLE_1")));
if ($errorMessage <> '')
CAdminMessage::ShowMessage($errorMessage);
$runtime = CBPRuntime::GetRuntime();
$runtime->StartRuntime();
$documentService = $runtime->GetService("DocumentService");
if (empty($arTask["PARAMETERS"]["DOCUMENT_ID"]))
{
CAdminMessage::ShowMessage(GetMessage('BPAT_NO_STATE'));
$showType = 'Success';
}
else
{
try
{
$documentType = $documentService->GetDocumentType($arTask["PARAMETERS"]["DOCUMENT_ID"]);
if (!array_key_exists("BP_AddShowParameterInit_".$documentType[0]."_".$documentType[1]."_".$documentType[2], $GLOBALS))
{
$GLOBALS["BP_AddShowParameterInit_".$documentType[0]."_".$documentType[1]."_".$documentType[2]] = 1;
CBPDocument::AddShowParameterInit($documentType[0], "only_users", $documentType[2], $documentType[1]);
}
}
catch (Exception $e)
{
CAdminMessage::ShowMessage(GetMessage('BPAT_NO_STATE'));
$showType = 'Success';
}
}
list($taskForm, $taskFormButtons) = array("", "");
if ($showType != "Success")
list($taskForm, $taskFormButtons) = CBPDocument::ShowTaskForm($arTask, $userId, "", ($_SERVER["REQUEST_METHOD"] == "POST" && $_POST["action"] == "doTask") ? $_REQUEST : null);
?>