xref: /plugin/davcal/vendor/sabre/dav/tests/Sabre/CalDAV/Backend/MockScheduling.php (revision a1a3b6794e0e143a4a8b51d3185ce2d339be61ab)
1*a1a3b679SAndreas Boehler<?php
2*a1a3b679SAndreas Boehler
3*a1a3b679SAndreas Boehlernamespace Sabre\CalDAV\Backend;
4*a1a3b679SAndreas Boehleruse Sabre\DAV;
5*a1a3b679SAndreas Boehleruse Sabre\CalDAV;
6*a1a3b679SAndreas Boehler
7*a1a3b679SAndreas Boehlerclass MockScheduling extends Mock implements SchedulingSupport {
8*a1a3b679SAndreas Boehler
9*a1a3b679SAndreas Boehler    public $schedulingObjects = [];
10*a1a3b679SAndreas Boehler
11*a1a3b679SAndreas Boehler    /**
12*a1a3b679SAndreas Boehler     * Returns a single scheduling object.
13*a1a3b679SAndreas Boehler     *
14*a1a3b679SAndreas Boehler     * The returned array should contain the following elements:
15*a1a3b679SAndreas Boehler     *   * uri - A unique basename for the object. This will be used to
16*a1a3b679SAndreas Boehler     *           construct a full uri.
17*a1a3b679SAndreas Boehler     *   * calendardata - The iCalendar object
18*a1a3b679SAndreas Boehler     *   * lastmodified - The last modification date. Can be an int for a unix
19*a1a3b679SAndreas Boehler     *                    timestamp, or a PHP DateTime object.
20*a1a3b679SAndreas Boehler     *   * etag - A unique token that must change if the object changed.
21*a1a3b679SAndreas Boehler     *   * size - The size of the object, in bytes.
22*a1a3b679SAndreas Boehler     *
23*a1a3b679SAndreas Boehler     * @param string $principalUri
24*a1a3b679SAndreas Boehler     * @param string $objectUri
25*a1a3b679SAndreas Boehler     * @return array
26*a1a3b679SAndreas Boehler     */
27*a1a3b679SAndreas Boehler    public function getSchedulingObject($principalUri, $objectUri) {
28*a1a3b679SAndreas Boehler
29*a1a3b679SAndreas Boehler        if (isset($this->schedulingObjects[$principalUri][$objectUri])) {
30*a1a3b679SAndreas Boehler            return $this->schedulingObjects[$principalUri][$objectUri];
31*a1a3b679SAndreas Boehler        }
32*a1a3b679SAndreas Boehler
33*a1a3b679SAndreas Boehler    }
34*a1a3b679SAndreas Boehler
35*a1a3b679SAndreas Boehler    /**
36*a1a3b679SAndreas Boehler     * Returns all scheduling objects for the inbox collection.
37*a1a3b679SAndreas Boehler     *
38*a1a3b679SAndreas Boehler     * These objects should be returned as an array. Every item in the array
39*a1a3b679SAndreas Boehler     * should follow the same structure as returned from getSchedulingObject.
40*a1a3b679SAndreas Boehler     *
41*a1a3b679SAndreas Boehler     * The main difference is that 'calendardata' is optional.
42*a1a3b679SAndreas Boehler     *
43*a1a3b679SAndreas Boehler     * @param string $principalUri
44*a1a3b679SAndreas Boehler     * @return array
45*a1a3b679SAndreas Boehler     */
46*a1a3b679SAndreas Boehler    public function getSchedulingObjects($principalUri) {
47*a1a3b679SAndreas Boehler
48*a1a3b679SAndreas Boehler        if (isset($this->schedulingObjects[$principalUri])) {
49*a1a3b679SAndreas Boehler            return array_values($this->schedulingObjects[$principalUri]);
50*a1a3b679SAndreas Boehler        }
51*a1a3b679SAndreas Boehler        return [];
52*a1a3b679SAndreas Boehler
53*a1a3b679SAndreas Boehler    }
54*a1a3b679SAndreas Boehler
55*a1a3b679SAndreas Boehler    /**
56*a1a3b679SAndreas Boehler     * Deletes a scheduling object
57*a1a3b679SAndreas Boehler     *
58*a1a3b679SAndreas Boehler     * @param string $principalUri
59*a1a3b679SAndreas Boehler     * @param string $objectUri
60*a1a3b679SAndreas Boehler     * @return void
61*a1a3b679SAndreas Boehler     */
62*a1a3b679SAndreas Boehler    public function deleteSchedulingObject($principalUri, $objectUri) {
63*a1a3b679SAndreas Boehler
64*a1a3b679SAndreas Boehler        if (isset($this->schedulingObjects[$principalUri][$objectUri])) {
65*a1a3b679SAndreas Boehler            unset($this->schedulingObjects[$principalUri][$objectUri]);
66*a1a3b679SAndreas Boehler        }
67*a1a3b679SAndreas Boehler
68*a1a3b679SAndreas Boehler    }
69*a1a3b679SAndreas Boehler
70*a1a3b679SAndreas Boehler    /**
71*a1a3b679SAndreas Boehler     * Creates a new scheduling object. This should land in a users' inbox.
72*a1a3b679SAndreas Boehler     *
73*a1a3b679SAndreas Boehler     * @param string $principalUri
74*a1a3b679SAndreas Boehler     * @param string $objectUri
75*a1a3b679SAndreas Boehler     * @param string $objectData;
76*a1a3b679SAndreas Boehler     * @return void
77*a1a3b679SAndreas Boehler     */
78*a1a3b679SAndreas Boehler    public function createSchedulingObject($principalUri, $objectUri, $objectData) {
79*a1a3b679SAndreas Boehler
80*a1a3b679SAndreas Boehler        if (!isset($this->schedulingObjects[$principalUri])) {
81*a1a3b679SAndreas Boehler            $this->schedulingObjects[$principalUri] = [];
82*a1a3b679SAndreas Boehler        }
83*a1a3b679SAndreas Boehler        $this->schedulingObjects[$principalUri][$objectUri] = [
84*a1a3b679SAndreas Boehler            'uri' => $objectUri,
85*a1a3b679SAndreas Boehler            'calendardata' => $objectData,
86*a1a3b679SAndreas Boehler            'lastmodified' => null,
87*a1a3b679SAndreas Boehler            'etag' => '"' . md5($objectData) . '"',
88*a1a3b679SAndreas Boehler            'size' => strlen($objectData)
89*a1a3b679SAndreas Boehler        ];
90*a1a3b679SAndreas Boehler
91*a1a3b679SAndreas Boehler    }
92*a1a3b679SAndreas Boehler
93*a1a3b679SAndreas Boehler}
94