SyncMeetingRequest::__construct()   B
last analyzed

Complexity

Conditions 3
Paths 4

Size

Total Lines 121
Code Lines 68

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 3
eloc 68
nc 4
nop 0
dl 0
loc 121
rs 8.6981
c 0
b 0
f 0

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

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