public function httpPropPatch(RequestInterface $request, ResponseInterface $response)
    {
        $path = $request->getPath();

        try {
            $propPatch = $this->server->xml->expect('{DAV:}propertyupdate', $request->getBody());
        } catch (ParseException $e) {
            throw new BadRequest($e->getMessage(), 0, $e);
        }
        $newProperties = $propPatch->properties;

        $result = $this->server->updateProperties($path, $newProperties);

        $prefer = $this->server->getHTTPPrefer();
        $response->setHeader('Vary', 'Brief,Prefer');

        if ('minimal' === $prefer['return']) {
            // If return-minimal is specified, we only have to check if the
            // request was successful, and don't need to return the
            // multi-status.
            $ok = true;
            foreach ($result as $prop => $code) {
                if ((int) $code > 299) {
                    $ok = false;
                }
            }

            if ($ok) {
                $response->setStatus(204);

                return false;
            }
        }

        $response->setStatus(207);
        $response->setHeader('Content-Type', 'application/xml; charset=utf-8');

        // Reorganizing the result for generateMultiStatus
        $multiStatus = [];
        foreach ($result as $propertyName => $code) {
            if (isset($multiStatus[$code])) {
                $multiStatus[$code][$propertyName] = null;
            } else {
                $multiStatus[$code] = [$propertyName => null];
            }
        }
        $multiStatus['href'] = $path;

        $response->setBody(
            $this->server->generateMultiStatus([$multiStatus])
        );

        // Sending back false will interrupt the event chain and tell the server
        // we've handled this method.
        return false;
    }
public function httpPropPatch(RequestInterface $request, ResponseInterface $response)
    {
        $path = $request->getPath();

        try {
            $propPatch = $this->server->xml->expect('{DAV:}propertyupdate', $request->getBody());
        } catch (ParseException $e) {
            throw new BadRequest($e->getMessage(), 0, $e);
        }
        $newProperties = $propPatch->properties;

        $result = $this->server->updateProperties($path, $newProperties);

        $prefer = $this->server->getHTTPPrefer();
        $response->setHeader('Vary', 'Brief,Prefer');

        if ('minimal' === $prefer['return']) {
            // If return-minimal is specified, we only have to check if the
            // request was successful, and don't need to return the
            // multi-status.
            $ok = true;
            foreach ($result as $prop => $code) {
                if ((int) $code > 299) {
                    $ok = false;
                }
            }

            if ($ok) {
                $response->setStatus(204);

                return false;
            }
        }

        $response->setStatus(207);
        $response->setHeader('Content-Type', 'application/xml; charset=utf-8');

        // Reorganizing the result for generateMultiStatus
        $multiStatus = [];
        foreach ($result as $propertyName => $code) {
            if (isset($multiStatus[$code])) {
                $multiStatus[$code][$propertyName] = null;
            } else {
                $multiStatus[$code] = [$propertyName => null];
            }
        }
        $multiStatus['href'] = $path;

        $response->setBody(
            $this->server->generateMultiStatus([$multiStatus])
        );

        // Sending back false will interrupt the event chain and tell the server
        // we've handled this method.
        return false;
    }
public function httpPropPatch ( RequestInterface $ request , ResponseInterface $ response ) { $ path = $ request -> getPath ( ) ; try { $ propPatch = $ this -> server -> xml -> expect ( '{DAV:}propertyupdate' , $ request -> getBody ( ) ) ; } catch ( ParseException $ e ) { throw new BadRequest ( $ e -> getMessage ( ) , 0 , $ e ) ; } $ newProperties = $ propPatch -> properties ; $ result = $ this -> server -> updateProperties ( $ path , $ newProperties ) ; $ prefer = $ this -> server -> getHTTPPrefer ( ) ; $ response -> setHeader ( 'Vary' , 'Brief,Prefer' ) ; if ( 'minimal' === $ prefer [ 'return' ] ) { // If return-minimal is specified, we only have to check if the // request was successful, and don't need to return the // multi-status. $ ok = true ; foreach ( $ result as $ prop => $ code ) { if ( ( int ) $ code > 299 ) { $ ok = false ; } } if ( $ ok ) { $ response -> setStatus ( 204 ) ; return false ; } } $ response -> setStatus ( 207 ) ; $ response -> setHeader ( 'Content-Type' , 'application/xml; charset=utf-8' ) ; // Reorganizing the result for generateMultiStatus $ multiStatus = [ ] ; foreach ( $ result as $ propertyName => $ code ) { if ( isset ( $ multiStatus [ $ code ] ) ) { $ multiStatus [ $ code ] [ $ propertyName ] = null ; } else { $ multiStatus [ $ code ] = [ $ propertyName => null ] ; } } $ multiStatus [ 'href' ] = $ path ; $ response -> setBody ( $ this -> server -> generateMultiStatus ( [ $ multiStatus ] ) ) ; // Sending back false will interrupt the event chain and tell the server // we've handled this method. return false ; }
WebDAV PROPPATCH.

This method is called to update properties on a Node. The request is an XML body with all the mutations.
In this XML body it is specified which properties should be set/updated and/or deleted

@param RequestInterface  $request
@param ResponseInterface $response

@return bool
WebDAV PROPPATCH .