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