• Модуль: dav
  • Путь к файлу: ~/bitrix/modules/dav/classes/general/virtualfilesystem.php
  • Класс: CAllDavVirtualFileSystem
  • Вызов: CAllDavVirtualFileSystem::ParseFields
static function ParseFields(&$arFields, $mode = "add")
{
	$mode = mb_strtoupper($mode);
	$updateMode = ($mode !== "add");
	$addMode = !$updateMode;

	if (isset($arFields['LOCK_TYPE']))
	{
		$arFields["LOCK_TYPE"] = mb_strtoupper($arFields["LOCK_TYPE"]);
		if ($arFields["LOCK_TYPE"] === "WRITE")
		{
			$arFields["LOCK_TYPE"] = "W";
		}
		if ($arFields["LOCK_TYPE"] === "READ")
		{
			$arFields["LOCK_TYPE"] = "R";
		}

		if (!in_array($arFields["LOCK_TYPE"], array("W", "R")))
		{
			throw new Exception("LOCK_TYPE");
		}
	}

	if (isset($arFields['LOCK_SCOPE']))
	{
		$arFields["LOCK_SCOPE"] = mb_strtoupper($arFields["LOCK_SCOPE"]);
		if ($arFields["LOCK_SCOPE"] === "EXCLUSIVE")
		{
			$arFields["LOCK_SCOPE"] = "E";
		}
		if ($arFields["LOCK_SCOPE"] === "SHARED")
		{
			$arFields["LOCK_SCOPE"] = "S";
		}

		if (!in_array($arFields["LOCK_SCOPE"], array("E", "S")))
		{
			throw new Exception("LOCK_SCOPE");
		}
	}

	if (isset($arFields['LOCK_DEPTH']))
	{
		if (is_numeric($arFields["LOCK_DEPTH"]))
		{
			$arFields["LOCK_DEPTH"] = (int)$arFields["LOCK_DEPTH"];
		}
		elseif (
			mb_strtoupper($arFields["LOCK_DEPTH"]) === "INFINITE"
			|| mb_strtoupper($arFields["LOCK_DEPTH"]) === "I"
		)
		{
			$arFields["LOCK_DEPTH"] = "I";
		}
		else
		{
			throw new Exception("LOCK_DEPTH");
		}
	}

	if ($addMode && !isset($arFields['ID']))
	{
		throw new Exception("ID");
	}
	if ($addMode && !isset($arFields['PATH']))
	{
		throw new Exception("PATH");
	}
}