1<?php
2
3namespace Sabre\CalDAV\Xml\Property;
4
5use Sabre\CalDAV\Plugin;
6use Sabre\Xml\Writer;
7use Sabre\Xml\XmlSerializable;
8
9/**
10 * Supported-calendar-data property
11 *
12 * This property is a representation of the supported-calendar-data property
13 * in the CalDAV namespace. SabreDAV only has support for text/calendar;2.0
14 * so the value is currently hardcoded.
15 *
16 * This property is defined in:
17 * http://tools.ietf.org/html/rfc4791#section-5.2.4
18 *
19 * @copyright Copyright (C) fruux GmbH (https://fruux.com/)
20 * @author Evert Pot (http://www.rooftopsolutions.nl/)
21 * @license http://sabre.io/license/ Modified BSD License
22 */
23class SupportedCalendarData implements XmlSerializable {
24
25    /**
26     * The xmlSerialize method is called during xml writing.
27     *
28     * Use the $writer argument to write its own xml serialization.
29     *
30     * An important note: do _not_ create a parent element. Any element
31     * implementing XmlSerializable should only ever write what's considered
32     * its 'inner xml'.
33     *
34     * The parent of the current element is responsible for writing a
35     * containing element.
36     *
37     * This allows serializers to be re-used for different element names.
38     *
39     * If you are opening new elements, you must also close them again.
40     *
41     * @param Writer $writer
42     * @return void
43     */
44    function xmlSerialize(Writer $writer) {
45
46        $writer->startElement('{' . Plugin::NS_CALDAV . '}calendar-data');
47        $writer->writeAttributes([
48            'content-type' => 'text/calendar',
49            'version'      => '2.0',
50        ]);
51        $writer->endElement(); // calendar-data
52        $writer->startElement('{' . Plugin::NS_CALDAV . '}calendar-data');
53        $writer->writeAttributes([
54            'content-type' => 'application/calendar+json',
55        ]);
56        $writer->endElement(); // calendar-data
57
58    }
59
60}
61