• Модуль: dav
  • Путь к файлу: ~/bitrix/modules/dav/classes/general/webdav.php
  • Класс: CDavWebDav
  • Вызов: CDavWebDav::PROPPATCHWrapper
protected function PROPPATCHWrapper()
{
	/** @var CDavRequest $request */
	$request = $this->request;
	$response = $this->response;

	if ($this->CheckLockStatus($request->GetPath()))
	{
		try
		{
			$requestDocument = $request->GetXmlDocument();
		}
		catch (CDavXMLParsingException $e)
		{
			$response->GenerateError("400 Error", $e->getMessage());
			return;
		}
		catch (Exception $e)
		{
			$response->SetHttpStatus("400 Error");
			return;
		}

		$arResources = array();
		$responseDescr = $this->PROPPATCH($arResources);

		$response->SetHttpStatus("207 Multi-Status");

		$response->AddHeader('Content-Type: text/xml; charset="utf-8"');

		$response->AddLine("");

		foreach ($arResources as $resource)
		{
			/** @var CDavResource $resource */
			$arResourceProps = $resource->GetProperties();

			$xmlnsHash = array('DAV:' => 'D');
			$xmlnsDefs = 'xmlns:ns0="urn:uuid:c2f41010-65b3-11d1-a29f-00aa00c14882/"';

			$response->AddLine(" ", $xmlnsDefs);

			$href = /*$response->Encode(*/$this->UrlEncode(rtrim($request->GetBaseUri(), '/')."/".ltrim($resource->GetPath(), '/'))/*)*/;
			$response->AddLine("  %s", $href);

			foreach ($arResourceProps as &$prop)
			{
				$response->AddLine("   ");
				$response->AddLine("    ");
				CDavResource::RenderProperty($prop, $xmlnsHash, $response, $request);
				$response->AddLine("    ");
				$response->AddLine("    HTTP/1.1 ".$prop['status']."");
				$response->AddLine("   ");
			}

			if ($responseDescr)
			{
				echo "	".
				$response->Encode(htmlspecialcharsbx($responseDescr)).
				"n";
			}

			$response->AddLine(" ");
		}

		$response->AddLine("");
	}
	else
	{
		$response->SetHttpStatus('423 Locked');
	}
}