• Модуль: lists
  • Путь к файлу: ~/bitrix/modules/lists/lib/bizprocdocument.php
  • Класс: BizprocDocument
  • Вызов: BizprocDocument::PublishDocument
static function PublishDocument($documentId)
{
	global $DB;
	$ID = intval($documentId);

	$elementQuery = CIBlockElement::getList(array(), array("ID"=>$ID, "SHOW_HISTORY"=>"Y"), false, false,
		array(
			"ID",
			"TIMESTAMP_X",
			"MODIFIED_BY",
			"DATE_CREATE",
			"CREATED_BY",
			"IBLOCK_ID",
			"ACTIVE",
			"ACTIVE_FROM",
			"ACTIVE_TO",
			"SORT",
			"NAME",
			"PREVIEW_PICTURE",
			"PREVIEW_TEXT",
			"PREVIEW_TEXT_TYPE",
			"DETAIL_PICTURE",
			"DETAIL_TEXT",
			"DETAIL_TEXT_TYPE",
			"WF_STATUS_ID",
			"WF_PARENT_ELEMENT_ID",
			"WF_NEW",
			"WF_COMMENTS",
			"IN_SECTIONS",
			"CODE",
			"TAGS",
			"XML_ID",
			"TMP_ID",
		)
	);
	if($element = $elementQuery->fetch())
	{
		$parentId = intval($element["WF_PARENT_ELEMENT_ID"]);
		if($parentId)
		{
			$elementObject = new CIBlockElement;
			$element["WF_PARENT_ELEMENT_ID"] = false;

			if($element["PREVIEW_PICTURE"])
				$element["PREVIEW_PICTURE"] = CFile::makeFileArray($element["PREVIEW_PICTURE"]);
			else
				$element["PREVIEW_PICTURE"] = array("tmp_name" => "", "del" => "Y");

			if($element["DETAIL_PICTURE"])
				$element["DETAIL_PICTURE"] = CFile::makeFileArray($element["DETAIL_PICTURE"]);
			else
				$element["DETAIL_PICTURE"] = array("tmp_name" => "", "del" => "Y");

			$element["IBLOCK_SECTION"] = array();
			if($element["IN_SECTIONS"] == "Y")
			{
				$sectionsQuery = CIBlockElement::getElementGroups($element["ID"], true, array('ID', 'IBLOCK_ELEMENT_ID'));
				while($section = $sectionsQuery->fetch())
					$element["IBLOCK_SECTION"][] = $section["ID"];
			}

			$element["PROPERTY_VALUES"] = array();
			$props = &$element["PROPERTY_VALUES"];

			//Delete old files
			$propsQuery = CIBlockElement::getProperty($element["IBLOCK_ID"], $parentId, array("value_id" => "asc"), array("PROPERTY_TYPE" => "F", "EMPTY" => "N"));
			while($prop = $propsQuery->fetch())
			{
				if(!array_key_exists($prop["ID"], $props))
					$props[$prop["ID"]] = array();
				$props[$prop["ID"]][$prop["PROPERTY_VALUE_ID"]] = array(
					"VALUE" => array("tmp_name" => "", "del" => "Y"),
					"DESCRIPTION" => false,
				);
			}

			//Add new proiperty values
			$propsQuery = CIBlockElement::getProperty($element["IBLOCK_ID"], $element["ID"], array("value_id" => "asc"));
			$i = 0;
			while($prop = $propsQuery->fetch())
			{
				$i++;
				if(!array_key_exists($prop["ID"], $props))
					$props[$prop["ID"]] = array();

				if($prop["PROPERTY_VALUE_ID"])
				{
					if($prop["PROPERTY_TYPE"] == "F")
						$props[$prop["ID"]]["n".$i] = array(
							"VALUE" => CFile::makeFileArray($prop["VALUE"]),
							"DESCRIPTION" => $prop["DESCRIPTION"],
						);
					else
						$props[$prop["ID"]]["n".$i] = array(
							"VALUE" => $prop["VALUE"],
							"DESCRIPTION" => $prop["DESCRIPTION"],
						);
				}
			}

			$elementObject->update($parentId, $element);
			CBPDocument::mergeDocuments(
				array("lists", get_called_class(), $parentId),
				array("lists", get_called_class(), $documentId)
			);
			CIBlockElement::delete($ID);
			CIBlockElement::wF_CleanUpHistoryCopies($parentId, 0);
			$strSql = "update b_iblock_element set WF_STATUS_ID='1', WF_NEW=NULL WHERE ID=".$parentId." AND WF_PARENT_ELEMENT_ID IS NULL";
			$DB->Query($strSql, false, "FILE: ".__FILE__."
LINE: ".__LINE__); CIBlockElement::updateSearch($parentId); return $parentId; } else { CIBlockElement::wF_CleanUpHistoryCopies($ID, 0); $strSql = "update b_iblock_element set WF_STATUS_ID='1', WF_NEW=NULL WHERE ID=".$ID." AND WF_PARENT_ELEMENT_ID IS NULL"; $DB->Query($strSql, false, "FILE: ".__FILE__."
LINE: ".__LINE__); CIBlockElement::updateSearch($ID); return $ID; } } return false; }