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;
}