• Модуль: 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;
}