1<?php
2
3declare(strict_types=1);
4
5namespace Sabre\DAV;
6
7/**
8 * The IExtendedCollection interface.
9 *
10 * This interface can be used to create special-type of collection-resources
11 * as defined by RFC 5689.
12 *
13 * @copyright Copyright (C) fruux GmbH (https://fruux.com/)
14 * @author Evert Pot (http://evertpot.com/)
15 * @license http://sabre.io/license/ Modified BSD License
16 */
17interface IExtendedCollection extends ICollection
18{
19    /**
20     * Creates a new collection.
21     *
22     * This method will receive a MkCol object with all the information about
23     * the new collection that's being created.
24     *
25     * The MkCol object contains information about the resourceType of the new
26     * collection. If you don't support the specified resourceType, you should
27     * throw Exception\InvalidResourceType.
28     *
29     * The object also contains a list of WebDAV properties for the new
30     * collection.
31     *
32     * You should call the handle() method on this object to specify exactly
33     * which properties you are storing. This allows the system to figure out
34     * exactly which properties you didn't store, which in turn allows other
35     * plugins (such as the propertystorage plugin) to handle storing the
36     * property for you.
37     *
38     * @param string $name
39     *
40     * @throws Exception\InvalidResourceType
41     */
42    public function createExtendedCollection($name, MkCol $mkCol);
43}
44