- Модуль: webdav
- Путь к файлу: ~/bitrix/modules/webdav/classes/iblock.php
- Класс: CWebDavIblock
- Вызов: CWebDavIblock::sCheckUniqueName
static function sCheckUniqueName($iblockId, $sectionId, $workflow, $basename, &$res)
{
$iblockId = intval($iblockId);
$sectionId = intval($sectionId);
$basename = trim($basename);
if (empty($basename))
return false;
$arObject = array();
$arSelectFields = array("ID", "NAME", "IBLOCK_ID", "IBLOCK_SECTION_ID", "WF_PARENT_ELEMENT_ID", "WF_STATUS_ID", "CREATED_BY");
$arFilter = array(
"IBLOCK_ID" => $iblockId,
"SECTION_ID" => $sectionId,
"=NAME" => $basename,
'CHECK_PERMISSIONS' => 'N',
"SHOW_NEW" => ($workflow == 'workflow' || $workflow == 'bizproc' ? "Y" : "N")
);
$arOrder = array("ID" => "ASC");
$db_res = CIBlockElement::GetList($arOrder, $arFilter, false, false, $arSelectFields);
if ($db_res && $res = $db_res->Fetch())
{
$arObject = array(
"object" => "element",
"id" => $res["ID"],
"data" => $res);
}
else
{
$db_res = CIBlockSection::GetList($arOrder, $arFilter, false, $arSelectFields);
if ($db_res && $res = $db_res->Fetch())
{
$arObject = array(
"object" => "section",
"id" => $res["ID"],
"data" => $res);
}
}
if (!empty($arObject))
{}
elseif ($workflow == 'workflow' || $workflow == 'bizproc')
{
$arFilter["SHOW_HISTORY"] = "Y";
$db_res = CIBlockElement::GetList($arOrder, $arFilter, false, false, $arSelectFields);
if ($db_res && $res = $db_res->Fetch())
{
$arBuff = array();
do
{
$res["LAST_ID"] = CIBlockElement::WF_GetLast($res["WF_PARENT_ELEMENT_ID"]);
if (empty($arBuff[$res["LAST_ID"]]))
{
$db_res = CIBlockElement::GetList($arOrder, array("ID" => $res["LAST_ID"], "SHOW_HISTORY" => "Y"), false, false, $arSelectFields);
if (!($db_res && $res = $db_res->Fetch())):
$arObject = array(
"object" => "element",
"id" => $res["LAST_ID"],
"data" => "element_is_not_found");
break;
elseif ($arBuff[$res["LAST_ID"]]["NAME"] == $basename && $arBuff[$res["LAST_ID"]]["IBLOCK_SECTION_ID"] == $sectionId):
$arObject = array(
"object" => "element",
"id" => $res["ID"],
"data" => $res);
break;
else:
$arBuff[$res["LAST_ID"]] = $res;
endif;
}
} while ($res = $db_res->Fetch());
}
}
if (empty($arObject))
{
return true;
}
$res = $arObject;
return false;
}