static function _move_from_iblock_to_iblock($elementId, $targetIblockId, $targetSectionId = 0, $delete = true, $setNewNameIfNonUnique = false)
{
$elementId = intval($elementId);
$targetIblockId = intval($targetIblockId);
$targetSectionId = intval($targetSectionId);
if (($elementId <= 0) || ($targetIblockId <= 0))
return false;
$dbElement = CIBlockElement::GetList(array(), array("ID"=>$elementId, "SHOW_HISTORY"=>"Y"), false, false,
array(
"ID",
"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_COMMENTS",
"IN_SECTIONS",
"CODE",
"TAGS",
"XML_ID",
"TMP_ID",
)
);
if($element = $dbElement->Fetch())
{
$IBLOCK_ID = $element["IBLOCK_ID"];
if($element["WF_PARENT_ELEMENT_ID"] > 0)
{
return false;
}
else
{
//public doc.
$element["WF_STATUS_ID"] = 1;
unset($element["WF_NEW"]);
if($element["PREVIEW_PICTURE"])
$element["PREVIEW_PICTURE"] = CFile::MakeFileArray($element["PREVIEW_PICTURE"]);
if($element["DETAIL_PICTURE"])
$element["DETAIL_PICTURE"] = CFile::MakeFileArray($element["DETAIL_PICTURE"]);
$element["IBLOCK_SECTION_ID"] = $targetSectionId;
$element["IN_SECTIONS"] = "N";
$element["PROPERTY_VALUES"] = array();
$arProps = &$element["PROPERTY_VALUES"];
//Add new property values
$rsProps = CIBlockElement::GetProperty($element["IBLOCK_ID"], $element["ID"], array("value_id" => "asc"));
$i = 0;
while($arProp = $rsProps->Fetch())
{
$i++;
if(!array_key_exists($arProp["CODE"], $arProps))
$arProps[$arProp["CODE"]] = array();
if($arProp["PROPERTY_VALUE_ID"])
{
if($arProp["PROPERTY_TYPE"] == "F")
$arPropValue = array(
"VALUE" => CFile::MakeFileArray($arProp["VALUE"]),
"DESCRIPTION" => $arProp["DESCRIPTION"],
);
else
{
if ($arProp["VALUE_XML_ID"] != null)
{
$arPropValue = array(
"VALUE_XML_ID" => $arProp["VALUE_XML_ID"],
"DESCRIPTION" => $arProp["DESCRIPTION"],
);
}
else
{
$arPropValue = array(
"VALUE" => $arProp["VALUE"],
"DESCRIPTION" => $arProp["DESCRIPTION"],
);
}
}
$arProps[$arProp["CODE"]]["n".$i] = $arPropValue;
}
}
$element["IBLOCK_ID"] = $targetIblockId;
if($setNewNameIfNonUnique)
{
$mainPartName = $element['NAME'];
$newName = $mainPartName;
$count = 0;
while(!self::sCheckUniqueName($targetIblockId, $targetSectionId, '', $newName, $res))
{
$count++;
$newName = mb_strstr($mainPartName, '.', true)." ({$count})".mb_strstr($mainPartName, '.');
}
$element['NAME'] = $newName;
}
$newElement = new CIBlockElement;
$newId = $newElement->Add($element);
if(!$newId)
{
return false;
}
else
{
$element['ID'] = $newId;
CWebDavDiskDispatcher::sendEventToOwners($element, null, 'move_from_block_to_block');
if ($delete === true)
{
$ibe = new CIBlockElement();
$result = $ibe->Delete($elementId);
}
return $newId;
}
}
}
else
{
return false;
}
}