1<?php
2
3declare(strict_types=1);
4
5namespace Sabre\DAV;
6
7/**
8 * IProperties interface.
9 *
10 * Implement this interface to support custom WebDAV properties requested and sent from clients.
11 *
12 * @copyright Copyright (C) fruux GmbH (https://fruux.com/)
13 * @author Evert Pot (http://evertpot.com/)
14 * @license http://sabre.io/license/ Modified BSD License
15 */
16interface IProperties extends INode
17{
18    /**
19     * Updates properties on this node.
20     *
21     * This method received a PropPatch object, which contains all the
22     * information about the update.
23     *
24     * To update specific properties, call the 'handle' method on this object.
25     * Read the PropPatch documentation for more information.
26     */
27    public function propPatch(PropPatch $propPatch);
28
29    /**
30     * Returns a list of properties for this nodes.
31     *
32     * The properties list is a list of propertynames the client requested,
33     * encoded in clark-notation {xmlnamespace}tagname
34     *
35     * If the array is empty, it means 'all properties' were requested.
36     *
37     * Note that it's fine to liberally give properties back, instead of
38     * conforming to the list of requested properties.
39     * The Server class will filter out the extra.
40     *
41     * @param array $properties
42     *
43     * @return array
44     */
45    public function getProperties($properties);
46}
47