• Модуль: webdav
  • Путь к файлу: ~/bitrix/modules/webdav/classes/iblockbizproc.php
  • Класс: CIBlockDocumentWebdav
  • Вызов: CIBlockDocumentWebdav::PublishDocument
static function PublishDocument($documentId)
{
	$documentId = intval($documentId);
	if ($documentId <= 0)
		throw new CBPArgumentNullException("documentId");

	$diskId = self::processGetDiskIdByDocId($documentId);
	if($diskId !== null)
	{
		return self::proxyToDisk(__FUNCTION__, array($diskId));
	}

	global $DB;
	$ID = intval($documentId);
	$db_element = CIBlockElement::GetList(array(), array("ID"=>$ID, "SHOW_HISTORY"=>"Y"), false, false,
		array(
			"ID",
			"NAME",
			"WF_PARENT_ELEMENT_ID",
		)
	);
	$PARENT_ID = 0; $arParent = array();
	if($ar_element = $db_element->Fetch())
	{
		$PARENT_ID = intval($ar_element["WF_PARENT_ELEMENT_ID"]);
		if ($PARENT_ID > 0)
		{
			CBPDocument::MergeDocuments(
				array("webdav", "CIBlockDocumentWebdav", $PARENT_ID),
				array("webdav", "CIBlockDocumentWebdav", $documentId));
			$db_res = CIBlockElement::GetList(
				array(),
				array("ID" => $PARENT_ID, "SHOW_NEW"=>"Y", "SHOW_HISTORY" => "Y"),
				false,
				false,
				array("IBLOCK_ID", "ID", "NAME"));
			$arParent = $db_res->Fetch();
		}
	}
	parent::PublishDocument($documentId);
	if ($PARENT_ID > 0)
	{
		CBPDocument::AddDocumentToHistory(
			array("webdav", "CIBlockDocumentWebdav", $PARENT_ID),
			str_replace(
				array("#PARENT_ID#", "#PARENT_NAME#", "#ID#", "#NAME#"),
				array($PARENT_ID, $arParent["NAME"], $documentId, $ar_element["NAME"]),
				GetMessage("IBD_TEXT_001")),
			$GLOBALS["USER"]->GetID());
	}


	if ($ar_element)
	{
		$rsEvents = GetModuleEvents("webdav", "OnBizprocPublishDocument");
		while ($arEvent = $rsEvents->Fetch())
		{
			ExecuteModuleEventEx($arEvent, array($ar_element['ID']));
		}
	}

	return $PARENT_ID > 0 ? $PARENT_ID : $documentId;
}