1<?php
2
3declare(strict_types=1);
4
5namespace Sabre\DAV;
6
7/**
8 * By implementing this interface, a collection can effectively say "other
9 * nodes may be copied into this collection".
10 *
11 * If a backend supports a better optimized copy operation, e.g. by avoiding
12 * copying the contents, this can trigger some huge speed gains.
13 *
14 * @copyright Copyright (C) fruux GmbH (https://fruux.com/)
15 * @author Evert Pot (http://evertpot.com/)
16 * @license http://sabre.io/license/ Modified BSD License
17 */
18interface ICopyTarget extends ICollection
19{
20    /**
21     * Copies a node into this collection.
22     *
23     * It is up to the implementors to:
24     *   1. Create the new resource.
25     *   2. Copy the data and any properties.
26     *
27     * If you return true from this function, the assumption
28     * is that the copy was successful.
29     * If you return false, sabre/dav will handle the copy itself.
30     *
31     * @param string $targetName new local file/collection name
32     * @param string $sourcePath Full path to source node
33     * @param INode  $sourceNode Source node itself
34     *
35     * @return bool
36     */
37    public function copyInto($targetName, $sourcePath, INode $sourceNode);
38}
39