GetGroupRight("workflow"); if ($WORKFLOW_RIGHT == "D") $APPLICATION->AuthForm(GetMessage("ACCESS_DENIED")); require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/workflow/include.php"); IncludeModuleLangFile(__FILE__); $err_mess = "File: ".__FILE__."
Line: "; define("HELP_FILE","workflow_list.php"); $fname = $_REQUEST["fname"]; $message = null; /************************************************************************** Helper functions ***************************************************************************/ function CheckFields() // fields check { global $DB, $FILENAME, $APPLICATION, $ID, $BODY, $USER, $SITE_ID, $STATUS_ID, $DOC_ROOT; $str = ""; $arMsg = Array(); $SCRIPT_FILE_TYPE = GetFileType($FILENAME); $FILENAME = trim($FILENAME); $FILENAME = "/".ltrim(_normalizePath($FILENAME), "/"); $io = CBXVirtualIo::GetInstance(); if ($FILENAME == '') { $arMsg[] = array( "id" => "FILENAME", "text" => GetMessage("FLOW_FORGOT_FILENAME"), ); } elseif (!$io->ValidatePathString($FILENAME)) { $arMsg[] = array( "id" => "FILENAME", "text" => GetMessage("FLOW_FILE_NAME_NOT_VALID"), ); } elseif ($SCRIPT_FILE_TYPE!="SOURCE") { $arMsg[] = array( "id" => "FILENAME", "text" => GetMessage("FLOW_INCORRECT_FILETYPE"), ); } else { $SITE_ID = CWorkflow::__CheckSite($SITE_ID); if(!$SITE_ID) $SITE_ID = CSite::GetSiteByFullPath($_SERVER['DOCUMENT_ROOT'].$FILENAME); if(!$USER->CanDoFileOperation('fm_edit_in_workflow', array($SITE_ID, $FILENAME))) { $s = str_replace("#FILENAME#","$FILENAME",GetMessage("FLOW_ACCESS_DENIED")); $arMsg[] = array( "id" => "FILENAME", "text" => $s.": ".GetMessage("FLOW_MIN_RIGHTS"), ); } elseif( $STATUS_ID==1 && !( $USER->CanDoFileOperation('fm_edit_existent_file', array($SITE_ID, $FILENAME)) && $USER->CanDoFileOperation('fm_create_new_file', array($SITE_ID, $FILENAME)) ) ) { $arMsg[] = array( "id" => "FILENAME", "text" => GetMessage("FLOW_ACCESS_DENIED_FOR_FILE_WRITE", array( "#FILENAME#" => $FILENAME, )), ); } else { $z = CWorkflow::GetByFilename($FILENAME, $SITE_ID); if ($zr=$z->Fetch()) { if ($zr["ID"]!=$ID && $zr["STATUS_ID"]!=1) { $arMsg[] = array( "id" => "FILENAME", "text" => str_replace("#FILENAME#", $FILENAME, GetMessage("FLOW_FILENAME_EXIST")), ); } } } } if (!CWorkflow::IsAdmin()) { $arGroups = $USER->GetUserGroupArray(); if (!is_array($arGroups)) $arGroups = array(2); $arFilter = array( "GROUP_ID" => $arGroups, "PERMISSION_TYPE_1" => 1, "ID_EXACT_MATCH" => "Y", "ID" => $STATUS_ID, ); $rsStatuses = CWorkflowStatus::GetList("s_c_sort", "asc", $arFilter, null, array("ID")); if (!$rsStatuses->Fetch()) { $arMsg[] = array( "id" => "STATUS_ID", "text" => GetMessage("FLOW_ERROR_WRONG_STATUS"), ); } } $bIsPhp = IsPHP($BODY); if ($bIsPhp) { if ($USER->CanDoFileOperation('fm_lpa', Array($SITE_ID, $FILENAME)) && !$USER->CanDoOperation('edit_php')) { if (CModule::IncludeModule("fileman")) { $old_res = CFileman::ParseFileContent($APPLICATION->GetFileContent($DOC_ROOT.$FILENAME), true); $old_BODY = $old_res["CONTENT"]; $BODY = CMain::ProcessLPA($BODY, $old_BODY); } else { $arMsg[] = array( "id" => "BODY", "text" => "Error! Fileman is not included!", ); } } else if (!$USER->CanDoOperation('edit_php')) { $arMsg[] = array( "id" => "BODY", "text" => GetMessage("FLOW_PHP_IS_NOT_AVAILABLE"), ); } } if(!empty($arMsg)) { $e = new CAdminException($arMsg); $APPLICATION->ThrowException($e); return false; } return true; } /************************************************************************** GET | POST handlers ***************************************************************************/ $ID = intval($ID); $STATUS_ID = intval($STATUS_ID); $arExt = GetScriptFileExt(); $arTemplates = GetFileTemplates(); $arUploadedFiles = array(); $BODY_TYPE = ($BODY_TYPE=="text") ? "text" : "html"; $FILENAME = str_replace("\\", "/", $FILENAME); $arContent = array(); $site = CWorkflow::__CheckSite($site); $DOC_ROOT = CSite::GetSiteDocRoot($site); $del_id = intval($del_id); // id of the record being deleted if ($del_id > 0 && $WORKFLOW_RIGHT > "R" && check_bitrix_sessid()) { if (CWorkflow::IsAllowEdit($del_id, $locked_by, $date_lock)) { CWorkflow::Delete($del_id); LocalRedirect("/bitrix/admin/workflow_list.php?lang=".LANGUAGE_ID); } else { if (intval($locked_by) > 0) { $str = str_replace("#DID#","$del_id",GetMessage("FLOW_DOCUMENT_LOCKED")); $str = str_replace("#ID#","$locked_by",$str); $str = str_replace("#DATE#","$date_lock",$str); $message = new CAdminMessage(Array("MESSAGE" => GetMessage("FLOW_ERROR"), "DETAILS" => $str, "TYPE"=>"ERROR")); } else { $str = str_replace("#ID#",$del_id,GetMessage("FLOW_DOCUMENT_IS_NOT_AVAILABLE")); $message = new CAdminMessage(Array("MESSAGE" => GetMessage("FLOW_ERROR"), "DETAILS" => $str, "TYPE"=>"ERROR")); } } } // when ID of the document is given if($ID > 0) { // check if it is exists in the database $z = $DB->Query("SELECT ID FROM b_workflow_document WHERE ID='$ID'", false, $err_mess.__LINE__); if (!($zr=$z->Fetch())) { if($fname <> '') { $ID = 0; } else { require_once ($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php"); $aMenu = array( array( "ICON" => "btn_list", "TEXT" => GetMessage("FLOW_RECORDS_LIST"), "LINK" => "workflow_list.php?lang=".LANGUAGE_ID, //"&ID=".$ID "TITLE" => GetMessage("FLOW_RECORDS_LIST"), ), ); $context = new CAdminContextMenu($aMenu); $context->Show(); CAdminMessage::ShowMessage(GetMessage("FLOW_DOCUMENT_NOT_FOUND")); require_once ($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php"); die(); } } } if ($ID > 0) { // check if document is published $z = CWorkflow::GetStatus($ID); $zr = $z->Fetch(); if (intval($zr["ID"])==1) { $message = new CAdminMessage(Array("MESSAGE" => GetMessage("FLOW_ERROR"), "DETAILS" => GetMessage("FLOW_DOCUMENT_IS_NOT_AVAILABLE"), "TYPE"=>"ERROR")); } else { // rights check if (!(CWorkflow::IsHaveEditRights($ID))) { $sDocTitle = str_replace("#ID#","$ID",GetMessage("FLOW_EDIT_RECORD")); $APPLICATION->SetTitle($sDocTitle); require_once ($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php"); $aMenu = array( array( "ICON" => "btn_list", "TEXT" => GetMessage("FLOW_RECORDS_LIST"), "LINK" => "workflow_list.php?lang=".LANGUAGE_ID,//"&ID=".$ID "TITLE" => GetMessage("FLOW_RECORDS_LIST"), ) ); $context = new CAdminContextMenu($aMenu); $context->Show(); CAdminMessage::ShowMessage(str_replace("#ID#","$ID",GetMessage("FLOW_NOT_ENOUGH_RIGHTS"))); require_once ($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/epilog_admin.php"); die(); } // check if locked if (!(CWorkflow::IsAllowEdit($ID,$locked_by,$date_lock,"N"))) { if (intval($locked_by)>0) { $str = str_replace("#ID#","$locked_by",GetMessage("FLOW_DOCUMENT_LOCKED")); $str = str_replace("#DATE#","$date_lock",$str); $message = new CAdminMessage(Array("MESSAGE" => GetMessage("FLOW_ERROR"), "DETAILS" => $str, "TYPE"=>"ERROR")); } } } } $aTabs = array(); if (intval($ID) > 0) $aTabs[] = array( "DIV" => "edit1", "TAB" => GetMessage("FLOW_EDIT_RECORD"), "ICON" => "workflow_edit", "TITLE" => GetMessage("FLOW_EDIT_RECORD_TIT"), ); else $aTabs[] = array( "DIV" => "edit1", "TAB" => GetMessage("FLOW_EDIT_RECORD"), "ICON" => "workflow_edit", "TITLE" => GetMessage("FLOW_NEW_RECORD"), ); $aTabs[] = array( "DIV" => "edit2", "TAB" => GetMessage("FLOW_UPLOADED_FILES"), "ICON" => "workflow_edit", "TITLE" => GetMessage("FLOW_UPLOADED_FILES_TITLE"), ); $aTabs[] = array( "DIV" => "edit3", "TAB" => GetMessage("FLOW_COMMENTS"), "ICON" => "workflow_edit", "TITLE" => GetMessage("FLOW_COMMENTS_TITLE"), ); $tabControl = new CAdminTabControl("tabControl", $aTabs); // Save or Apply was clicked if ( ($save <> '' || $apply <> '') && $WORKFLOW_RIGHT > "R" && $_SERVER["REQUEST_METHOD"] == "POST" && check_bitrix_sessid() ) { if (CheckFields()) { $nums = intval($nums); if ($nums > 0) { for ($i = 1; $i <= $nums; $i++) { $arFile = $_FILES["file_".$i]; if ($arFile["name"] == '' || $arFile["tmp_name"] == "none") continue; $arFile["name"] = GetFileName($arFile["name"]); $fname = ${"fname_".$i}; if ($fname == '') $fname = $arFile["name"]; $path = GetDirPath($FILENAME); $pathto = Rel2Abs($path, $fname); $ext = GetFileExtension($pathto); $io = CBXVirtualIo::GetInstance(); if (!$USER->IsAdmin() && in_array($ext, $arExt)) { $message = new CAdminMessage(array( "MESSAGE" => GetMessage("FLOW_ERROR"), "DETAILS" => GetMessage("FLOW_FILEUPLOAD_PHPERROR")." \"".$pathto."\"", "TYPE" => "ERROR", )); } elseif (!$USER->CanDoFileOperation('fm_edit_in_workflow', array( $SITE_ID, $pathto))) { $message = new CAdminMessage(array( "MESSAGE" => GetMessage("FLOW_ERROR"), "DETAILS" => GetMessage("FLOW_FILEUPLOAD_ACCESS_DENIED")." \"".$pathto."\": ".GetMessage("FLOW_MIN_RIGHTS"), "TYPE" => "ERROR", )); } elseif (!$io->ValidatePathString($pathto)) { $message = new CAdminMessage(array( "MESSAGE" => GetMessage("FLOW_ERROR"), "DETAILS" => GetMessage("FLOW_FILE_NAME_NOT_VALID"), "TYPE" => "ERROR", )); } else { $z = CWorkflow::GetFileByID($ID, $pathto); if ($zr = $z->Fetch()) { $message = new CAdminMessage(array( "MESSAGE" => GetMessage("FLOW_ERROR"), "DETAILS" => str_replace("#FILE#", "$pathto", GetMessage("FLOW_FILE_ALREADY_EXIST")), "TYPE" => "ERROR", )); } else { $temp_file = CWorkflow::GetUniqueFilename($pathto); $temp_dir = CWorkflow::GetTempDir(); if (!file_exists($temp_dir)) mkdir($temp_dir, BX_DIR_PERMISSIONS); $temp_path = $temp_dir.$temp_file; if (!copy($arFile["tmp_name"], $temp_path)) { $message = new CAdminMessage(array( "MESSAGE" => GetMessage("FLOW_ERROR"), "DETAILS" => GetMessage("FLOW_FILEUPLOAD_FILE_CREATE_ERROR")." \"".$temp_path."\"", "TYPE" => "ERROR", )); } else { $arFields = array( "DOCUMENT_ID" => ($ID > 0) ? $ID : "null", "TIMESTAMP_X" => $DB->GetNowFunction(), "MODIFIED_BY" => "'".$USER->GetID()."'", "TEMP_FILENAME" => "'".$DB->ForSql($temp_file, 255)."'", "FILENAME" => "'".$DB->ForSql($pathto, 255)."'", "FILESIZE" => intval($arFile["size"]), ); $FILE_ID = $DB->Insert("b_workflow_file", $arFields, $err_mess.__LINE__); $arUploadedFiles[] = intval($FILE_ID); } } } } } if (!$message) { $BODY = WFToPath($BODY); $arFields = array( "MODIFIED_BY" => $USER->GetID(), "TITLE" => $TITLE, "FILENAME" => $FILENAME, "SITE_ID" => $SITE_ID, "BODY" => $BODY, "BODY_TYPE" => $BODY_TYPE, "DATE_LOCK" => false, "LOCKED_BY" => false, "STATUS_ID" => $STATUS_ID, "COMMENTS" => $COMMENTS, ); if ($ID > 0) { CWorkflow::Update($arFields, $ID); } else { if (is_file($DOC_ROOT.$fname)) { $filesrc = $APPLICATION->GetFileContent($DOC_ROOT.$FILENAME); $arContent = ParseFileContent($filesrc); $PROLOG = $arContent["PROLOG"]; $EPILOG = $arContent["EPILOG"]; } else { foreach ($arTemplates as $Template) { if ($Template["file"] == $template) { $filesrc = GetTemplateContent($Template["file"]); $arContent = ParseFileContent($filesrc); $PROLOG = $arContent["PROLOG"]; $EPILOG = $arContent["EPILOG"]; $found = "Y"; break; } } if ($found != "Y") { $PROLOG = GetDefaultProlog($TITLE); $EPILOG = GetDefaultEpilog(); } } $arFields["ENTERED_BY"] = $USER->GetID(); $arFields["PROLOG"] = $PROLOG; $arFields["EPILOG"] = $EPILOG; $ID = CWorkflow::Insert($arFields); } CWorkflow::LinkFiles2Document($arUploadedFiles, $ID); if (is_array($del_files)) { foreach ($del_files as $del_id) CWorkflow::CleanUpFiles($ID, $del_id); } $strError = ""; CWorkflow::SetStatus($ID, $STATUS_ID, intval($OLD_STATUS_ID), false); $strError = ""; if (!$message) { if ($STATUS_ID == 1) $strNote.= GetMessage("FLOW_PUBLISHED_SUCCESS"); if ($save <> '' || $STATUS_ID == 1) { if ($return_url <> '') LocalRedirect($return_url); else LocalRedirect("/bitrix/admin/workflow_list.php?lang=".LANGUAGE_ID."&set_default=Y&strNote=".urlencode($strNote)); } elseif ($apply <> '') { LocalRedirect("/bitrix/admin/workflow_edit.php?lang=".LANGUAGE_ID."&ID=".$ID."&strNote=".urlencode($strNote)."&".$tabControl->ActiveTabParam().($return_url <> ''? "&return_url=".urlencode($return_url) : "")); } } } } else { if ($e = $APPLICATION->GetException()) $message = new CAdminMessage(GetMessage("FLOW_ERROR"), $e); } } if(($ID > 0) && !$message) CWorkflow::Lock($ID); $arDocFiles = array(); ClearVars(); $workflow = CWorkflow::GetByID($ID); if (!($workflow->ExtractFields())) { $ID=0; if (is_file($DOC_ROOT.$fname)) { $filesrc = $APPLICATION->GetFileContent($DOC_ROOT.$fname); $arContent = ParseFileContent($filesrc); $str_TITLE = $arContent["TITLE"]; $str_BODY = $arContent["CONTENT"]; $get_content = "Y"; } elseif ($template <> '') { foreach($arTemplates as $Template) { if($Template["file"] == $template) { $filesrc = GetTemplateContent($Template["file"]); $arContent = ParseFileContent($filesrc); $str_TITLE = $arContent["TITLE"]; $str_BODY = $arContent["CONTENT"]; $get_content = "Y"; break; } } } if ($get_content != "Y") { $filesrc = GetTemplateContent($arTemplates[0]["file"]); $arContent = ParseFileContent($filesrc); $str_TITLE = $arContent["TITLE"]; $str_BODY = $arContent["CONTENT"]; } $str_FILENAME = $fname <> ''? htmlspecialcharsbx($fname) : "/untitled.php"; $str_SITE_ID = htmlspecialcharsbx($site); $str_BODY_TYPE = "html"; $str_TITLE = htmlspecialcharsbx($str_TITLE); } else { $doc_files = CWorkflow::GetFileList($ID); while ($zr = $doc_files->GetNext()) $arDocFiles[] = $zr; $str_BODY = htmlspecialcharsback($str_BODY); } if ($message) { $DB->InitTableVarsForEdit("b_workflow_document", "", "str_"); } if ($USER->CanDoFileOperation('fm_lpa', Array($str_SITE_ID, $str_FILENAME)) && !$USER->CanDoOperation('edit_php')) { $content = $str_BODY; $arPHP = PHPParser::ParseFile($content); $l = count($arPHP); if($l > 0) { $str_BODY = ''; $end = 0; $php_count = 0; for ($n = 0; $n < $l; $n++) { $start = $arPHP[$n][0]; $str_BODY .= mb_substr($content, $end, $start - $end); $end = $arPHP[$n][1]; //Trim php tags $src = $arPHP[$n][2]; if (mb_substr($src, 0, 5) == "INCLUDECOMPONENT('; if (mb_strtoupper(mb_substr($src, 0, mb_strlen($comp2_begin))) == $comp2_begin) $str_BODY .= $arPHP[$n][2]; else $str_BODY .= '#PHP'.str_pad(++$php_count, 4, "0", STR_PAD_LEFT).'#'; } $str_BODY .= mb_substr($content, $end); } else { $str_BODY = $content; } } if ($ID>0) { if ($str_STATUS_ID>1) $sDocTitle = GetMessage("FLOW_EDIT_RECORD", array("#ID#" => $ID)); else $sDocTitle = GetMessage("FLOW_VIEW_RECORD", array("#ID#" => $ID)); } else { $sDocTitle = GetMessage("FLOW_NEW_RECORD"); } $APPLICATION->SetTitle($sDocTitle); require($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_after.php"); $aMenu = array( array( "ICON" => "btn_list", "TEXT" => GetMessage("FLOW_RECORDS_LIST"), "LINK" => "workflow_list.php?lang=".LANGUAGE_ID, //"&ID=".$ID "TITLE" => GetMessage("FLOW_RECORDS_LIST"), ), ); if (intval($ID) > 0) { $aMenu[] = array( "SEPARATOR" => "Y", ); $aMenu[] = array( "ICON" => "btn_new", "TEXT" => GetMessage("FLOW_NEW_DOCUMENT"), "LINK" => "workflow_edit.php?lang=".LANGUAGE_ID, "TITLE" => GetMessage("FLOW_NEW_DOCUMENT"), ); if (intval($locked_by) <= 0 || intval($locked_by) == $USER->GetID()) { $aMenu[] = array( "ICON" => "btn_delete", "TEXT" => GetMessage("FLOW_DELETE_DOCUMENT"), "LINK" => "javascript:if(confirm('".GetMessage("FLOW_DELETE_DOCUMENT_CONFIRM")."')) window.location='workflow_edit.php?del_id=".$ID."&lang=".LANGUAGE_ID."&".bitrix_sessid_get()."';", "TITLE" => GetMessage("FLOW_DELETE_DOCUMENT"), ); } } $context = new CAdminContextMenu($aMenu); $context->Show(); if ($message) echo $message->Show(); CAdminMessage::ShowNote($strNote); $tabControl->Begin(); ?>

Fatal error: Uncaught Error: Call to undefined function bitrix_sessid_post() in D:\ktt\ttepla.com\public_html\bitrix\modules\workflow\admin\workflow_edit.php:689 Stack trace: #0 {main} thrown in D:\ktt\ttepla.com\public_html\bitrix\modules\workflow\admin\workflow_edit.php on line 689