Issues (1502)

lib/syncobjects/syncmeetingrequest.php (1 issue)

Labels
Severity
1
<?php
2
3
/*
4
 * SPDX-License-Identifier: AGPL-3.0-only
5
 * SPDX-FileCopyrightText: Copyright 2007-2016 Zarafa Deutschland GmbH
6
 * SPDX-FileCopyrightText: Copyright 2020-2022 grommunio GmbH
7
 *
8
 * WBXML folder entities that can be parsed directly (as a stream) from WBXML.
9
 * It is automatically decoded according to $mapping and the Sync WBXML
10
 * mappings.
11
 */
12
13
class SyncMeetingRequest extends SyncObject {
14
	public $alldayevent;
15
	public $starttime;
16
	public $dtstamp;
17
	public $endtime;
18
	public $instancetype;
19
	public $location;
20
	public $organizer;
21
	public $recurrenceid;
22
	public $reminder;
23
	public $responserequested;
24
	public $recurrences;
25
	public $sensitivity;
26
	public $busystatus;
27
	public $timezone;
28
	public $globalobjid;
29
	public $meetingmessagetype;
30
	public $disallownewtimeproposal;
31
32
	public function __construct() {
33
		$mapping = [
34
			SYNC_POOMMAIL_ALLDAYEVENT => [
35
				self::STREAMER_VAR => "alldayevent",
36
				self::STREAMER_CHECKS => [self::STREAMER_CHECK_ZEROORONE => self::STREAMER_CHECK_SETZERO],
37
			],
38
			SYNC_POOMMAIL_STARTTIME => [
39
				self::STREAMER_VAR => "starttime",
40
				self::STREAMER_TYPE => self::STREAMER_TYPE_DATE_DASHES,
41
				self::STREAMER_CHECKS => [
42
					self::STREAMER_CHECK_REQUIRED => self::STREAMER_CHECK_SETZERO,
43
					self::STREAMER_CHECK_CMPLOWER => SYNC_POOMMAIL_ENDTIME,
44
				],
45
			],
46
			SYNC_POOMMAIL_DTSTAMP => [
47
				self::STREAMER_VAR => "dtstamp",
48
				self::STREAMER_TYPE => self::STREAMER_TYPE_DATE_DASHES,
49
				self::STREAMER_CHECKS => [self::STREAMER_CHECK_REQUIRED => self::STREAMER_CHECK_SETZERO],
50
			],
51
			SYNC_POOMMAIL_ENDTIME => [
52
				self::STREAMER_VAR => "endtime",
53
				self::STREAMER_TYPE => self::STREAMER_TYPE_DATE_DASHES,
54
				self::STREAMER_CHECKS => [
55
					self::STREAMER_CHECK_REQUIRED => self::STREAMER_CHECK_SETONE,
56
					self::STREAMER_CHECK_CMPHIGHER => SYNC_POOMMAIL_STARTTIME,
57
				],
58
			],
59
			// Instancetype values
60
			// 0 = single appointment
61
			// 1 = master recurring appointment
62
			// 2 = single instance of recurring appointment
63
			// 3 = exception of recurring appointment
64
			SYNC_POOMMAIL_INSTANCETYPE => [
65
				self::STREAMER_VAR => "instancetype",
66
				self::STREAMER_CHECKS => [
67
					self::STREAMER_CHECK_REQUIRED => self::STREAMER_CHECK_SETZERO,
68
					self::STREAMER_CHECK_ONEVALUEOF => [0, 1, 2, 3],
69
				],
70
			],
71
			SYNC_POOMMAIL_LOCATION => [self::STREAMER_VAR => "location"],
72
			SYNC_POOMMAIL_ORGANIZER => [
73
				self::STREAMER_VAR => "organizer",
74
				self::STREAMER_CHECKS => [self::STREAMER_CHECK_REQUIRED => self::STREAMER_CHECK_SETEMPTY],
75
			],
76
			SYNC_POOMMAIL_RECURRENCEID => [
77
				self::STREAMER_VAR => "recurrenceid",
78
				self::STREAMER_TYPE => self::STREAMER_TYPE_DATE_DASHES,
79
			],
80
			SYNC_POOMMAIL_REMINDER => [
81
				self::STREAMER_VAR => "reminder",
82
				self::STREAMER_CHECKS => [self::STREAMER_CHECK_CMPHIGHER => -1],
83
			],
84
			SYNC_POOMMAIL_RESPONSEREQUESTED => [self::STREAMER_VAR => "responserequested"],
85
			SYNC_POOMMAIL_RECURRENCES => [
86
				self::STREAMER_VAR => "recurrences",
87
				self::STREAMER_TYPE => "SyncMeetingRequestRecurrence",
88
				self::STREAMER_ARRAY => SYNC_POOMMAIL_RECURRENCE,
89
			],
90
			// Sensitivity values
91
			// 0 = Normal
92
			// 1 = Personal
93
			// 2 = Private
94
			// 3 = Confident
95
			SYNC_POOMMAIL_SENSITIVITY => [
96
				self::STREAMER_VAR => "sensitivity",
97
				self::STREAMER_CHECKS => [
98
					self::STREAMER_CHECK_REQUIRED => self::STREAMER_CHECK_SETZERO,
99
					self::STREAMER_CHECK_ONEVALUEOF => [0, 1, 2, 3],
100
				],
101
			],
102
			// Busystatus values
103
			// 0 = Free
104
			// 1 = Tentative
105
			// 2 = Busy
106
			// 3 = Out of office
107
			// 4 = Working Elsewhere
108
			SYNC_POOMMAIL_BUSYSTATUS => [
109
				self::STREAMER_VAR => "busystatus",
110
				self::STREAMER_CHECKS => [
111
					self::STREAMER_CHECK_REQUIRED => self::STREAMER_CHECK_SETTWO,
112
					self::STREAMER_CHECK_ONEVALUEOF => [0, 1, 2, 3, 4],
113
				],
114
			],
115
			SYNC_POOMMAIL_TIMEZONE => [
116
				self::STREAMER_VAR => "timezone",
117
				self::STREAMER_CHECKS => [
118
					self::STREAMER_CHECK_REQUIRED => base64_encode(pack("la64vvvvvvvvla64vvvvvvvvl", 0, "", 0, 0, 0, 0, 0, 0, 0, 0, 0, "", 0, 0, 0, 0, 0, 0, 0, 0, 0)),
119
				],
120
			],
121
			SYNC_POOMMAIL_GLOBALOBJID => [self::STREAMER_VAR => "globalobjid"],
122
		];
123
124
		if (Request::GetProtocolVersion() >= 14.0) {
125
			$mapping[SYNC_POOMMAIL_DISALLOWNEWTIMEPROPOSAL] = [
126
				self::STREAMER_VAR => "disallownewtimeproposal",
127
				self::STREAMER_CHECKS => [
128
					self::STREAMER_CHECK_REQUIRED => self::STREAMER_CHECK_SETZERO,
129
					self::STREAMER_CHECK_ONEVALUEOF => [0, 1],
130
				],
131
			];
132
		}
133
134
		if (Request::GetProtocolVersion() >= 14.1) {
135
			// MeetingMessageType values
136
			// 0 = A silent update was performed, or the message type is unspecified.
137
			// 1 = Initial meeting request.
138
			// 2 = Full update.
139
			// 3 = Informational update.
140
			// 4 = Outdated. A newer meeting request or meeting update was received after this message.
141
			// 5 = Identifies the delegator's copy of the meeting request.
142
			// 6 = Identifies that the meeting request has been delegated and the meeting request cannot be responded to.
143
			$mapping[SYNC_POOMMAIL2_MEETINGMESSAGETYPE] = [
144
				self::STREAMER_VAR => "meetingmessagetype",
145
				self::STREAMER_CHECKS => [
146
					self::STREAMER_CHECK_REQUIRED => self::STREAMER_CHECK_SETZERO,
147
					self::STREAMER_CHECK_ONEVALUEOF => [0, 1, 2, 3, 4, 5, 6],
148
				],
149
			];
150
		}
151
152
		parent::__construct($mapping);
153
	}
154
155
	/**
156
	 * Method checks if the object has the minimum of required parameters
157
	 * and fulfills semantic dependencies.
158
	 *
159
	 * This overloads the general check() with special checks to be executed
160
	 *
161
	 * @param bool $logAsDebug (opt) default is false, so messages are logged in WARN log level
162
	 *
163
	 * @return bool
164
	 */
165
	#[Override]
166
	public function Check($logAsDebug = false) {
167
		if (isset($this->busystatus) && $this->busystatus == 0xFFFFFFFF) {
168
			SLog::Write(LOGLEVEL_INFO, "SyncMeetingRequest->Check(): rewriting busystatus -1 (0xFFFFFFFF) to fbBusy (2).");
169
			$this->busystatus = fbBusy;
0 ignored issues
show
The constant fbBusy was not found. Maybe you did not declare it correctly or list all dependencies?
Loading history...
170
		}
171
172
		return parent::Check($logAsDebug);
173
	}
174
}
175