• Модуль: workflow
  • Путь к файлу: ~/bitrix/modules/workflow/classes/general/workflow.php
  • Класс: CAllWorkflow
  • Вызов: CAllWorkflow::SetStatus
static function SetStatus($DOCUMENT_ID, $STATUS_ID, $OLD_STATUS_ID, $history=true)
{
	$err_mess = (CAllWorkflow::err_mess())."
Function: SetStatus
Line: "; global $DB, $APPLICATION, $USER, $strError; //$arMsg = Array(); $DOCUMENT_ID = intval($DOCUMENT_ID); $STATUS_ID = intval($STATUS_ID); $OLD_STATUS_ID = intval($OLD_STATUS_ID); if ($STATUS_ID==1) // if "[1] Published" { // get all files associated with the document $files = CWorkflow::GetFileList($DOCUMENT_ID); while ($file=$files->Fetch()) { $path = $file["FILENAME"]; $DOC_ROOT = CSite::GetSiteDocRoot($file["SITE_ID"]); $pathto = $DOC_ROOT.$path; $pathfrom = CWorkflow::GetTempDir().$file["TEMP_FILENAME"]; if( $USER->CanDoFileOperation('fm_edit_in_workflow', Array($file["SITE_ID"], $path)) && $USER->CanDoFileOperation('fm_edit_existent_file', Array($file["SITE_ID"], $path)) && $USER->CanDoFileOperation('fm_create_new_file', Array($file["SITE_ID"], $path)) ) { if(!copy($pathfrom,$pathto)) { $str = GetMessage("FLOW_CAN_NOT_WRITE_FILE", array("#FILENAME#" => $path)); $strError .= $str."
"; } } else { $str = GetMessage("FLOW_ACCESS_DENIED_FOR_FILE_WRITE", array("#FILENAME#" => $path)); $strError .= $str."
"; } } // still good if ($strError == '') { // publish the document $y = CWorkflow::GetByID($DOCUMENT_ID); $yr = $y->Fetch(); if( $USER->CanDoFileOperation('fm_edit_in_workflow', Array($yr["SITE_ID"], $yr["FILENAME"])) && $USER->CanDoFileOperation('fm_edit_existent_file', Array($yr["SITE_ID"], $yr["FILENAME"])) && $USER->CanDoFileOperation('fm_create_new_file', Array($yr["SITE_ID"], $yr["FILENAME"])) ) { // save file $prolog = $yr["PROLOG"]; if ($prolog <> '') { $title = $yr["TITLE"]; $prolog = SetPrologTitle($prolog, $title); } $content = ($yr["BODY_TYPE"]=="text") ? TxtToHTML($yr["BODY"]) : $yr["BODY"]; $content = WFToPath($content); $epilog = $yr["EPILOG"]; $filesrc = $prolog.$content.$epilog; global $BX_WORKFLOW_PUBLISHED_PATH, $BX_WORKFLOW_PUBLISHED_SITE; $BX_WORKFLOW_PUBLISHED_PATH = $yr["FILENAME"]; $BX_WORKFLOW_PUBLISHED_SITE = $yr["SITE_ID"]; $DOC_ROOT = CSite::GetSiteDocRoot($yr["SITE_ID"]); $APPLICATION->SaveFileContent($DOC_ROOT.$yr["FILENAME"], $filesrc); $BX_WORKFLOW_PUBLISHED_PATH = ""; $BX_WORKFLOW_PUBLISHED_SITE = ""; } else // otherwise { // throw error $str = GetMessage("FLOW_ACCESS_DENIED_FOLDER", array("#FILENAME#" => $yr["FILENAME"])); $strError .= GetMessage("FLOW_ERROR").htmlspecialcharsbx($str)."
"; } } } if ($strError == '') { // update db $arFields = array( "DATE_MODIFY" => $DB->GetNowFunction(), "MODIFIED_BY" => $USER->GetID(), "STATUS_ID" => intval($STATUS_ID) ); $DB->Update("b_workflow_document",$arFields,"WHERE ID='".$DOCUMENT_ID."'",$err_mess.__LINE__); if ($history===true) { $LOG_ID = CWorkflow::SetHistory($DOCUMENT_ID); CWorkflow::SetMove($DOCUMENT_ID, $STATUS_ID, $OLD_STATUS_ID, $LOG_ID); } } else { $strError = GetMessage("FLOW_DOCUMENT_NOT_PUBLISHED")."
".$strError; } CWorkflow::CleanUpPublished(); }