1<?php
2
3namespace Sabre\VObject\ITip;
4
5/**
6 * This class represents an iTip message.
7 *
8 * A message holds all the information relevant to the message, including the
9 * object itself.
10 *
11 * It should for the most part be treated as immutable.
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 */
17class Message
18{
19    /**
20     * The object's UID.
21     *
22     * @var string
23     */
24    public $uid;
25
26    /**
27     * The component type, such as VEVENT.
28     *
29     * @var string
30     */
31    public $component;
32
33    /**
34     * Contains the ITip method, which is something like REQUEST, REPLY or
35     * CANCEL.
36     *
37     * @var string
38     */
39    public $method;
40
41    /**
42     * The current sequence number for the event.
43     *
44     * @var int
45     */
46    public $sequence;
47
48    /**
49     * The senders' email address.
50     *
51     * Note that this does not imply that this has to be used in a From: field
52     * if the message is sent by email. It may also be populated in Reply-To:
53     * or not at all.
54     *
55     * @var string
56     */
57    public $sender;
58
59    /**
60     * The name of the sender. This is often populated from a CN parameter from
61     * either the ORGANIZER or ATTENDEE, depending on the message.
62     *
63     * @var string|null
64     */
65    public $senderName;
66
67    /**
68     * The recipient's email address.
69     *
70     * @var string
71     */
72    public $recipient;
73
74    /**
75     * The name of the recipient. This is usually populated with the CN
76     * parameter from the ATTENDEE or ORGANIZER property, if it's available.
77     *
78     * @var string|null
79     */
80    public $recipientName;
81
82    /**
83     * After the message has been delivered, this should contain a string such
84     * as : 1.1;Sent or 1.2;Delivered.
85     *
86     * In case of a failure, this will hold the error status code.
87     *
88     * See:
89     * http://tools.ietf.org/html/rfc6638#section-7.3
90     *
91     * @var string
92     */
93    public $scheduleStatus;
94
95    /**
96     * The iCalendar / iTip body.
97     *
98     * @var \Sabre\VObject\Component\VCalendar
99     */
100    public $message;
101
102    /**
103     * This will be set to true, if the iTip broker considers the change
104     * 'significant'.
105     *
106     * In practice, this means that we'll only mark it true, if for instance
107     * DTSTART changed. This allows systems to only send iTip messages when
108     * significant changes happened. This is especially useful for iMip, as
109     * normally a ton of messages may be generated for normal calendar use.
110     *
111     * To see the list of properties that are considered 'significant', check
112     * out Sabre\VObject\ITip\Broker::$significantChangeProperties.
113     *
114     * @var bool
115     */
116    public $significantChange = true;
117
118    /**
119     * Returns the schedule status as a string.
120     *
121     * For example:
122     * 1.2
123     *
124     * @return mixed bool|string
125     */
126    public function getScheduleStatus()
127    {
128        if (!$this->scheduleStatus) {
129            return false;
130        } else {
131            list($scheduleStatus) = explode(';', $this->scheduleStatus);
132
133            return $scheduleStatus;
134        }
135    }
136}
137