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); ?>