Passed
Push — master ( 32577f...c1368b )
by Robin
11:13 queued 10s
created
apps/dav/lib/CalDAV/Activity/Provider/Base.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -49,7 +49,7 @@
 block discarded – undo
49 49
 	protected function setSubjects(IEvent $event, $subject, array $parameters) {
50 50
 		$placeholders = $replacements = [];
51 51
 		foreach ($parameters as $placeholder => $parameter) {
52
-			$placeholders[] = '{' . $placeholder . '}';
52
+			$placeholders[] = '{'.$placeholder.'}';
53 53
 			$replacements[] = $parameter['name'];
54 54
 		}
55 55
 
Please login to merge, or discard this patch.
Indentation   +143 added lines, -143 removed lines patch added patch discarded remove patch
@@ -34,147 +34,147 @@
 block discarded – undo
34 34
 
35 35
 abstract class Base implements IProvider {
36 36
 
37
-	/** @var IUserManager */
38
-	protected $userManager;
39
-
40
-	/** @var string[]  */
41
-	protected $userDisplayNames = [];
42
-
43
-	/** @var IGroupManager */
44
-	protected $groupManager;
45
-
46
-	/** @var string[] */
47
-	protected $groupDisplayNames = [];
48
-
49
-	/**
50
-	 * @param IUserManager $userManager
51
-	 * @param IGroupManager $groupManager
52
-	 */
53
-	public function __construct(IUserManager $userManager, IGroupManager $groupManager) {
54
-		$this->userManager = $userManager;
55
-		$this->groupManager = $groupManager;
56
-	}
57
-
58
-	/**
59
-	 * @param IEvent $event
60
-	 * @param string $subject
61
-	 * @param array $parameters
62
-	 */
63
-	protected function setSubjects(IEvent $event, $subject, array $parameters) {
64
-		$placeholders = $replacements = [];
65
-		foreach ($parameters as $placeholder => $parameter) {
66
-			$placeholders[] = '{' . $placeholder . '}';
67
-			$replacements[] = $parameter['name'];
68
-		}
69
-
70
-		$event->setParsedSubject(str_replace($placeholders, $replacements, $subject))
71
-			->setRichSubject($subject, $parameters);
72
-	}
73
-
74
-	/**
75
-	 * @param array $eventData
76
-	 * @return array
77
-	 */
78
-	protected function generateObjectParameter($eventData) {
79
-		if (!is_array($eventData) || !isset($eventData['id']) || !isset($eventData['name'])) {
80
-			throw new \InvalidArgumentException();
81
-		}
82
-
83
-		return [
84
-			'type' => 'calendar-event',
85
-			'id' => $eventData['id'],
86
-			'name' => $eventData['name'],
87
-		];
88
-	}
89
-
90
-	/**
91
-	 * @param array $data
92
-	 * @param IL10N $l
93
-	 * @return array
94
-	 */
95
-	protected function generateCalendarParameter($data, IL10N $l) {
96
-		if ($data['uri'] === CalDavBackend::PERSONAL_CALENDAR_URI &&
97
-			$data['name'] === CalDavBackend::PERSONAL_CALENDAR_NAME) {
98
-			return [
99
-				'type' => 'calendar',
100
-				'id' => $data['id'],
101
-				'name' => $l->t('Personal'),
102
-			];
103
-		}
104
-
105
-		return [
106
-			'type' => 'calendar',
107
-			'id' => $data['id'],
108
-			'name' => $data['name'],
109
-		];
110
-	}
111
-
112
-	/**
113
-	 * @param int $id
114
-	 * @param string $name
115
-	 * @return array
116
-	 */
117
-	protected function generateLegacyCalendarParameter($id, $name) {
118
-		return [
119
-			'type' => 'calendar',
120
-			'id' => $id,
121
-			'name' => $name,
122
-		];
123
-	}
124
-
125
-	/**
126
-	 * @param string $uid
127
-	 * @return array
128
-	 */
129
-	protected function generateUserParameter($uid) {
130
-		if (!isset($this->userDisplayNames[$uid])) {
131
-			$this->userDisplayNames[$uid] = $this->getUserDisplayName($uid);
132
-		}
133
-
134
-		return [
135
-			'type' => 'user',
136
-			'id' => $uid,
137
-			'name' => $this->userDisplayNames[$uid],
138
-		];
139
-	}
140
-
141
-	/**
142
-	 * @param string $uid
143
-	 * @return string
144
-	 */
145
-	protected function getUserDisplayName($uid) {
146
-		$user = $this->userManager->get($uid);
147
-		if ($user instanceof IUser) {
148
-			return $user->getDisplayName();
149
-		}
150
-		return $uid;
151
-	}
152
-
153
-	/**
154
-	 * @param string $gid
155
-	 * @return array
156
-	 */
157
-	protected function generateGroupParameter($gid) {
158
-		if (!isset($this->groupDisplayNames[$gid])) {
159
-			$this->groupDisplayNames[$gid] = $this->getGroupDisplayName($gid);
160
-		}
161
-
162
-		return [
163
-			'type' => 'user-group',
164
-			'id' => $gid,
165
-			'name' => $this->groupDisplayNames[$gid],
166
-		];
167
-	}
168
-
169
-	/**
170
-	 * @param string $gid
171
-	 * @return string
172
-	 */
173
-	protected function getGroupDisplayName($gid) {
174
-		$group = $this->groupManager->get($gid);
175
-		if ($group instanceof IGroup) {
176
-			return $group->getDisplayName();
177
-		}
178
-		return $gid;
179
-	}
37
+    /** @var IUserManager */
38
+    protected $userManager;
39
+
40
+    /** @var string[]  */
41
+    protected $userDisplayNames = [];
42
+
43
+    /** @var IGroupManager */
44
+    protected $groupManager;
45
+
46
+    /** @var string[] */
47
+    protected $groupDisplayNames = [];
48
+
49
+    /**
50
+     * @param IUserManager $userManager
51
+     * @param IGroupManager $groupManager
52
+     */
53
+    public function __construct(IUserManager $userManager, IGroupManager $groupManager) {
54
+        $this->userManager = $userManager;
55
+        $this->groupManager = $groupManager;
56
+    }
57
+
58
+    /**
59
+     * @param IEvent $event
60
+     * @param string $subject
61
+     * @param array $parameters
62
+     */
63
+    protected function setSubjects(IEvent $event, $subject, array $parameters) {
64
+        $placeholders = $replacements = [];
65
+        foreach ($parameters as $placeholder => $parameter) {
66
+            $placeholders[] = '{' . $placeholder . '}';
67
+            $replacements[] = $parameter['name'];
68
+        }
69
+
70
+        $event->setParsedSubject(str_replace($placeholders, $replacements, $subject))
71
+            ->setRichSubject($subject, $parameters);
72
+    }
73
+
74
+    /**
75
+     * @param array $eventData
76
+     * @return array
77
+     */
78
+    protected function generateObjectParameter($eventData) {
79
+        if (!is_array($eventData) || !isset($eventData['id']) || !isset($eventData['name'])) {
80
+            throw new \InvalidArgumentException();
81
+        }
82
+
83
+        return [
84
+            'type' => 'calendar-event',
85
+            'id' => $eventData['id'],
86
+            'name' => $eventData['name'],
87
+        ];
88
+    }
89
+
90
+    /**
91
+     * @param array $data
92
+     * @param IL10N $l
93
+     * @return array
94
+     */
95
+    protected function generateCalendarParameter($data, IL10N $l) {
96
+        if ($data['uri'] === CalDavBackend::PERSONAL_CALENDAR_URI &&
97
+            $data['name'] === CalDavBackend::PERSONAL_CALENDAR_NAME) {
98
+            return [
99
+                'type' => 'calendar',
100
+                'id' => $data['id'],
101
+                'name' => $l->t('Personal'),
102
+            ];
103
+        }
104
+
105
+        return [
106
+            'type' => 'calendar',
107
+            'id' => $data['id'],
108
+            'name' => $data['name'],
109
+        ];
110
+    }
111
+
112
+    /**
113
+     * @param int $id
114
+     * @param string $name
115
+     * @return array
116
+     */
117
+    protected function generateLegacyCalendarParameter($id, $name) {
118
+        return [
119
+            'type' => 'calendar',
120
+            'id' => $id,
121
+            'name' => $name,
122
+        ];
123
+    }
124
+
125
+    /**
126
+     * @param string $uid
127
+     * @return array
128
+     */
129
+    protected function generateUserParameter($uid) {
130
+        if (!isset($this->userDisplayNames[$uid])) {
131
+            $this->userDisplayNames[$uid] = $this->getUserDisplayName($uid);
132
+        }
133
+
134
+        return [
135
+            'type' => 'user',
136
+            'id' => $uid,
137
+            'name' => $this->userDisplayNames[$uid],
138
+        ];
139
+    }
140
+
141
+    /**
142
+     * @param string $uid
143
+     * @return string
144
+     */
145
+    protected function getUserDisplayName($uid) {
146
+        $user = $this->userManager->get($uid);
147
+        if ($user instanceof IUser) {
148
+            return $user->getDisplayName();
149
+        }
150
+        return $uid;
151
+    }
152
+
153
+    /**
154
+     * @param string $gid
155
+     * @return array
156
+     */
157
+    protected function generateGroupParameter($gid) {
158
+        if (!isset($this->groupDisplayNames[$gid])) {
159
+            $this->groupDisplayNames[$gid] = $this->getGroupDisplayName($gid);
160
+        }
161
+
162
+        return [
163
+            'type' => 'user-group',
164
+            'id' => $gid,
165
+            'name' => $this->groupDisplayNames[$gid],
166
+        ];
167
+    }
168
+
169
+    /**
170
+     * @param string $gid
171
+     * @return string
172
+     */
173
+    protected function getGroupDisplayName($gid) {
174
+        $group = $this->groupManager->get($gid);
175
+        if ($group instanceof IGroup) {
176
+            return $group->getDisplayName();
177
+        }
178
+        return $gid;
179
+    }
180 180
 }
Please login to merge, or discard this patch.
apps/dav/lib/CalDAV/Activity/Filter/Todo.php 1 patch
Indentation   +53 added lines, -53 removed lines patch added patch discarded remove patch
@@ -28,65 +28,65 @@
 block discarded – undo
28 28
 
29 29
 class Todo implements IFilter {
30 30
 
31
-	/** @var IL10N */
32
-	protected $l;
31
+    /** @var IL10N */
32
+    protected $l;
33 33
 
34
-	/** @var IURLGenerator */
35
-	protected $url;
34
+    /** @var IURLGenerator */
35
+    protected $url;
36 36
 
37
-	public function __construct(IL10N $l, IURLGenerator $url) {
38
-		$this->l = $l;
39
-		$this->url = $url;
40
-	}
37
+    public function __construct(IL10N $l, IURLGenerator $url) {
38
+        $this->l = $l;
39
+        $this->url = $url;
40
+    }
41 41
 
42
-	/**
43
-	 * @return string Lowercase a-z and underscore only identifier
44
-	 * @since 11.0.0
45
-	 */
46
-	public function getIdentifier() {
47
-		return 'calendar_todo';
48
-	}
42
+    /**
43
+     * @return string Lowercase a-z and underscore only identifier
44
+     * @since 11.0.0
45
+     */
46
+    public function getIdentifier() {
47
+        return 'calendar_todo';
48
+    }
49 49
 
50
-	/**
51
-	 * @return string A translated string
52
-	 * @since 11.0.0
53
-	 */
54
-	public function getName() {
55
-		return $this->l->t('Todos');
56
-	}
50
+    /**
51
+     * @return string A translated string
52
+     * @since 11.0.0
53
+     */
54
+    public function getName() {
55
+        return $this->l->t('Todos');
56
+    }
57 57
 
58
-	/**
59
-	 * @return int whether the filter should be rather on the top or bottom of
60
-	 * the admin section. The filters are arranged in ascending order of the
61
-	 * priority values. It is required to return a value between 0 and 100.
62
-	 * @since 11.0.0
63
-	 */
64
-	public function getPriority() {
65
-		return 40;
66
-	}
58
+    /**
59
+     * @return int whether the filter should be rather on the top or bottom of
60
+     * the admin section. The filters are arranged in ascending order of the
61
+     * priority values. It is required to return a value between 0 and 100.
62
+     * @since 11.0.0
63
+     */
64
+    public function getPriority() {
65
+        return 40;
66
+    }
67 67
 
68
-	/**
69
-	 * @return string Full URL to an icon, empty string when none is given
70
-	 * @since 11.0.0
71
-	 */
72
-	public function getIcon() {
73
-		return $this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/checkmark.svg'));
74
-	}
68
+    /**
69
+     * @return string Full URL to an icon, empty string when none is given
70
+     * @since 11.0.0
71
+     */
72
+    public function getIcon() {
73
+        return $this->url->getAbsoluteURL($this->url->imagePath('core', 'actions/checkmark.svg'));
74
+    }
75 75
 
76
-	/**
77
-	 * @param string[] $types
78
-	 * @return string[] An array of allowed apps from which activities should be displayed
79
-	 * @since 11.0.0
80
-	 */
81
-	public function filterTypes(array $types) {
82
-		return array_intersect(['calendar_todo'], $types);
83
-	}
76
+    /**
77
+     * @param string[] $types
78
+     * @return string[] An array of allowed apps from which activities should be displayed
79
+     * @since 11.0.0
80
+     */
81
+    public function filterTypes(array $types) {
82
+        return array_intersect(['calendar_todo'], $types);
83
+    }
84 84
 
85
-	/**
86
-	 * @return string[] An array of allowed apps from which activities should be displayed
87
-	 * @since 11.0.0
88
-	 */
89
-	public function allowedApps() {
90
-		return [];
91
-	}
85
+    /**
86
+     * @return string[] An array of allowed apps from which activities should be displayed
87
+     * @since 11.0.0
88
+     */
89
+    public function allowedApps() {
90
+        return [];
91
+    }
92 92
 }
Please login to merge, or discard this patch.
apps/dav/lib/CalDAV/Activity/Setting/Calendar.php 1 patch
Indentation   +59 added lines, -59 removed lines patch added patch discarded remove patch
@@ -27,72 +27,72 @@
 block discarded – undo
27 27
 
28 28
 class Calendar implements ISetting {
29 29
 
30
-	/** @var IL10N */
31
-	protected $l;
30
+    /** @var IL10N */
31
+    protected $l;
32 32
 
33
-	/**
34
-	 * @param IL10N $l
35
-	 */
36
-	public function __construct(IL10N $l) {
37
-		$this->l = $l;
38
-	}
33
+    /**
34
+     * @param IL10N $l
35
+     */
36
+    public function __construct(IL10N $l) {
37
+        $this->l = $l;
38
+    }
39 39
 
40
-	/**
41
-	 * @return string Lowercase a-z and underscore only identifier
42
-	 * @since 11.0.0
43
-	 */
44
-	public function getIdentifier() {
45
-		return 'calendar';
46
-	}
40
+    /**
41
+     * @return string Lowercase a-z and underscore only identifier
42
+     * @since 11.0.0
43
+     */
44
+    public function getIdentifier() {
45
+        return 'calendar';
46
+    }
47 47
 
48
-	/**
49
-	 * @return string A translated string
50
-	 * @since 11.0.0
51
-	 */
52
-	public function getName() {
53
-		return $this->l->t('A <strong>calendar</strong> was modified');
54
-	}
48
+    /**
49
+     * @return string A translated string
50
+     * @since 11.0.0
51
+     */
52
+    public function getName() {
53
+        return $this->l->t('A <strong>calendar</strong> was modified');
54
+    }
55 55
 
56
-	/**
57
-	 * @return int whether the filter should be rather on the top or bottom of
58
-	 * the admin section. The filters are arranged in ascending order of the
59
-	 * priority values. It is required to return a value between 0 and 100.
60
-	 * @since 11.0.0
61
-	 */
62
-	public function getPriority() {
63
-		return 50;
64
-	}
56
+    /**
57
+     * @return int whether the filter should be rather on the top or bottom of
58
+     * the admin section. The filters are arranged in ascending order of the
59
+     * priority values. It is required to return a value between 0 and 100.
60
+     * @since 11.0.0
61
+     */
62
+    public function getPriority() {
63
+        return 50;
64
+    }
65 65
 
66
-	/**
67
-	 * @return bool True when the option can be changed for the stream
68
-	 * @since 11.0.0
69
-	 */
70
-	public function canChangeStream() {
71
-		return true;
72
-	}
66
+    /**
67
+     * @return bool True when the option can be changed for the stream
68
+     * @since 11.0.0
69
+     */
70
+    public function canChangeStream() {
71
+        return true;
72
+    }
73 73
 
74
-	/**
75
-	 * @return bool True when the option can be changed for the stream
76
-	 * @since 11.0.0
77
-	 */
78
-	public function isDefaultEnabledStream() {
79
-		return true;
80
-	}
74
+    /**
75
+     * @return bool True when the option can be changed for the stream
76
+     * @since 11.0.0
77
+     */
78
+    public function isDefaultEnabledStream() {
79
+        return true;
80
+    }
81 81
 
82
-	/**
83
-	 * @return bool True when the option can be changed for the mail
84
-	 * @since 11.0.0
85
-	 */
86
-	public function canChangeMail() {
87
-		return true;
88
-	}
82
+    /**
83
+     * @return bool True when the option can be changed for the mail
84
+     * @since 11.0.0
85
+     */
86
+    public function canChangeMail() {
87
+        return true;
88
+    }
89 89
 
90
-	/**
91
-	 * @return bool True when the option can be changed for the stream
92
-	 * @since 11.0.0
93
-	 */
94
-	public function isDefaultEnabledMail() {
95
-		return false;
96
-	}
90
+    /**
91
+     * @return bool True when the option can be changed for the stream
92
+     * @since 11.0.0
93
+     */
94
+    public function isDefaultEnabledMail() {
95
+        return false;
96
+    }
97 97
 }
98 98
 
Please login to merge, or discard this patch.
apps/dav/lib/CalDAV/Activity/Setting/Event.php 1 patch
Indentation   +59 added lines, -59 removed lines patch added patch discarded remove patch
@@ -27,72 +27,72 @@
 block discarded – undo
27 27
 
28 28
 class Event implements ISetting {
29 29
 
30
-	/** @var IL10N */
31
-	protected $l;
30
+    /** @var IL10N */
31
+    protected $l;
32 32
 
33
-	/**
34
-	 * @param IL10N $l
35
-	 */
36
-	public function __construct(IL10N $l) {
37
-		$this->l = $l;
38
-	}
33
+    /**
34
+     * @param IL10N $l
35
+     */
36
+    public function __construct(IL10N $l) {
37
+        $this->l = $l;
38
+    }
39 39
 
40
-	/**
41
-	 * @return string Lowercase a-z and underscore only identifier
42
-	 * @since 11.0.0
43
-	 */
44
-	public function getIdentifier() {
45
-		return 'calendar_event';
46
-	}
40
+    /**
41
+     * @return string Lowercase a-z and underscore only identifier
42
+     * @since 11.0.0
43
+     */
44
+    public function getIdentifier() {
45
+        return 'calendar_event';
46
+    }
47 47
 
48
-	/**
49
-	 * @return string A translated string
50
-	 * @since 11.0.0
51
-	 */
52
-	public function getName() {
53
-		return $this->l->t('A calendar <strong>event</strong> was modified');
54
-	}
48
+    /**
49
+     * @return string A translated string
50
+     * @since 11.0.0
51
+     */
52
+    public function getName() {
53
+        return $this->l->t('A calendar <strong>event</strong> was modified');
54
+    }
55 55
 
56
-	/**
57
-	 * @return int whether the filter should be rather on the top or bottom of
58
-	 * the admin section. The filters are arranged in ascending order of the
59
-	 * priority values. It is required to return a value between 0 and 100.
60
-	 * @since 11.0.0
61
-	 */
62
-	public function getPriority() {
63
-		return 50;
64
-	}
56
+    /**
57
+     * @return int whether the filter should be rather on the top or bottom of
58
+     * the admin section. The filters are arranged in ascending order of the
59
+     * priority values. It is required to return a value between 0 and 100.
60
+     * @since 11.0.0
61
+     */
62
+    public function getPriority() {
63
+        return 50;
64
+    }
65 65
 
66
-	/**
67
-	 * @return bool True when the option can be changed for the stream
68
-	 * @since 11.0.0
69
-	 */
70
-	public function canChangeStream() {
71
-		return true;
72
-	}
66
+    /**
67
+     * @return bool True when the option can be changed for the stream
68
+     * @since 11.0.0
69
+     */
70
+    public function canChangeStream() {
71
+        return true;
72
+    }
73 73
 
74
-	/**
75
-	 * @return bool True when the option can be changed for the stream
76
-	 * @since 11.0.0
77
-	 */
78
-	public function isDefaultEnabledStream() {
79
-		return true;
80
-	}
74
+    /**
75
+     * @return bool True when the option can be changed for the stream
76
+     * @since 11.0.0
77
+     */
78
+    public function isDefaultEnabledStream() {
79
+        return true;
80
+    }
81 81
 
82
-	/**
83
-	 * @return bool True when the option can be changed for the mail
84
-	 * @since 11.0.0
85
-	 */
86
-	public function canChangeMail() {
87
-		return true;
88
-	}
82
+    /**
83
+     * @return bool True when the option can be changed for the mail
84
+     * @since 11.0.0
85
+     */
86
+    public function canChangeMail() {
87
+        return true;
88
+    }
89 89
 
90
-	/**
91
-	 * @return bool True when the option can be changed for the stream
92
-	 * @since 11.0.0
93
-	 */
94
-	public function isDefaultEnabledMail() {
95
-		return false;
96
-	}
90
+    /**
91
+     * @return bool True when the option can be changed for the stream
92
+     * @since 11.0.0
93
+     */
94
+    public function isDefaultEnabledMail() {
95
+        return false;
96
+    }
97 97
 }
98 98
 
Please login to merge, or discard this patch.
apps/dav/lib/CalDAV/Activity/Setting/Todo.php 1 patch
Indentation   +59 added lines, -59 removed lines patch added patch discarded remove patch
@@ -27,72 +27,72 @@
 block discarded – undo
27 27
 
28 28
 class Todo implements ISetting {
29 29
 
30
-	/** @var IL10N */
31
-	protected $l;
30
+    /** @var IL10N */
31
+    protected $l;
32 32
 
33
-	/**
34
-	 * @param IL10N $l
35
-	 */
36
-	public function __construct(IL10N $l) {
37
-		$this->l = $l;
38
-	}
33
+    /**
34
+     * @param IL10N $l
35
+     */
36
+    public function __construct(IL10N $l) {
37
+        $this->l = $l;
38
+    }
39 39
 
40
-	/**
41
-	 * @return string Lowercase a-z and underscore only identifier
42
-	 * @since 11.0.0
43
-	 */
44
-	public function getIdentifier() {
45
-		return 'calendar_todo';
46
-	}
40
+    /**
41
+     * @return string Lowercase a-z and underscore only identifier
42
+     * @since 11.0.0
43
+     */
44
+    public function getIdentifier() {
45
+        return 'calendar_todo';
46
+    }
47 47
 
48
-	/**
49
-	 * @return string A translated string
50
-	 * @since 11.0.0
51
-	 */
52
-	public function getName() {
53
-		return $this->l->t('A calendar <strong>todo</strong> was modified');
54
-	}
48
+    /**
49
+     * @return string A translated string
50
+     * @since 11.0.0
51
+     */
52
+    public function getName() {
53
+        return $this->l->t('A calendar <strong>todo</strong> was modified');
54
+    }
55 55
 
56
-	/**
57
-	 * @return int whether the filter should be rather on the top or bottom of
58
-	 * the admin section. The filters are arranged in ascending order of the
59
-	 * priority values. It is required to return a value between 0 and 100.
60
-	 * @since 11.0.0
61
-	 */
62
-	public function getPriority() {
63
-		return 50;
64
-	}
56
+    /**
57
+     * @return int whether the filter should be rather on the top or bottom of
58
+     * the admin section. The filters are arranged in ascending order of the
59
+     * priority values. It is required to return a value between 0 and 100.
60
+     * @since 11.0.0
61
+     */
62
+    public function getPriority() {
63
+        return 50;
64
+    }
65 65
 
66
-	/**
67
-	 * @return bool True when the option can be changed for the stream
68
-	 * @since 11.0.0
69
-	 */
70
-	public function canChangeStream() {
71
-		return true;
72
-	}
66
+    /**
67
+     * @return bool True when the option can be changed for the stream
68
+     * @since 11.0.0
69
+     */
70
+    public function canChangeStream() {
71
+        return true;
72
+    }
73 73
 
74
-	/**
75
-	 * @return bool True when the option can be changed for the stream
76
-	 * @since 11.0.0
77
-	 */
78
-	public function isDefaultEnabledStream() {
79
-		return true;
80
-	}
74
+    /**
75
+     * @return bool True when the option can be changed for the stream
76
+     * @since 11.0.0
77
+     */
78
+    public function isDefaultEnabledStream() {
79
+        return true;
80
+    }
81 81
 
82
-	/**
83
-	 * @return bool True when the option can be changed for the mail
84
-	 * @since 11.0.0
85
-	 */
86
-	public function canChangeMail() {
87
-		return true;
88
-	}
82
+    /**
83
+     * @return bool True when the option can be changed for the mail
84
+     * @since 11.0.0
85
+     */
86
+    public function canChangeMail() {
87
+        return true;
88
+    }
89 89
 
90
-	/**
91
-	 * @return bool True when the option can be changed for the stream
92
-	 * @since 11.0.0
93
-	 */
94
-	public function isDefaultEnabledMail() {
95
-		return false;
96
-	}
90
+    /**
91
+     * @return bool True when the option can be changed for the stream
92
+     * @since 11.0.0
93
+     */
94
+    public function isDefaultEnabledMail() {
95
+        return false;
96
+    }
97 97
 }
98 98
 
Please login to merge, or discard this patch.
apps/dav/lib/CalDAV/Publishing/PublishPlugin.php 2 patches
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -89,7 +89,7 @@  discard block
 block discarded – undo
89 89
 	 *
90 90
 	 * @return string
91 91
 	 */
92
-	public function getPluginName()	{
92
+	public function getPluginName() {
93 93
 		return 'oc-calendar-publishing';
94 94
 	}
95 95
 
@@ -107,12 +107,12 @@  discard block
 block discarded – undo
107 107
 		$this->server = $server;
108 108
 
109 109
 		$this->server->on('method:POST', [$this, 'httpPost']);
110
-		$this->server->on('propFind',    [$this, 'propFind']);
110
+		$this->server->on('propFind', [$this, 'propFind']);
111 111
 	}
112 112
 
113 113
 	public function propFind(PropFind $propFind, INode $node) {
114 114
 		if ($node instanceof Calendar) {
115
-			$propFind->handle('{'.self::NS_CALENDARSERVER.'}publish-url', function () use ($node) {
115
+			$propFind->handle('{'.self::NS_CALENDARSERVER.'}publish-url', function() use ($node) {
116 116
 				if ($node->getPublishStatus()) {
117 117
 					// We return the publish-url only if the calendar is published.
118 118
 					$token = $node->getPublishStatus();
Please login to merge, or discard this patch.
Indentation   +190 added lines, -190 removed lines patch added patch discarded remove patch
@@ -38,197 +38,197 @@
 block discarded – undo
38 38
 use Sabre\HTTP\ResponseInterface;
39 39
 
40 40
 class PublishPlugin extends ServerPlugin {
41
-	const NS_CALENDARSERVER = 'http://calendarserver.org/ns/';
42
-
43
-	/**
44
-	 * Reference to SabreDAV server object.
45
-	 *
46
-	 * @var \Sabre\DAV\Server
47
-	 */
48
-	protected $server;
49
-
50
-	/**
51
-	 * Config instance to get instance secret.
52
-	 *
53
-	 * @var IConfig
54
-	 */
55
-	protected $config;
56
-
57
-	/**
58
-	 * URL Generator for absolute URLs.
59
-	 *
60
-	 * @var IURLGenerator
61
-	 */
62
-	protected $urlGenerator;
63
-
64
-	/**
65
-	 * PublishPlugin constructor.
66
-	 *
67
-	 * @param IConfig $config
68
-	 * @param IURLGenerator $urlGenerator
69
-	 */
70
-	public function __construct(IConfig $config, IURLGenerator $urlGenerator) {
71
-		$this->config = $config;
72
-		$this->urlGenerator = $urlGenerator;
73
-	}
74
-
75
-	/**
76
-	 * This method should return a list of server-features.
77
-	 *
78
-	 * This is for example 'versioning' and is added to the DAV: header
79
-	 * in an OPTIONS response.
80
-	 *
81
-	 * @return string[]
82
-	 */
83
-	public function getFeatures() {
84
-		// May have to be changed to be detected
85
-		return ['oc-calendar-publishing', 'calendarserver-sharing'];
86
-	}
87
-
88
-	/**
89
-	 * Returns a plugin name.
90
-	 *
91
-	 * Using this name other plugins will be able to access other plugins
92
-	 * using Sabre\DAV\Server::getPlugin
93
-	 *
94
-	 * @return string
95
-	 */
96
-	public function getPluginName()	{
97
-		return 'oc-calendar-publishing';
98
-	}
99
-
100
-	/**
101
-	 * This initializes the plugin.
102
-	 *
103
-	 * This function is called by Sabre\DAV\Server, after
104
-	 * addPlugin is called.
105
-	 *
106
-	 * This method should set up the required event subscriptions.
107
-	 *
108
-	 * @param Server $server
109
-	 */
110
-	public function initialize(Server $server) {
111
-		$this->server = $server;
112
-
113
-		$this->server->on('method:POST', [$this, 'httpPost']);
114
-		$this->server->on('propFind',    [$this, 'propFind']);
115
-	}
116
-
117
-	public function propFind(PropFind $propFind, INode $node) {
118
-		if ($node instanceof Calendar) {
119
-			$propFind->handle('{'.self::NS_CALENDARSERVER.'}publish-url', function () use ($node) {
120
-				if ($node->getPublishStatus()) {
121
-					// We return the publish-url only if the calendar is published.
122
-					$token = $node->getPublishStatus();
123
-					$publishUrl = $this->urlGenerator->getAbsoluteURL($this->server->getBaseUri().'public-calendars/').$token;
124
-
125
-					return new Publisher($publishUrl, true);
126
-				}
127
-			});
128
-
129
-			$propFind->handle('{'.self::NS_CALENDARSERVER.'}allowed-sharing-modes', function() use ($node) {
130
-				$canShare = (!$node->isSubscription() && $node->canWrite());
131
-				$canPublish = (!$node->isSubscription() && $node->canWrite());
132
-
133
-				return new AllowedSharingModes($canShare, $canPublish);
134
-			});
135
-		}
136
-	}
137
-
138
-	/**
139
-	 * We intercept this to handle POST requests on calendars.
140
-	 *
141
-	 * @param RequestInterface $request
142
-	 * @param ResponseInterface $response
143
-	 *
144
-	 * @return void|bool
145
-	 */
146
-	public function httpPost(RequestInterface $request, ResponseInterface $response) {
147
-		$path = $request->getPath();
148
-
149
-		// Only handling xml
150
-		$contentType = $request->getHeader('Content-Type');
151
-		if (strpos($contentType, 'application/xml') === false && strpos($contentType, 'text/xml') === false) {
152
-			return;
153
-		}
154
-
155
-		// Making sure the node exists
156
-		try {
157
-			$node = $this->server->tree->getNodeForPath($path);
158
-		} catch (NotFound $e) {
159
-			return;
160
-		}
161
-
162
-		$requestBody = $request->getBodyAsString();
163
-
164
-		// If this request handler could not deal with this POST request, it
165
-		// will return 'null' and other plugins get a chance to handle the
166
-		// request.
167
-		//
168
-		// However, we already requested the full body. This is a problem,
169
-		// because a body can only be read once. This is why we preemptively
170
-		// re-populated the request body with the existing data.
171
-		$request->setBody($requestBody);
172
-
173
-		$this->server->xml->parse($requestBody, $request->getUrl(), $documentType);
174
-
175
-		switch ($documentType) {
176
-
177
-			case '{'.self::NS_CALENDARSERVER.'}publish-calendar' :
178
-
179
-			// We can only deal with IShareableCalendar objects
180
-			if (!$node instanceof Calendar) {
181
-				return;
182
-			}
183
-			$this->server->transactionType = 'post-publish-calendar';
184
-
185
-			// Getting ACL info
186
-			$acl = $this->server->getPlugin('acl');
187
-
188
-			// If there's no ACL support, we allow everything
189
-			if ($acl) {
190
-				$acl->checkPrivileges($path, '{DAV:}write');
191
-			}
192
-
193
-			$node->setPublishStatus(true);
194
-
195
-			// iCloud sends back the 202, so we will too.
196
-			$response->setStatus(202);
197
-
198
-			// Adding this because sending a response body may cause issues,
199
-			// and I wanted some type of indicator the response was handled.
200
-			$response->setHeader('X-Sabre-Status', 'everything-went-well');
201
-
202
-			// Breaking the event chain
203
-			return false;
204
-
205
-			case '{'.self::NS_CALENDARSERVER.'}unpublish-calendar' :
206
-
207
-			// We can only deal with IShareableCalendar objects
208
-			if (!$node instanceof Calendar) {
209
-				return;
210
-			}
211
-			$this->server->transactionType = 'post-unpublish-calendar';
212
-
213
-			// Getting ACL info
214
-			$acl = $this->server->getPlugin('acl');
215
-
216
-			// If there's no ACL support, we allow everything
217
-			if ($acl) {
218
-				$acl->checkPrivileges($path, '{DAV:}write');
219
-			}
220
-
221
-			$node->setPublishStatus(false);
222
-
223
-			$response->setStatus(200);
41
+    const NS_CALENDARSERVER = 'http://calendarserver.org/ns/';
42
+
43
+    /**
44
+     * Reference to SabreDAV server object.
45
+     *
46
+     * @var \Sabre\DAV\Server
47
+     */
48
+    protected $server;
49
+
50
+    /**
51
+     * Config instance to get instance secret.
52
+     *
53
+     * @var IConfig
54
+     */
55
+    protected $config;
56
+
57
+    /**
58
+     * URL Generator for absolute URLs.
59
+     *
60
+     * @var IURLGenerator
61
+     */
62
+    protected $urlGenerator;
63
+
64
+    /**
65
+     * PublishPlugin constructor.
66
+     *
67
+     * @param IConfig $config
68
+     * @param IURLGenerator $urlGenerator
69
+     */
70
+    public function __construct(IConfig $config, IURLGenerator $urlGenerator) {
71
+        $this->config = $config;
72
+        $this->urlGenerator = $urlGenerator;
73
+    }
74
+
75
+    /**
76
+     * This method should return a list of server-features.
77
+     *
78
+     * This is for example 'versioning' and is added to the DAV: header
79
+     * in an OPTIONS response.
80
+     *
81
+     * @return string[]
82
+     */
83
+    public function getFeatures() {
84
+        // May have to be changed to be detected
85
+        return ['oc-calendar-publishing', 'calendarserver-sharing'];
86
+    }
87
+
88
+    /**
89
+     * Returns a plugin name.
90
+     *
91
+     * Using this name other plugins will be able to access other plugins
92
+     * using Sabre\DAV\Server::getPlugin
93
+     *
94
+     * @return string
95
+     */
96
+    public function getPluginName()	{
97
+        return 'oc-calendar-publishing';
98
+    }
99
+
100
+    /**
101
+     * This initializes the plugin.
102
+     *
103
+     * This function is called by Sabre\DAV\Server, after
104
+     * addPlugin is called.
105
+     *
106
+     * This method should set up the required event subscriptions.
107
+     *
108
+     * @param Server $server
109
+     */
110
+    public function initialize(Server $server) {
111
+        $this->server = $server;
112
+
113
+        $this->server->on('method:POST', [$this, 'httpPost']);
114
+        $this->server->on('propFind',    [$this, 'propFind']);
115
+    }
116
+
117
+    public function propFind(PropFind $propFind, INode $node) {
118
+        if ($node instanceof Calendar) {
119
+            $propFind->handle('{'.self::NS_CALENDARSERVER.'}publish-url', function () use ($node) {
120
+                if ($node->getPublishStatus()) {
121
+                    // We return the publish-url only if the calendar is published.
122
+                    $token = $node->getPublishStatus();
123
+                    $publishUrl = $this->urlGenerator->getAbsoluteURL($this->server->getBaseUri().'public-calendars/').$token;
124
+
125
+                    return new Publisher($publishUrl, true);
126
+                }
127
+            });
128
+
129
+            $propFind->handle('{'.self::NS_CALENDARSERVER.'}allowed-sharing-modes', function() use ($node) {
130
+                $canShare = (!$node->isSubscription() && $node->canWrite());
131
+                $canPublish = (!$node->isSubscription() && $node->canWrite());
132
+
133
+                return new AllowedSharingModes($canShare, $canPublish);
134
+            });
135
+        }
136
+    }
137
+
138
+    /**
139
+     * We intercept this to handle POST requests on calendars.
140
+     *
141
+     * @param RequestInterface $request
142
+     * @param ResponseInterface $response
143
+     *
144
+     * @return void|bool
145
+     */
146
+    public function httpPost(RequestInterface $request, ResponseInterface $response) {
147
+        $path = $request->getPath();
148
+
149
+        // Only handling xml
150
+        $contentType = $request->getHeader('Content-Type');
151
+        if (strpos($contentType, 'application/xml') === false && strpos($contentType, 'text/xml') === false) {
152
+            return;
153
+        }
154
+
155
+        // Making sure the node exists
156
+        try {
157
+            $node = $this->server->tree->getNodeForPath($path);
158
+        } catch (NotFound $e) {
159
+            return;
160
+        }
161
+
162
+        $requestBody = $request->getBodyAsString();
163
+
164
+        // If this request handler could not deal with this POST request, it
165
+        // will return 'null' and other plugins get a chance to handle the
166
+        // request.
167
+        //
168
+        // However, we already requested the full body. This is a problem,
169
+        // because a body can only be read once. This is why we preemptively
170
+        // re-populated the request body with the existing data.
171
+        $request->setBody($requestBody);
172
+
173
+        $this->server->xml->parse($requestBody, $request->getUrl(), $documentType);
174
+
175
+        switch ($documentType) {
176
+
177
+            case '{'.self::NS_CALENDARSERVER.'}publish-calendar' :
178
+
179
+            // We can only deal with IShareableCalendar objects
180
+            if (!$node instanceof Calendar) {
181
+                return;
182
+            }
183
+            $this->server->transactionType = 'post-publish-calendar';
184
+
185
+            // Getting ACL info
186
+            $acl = $this->server->getPlugin('acl');
187
+
188
+            // If there's no ACL support, we allow everything
189
+            if ($acl) {
190
+                $acl->checkPrivileges($path, '{DAV:}write');
191
+            }
192
+
193
+            $node->setPublishStatus(true);
194
+
195
+            // iCloud sends back the 202, so we will too.
196
+            $response->setStatus(202);
197
+
198
+            // Adding this because sending a response body may cause issues,
199
+            // and I wanted some type of indicator the response was handled.
200
+            $response->setHeader('X-Sabre-Status', 'everything-went-well');
201
+
202
+            // Breaking the event chain
203
+            return false;
204
+
205
+            case '{'.self::NS_CALENDARSERVER.'}unpublish-calendar' :
206
+
207
+            // We can only deal with IShareableCalendar objects
208
+            if (!$node instanceof Calendar) {
209
+                return;
210
+            }
211
+            $this->server->transactionType = 'post-unpublish-calendar';
212
+
213
+            // Getting ACL info
214
+            $acl = $this->server->getPlugin('acl');
215
+
216
+            // If there's no ACL support, we allow everything
217
+            if ($acl) {
218
+                $acl->checkPrivileges($path, '{DAV:}write');
219
+            }
220
+
221
+            $node->setPublishStatus(false);
222
+
223
+            $response->setStatus(200);
224 224
 
225
-			// Adding this because sending a response body may cause issues,
226
-			// and I wanted some type of indicator the response was handled.
227
-			$response->setHeader('X-Sabre-Status', 'everything-went-well');
225
+            // Adding this because sending a response body may cause issues,
226
+            // and I wanted some type of indicator the response was handled.
227
+            $response->setHeader('X-Sabre-Status', 'everything-went-well');
228 228
 
229
-			// Breaking the event chain
230
-			return false;
229
+            // Breaking the event chain
230
+            return false;
231 231
 
232
-		}
233
-	}
232
+        }
233
+    }
234 234
 }
Please login to merge, or discard this patch.
apps/dav/lib/CalDAV/Publishing/Xml/Publisher.php 1 patch
Indentation   +50 added lines, -50 removed lines patch added patch discarded remove patch
@@ -26,58 +26,58 @@
 block discarded – undo
26 26
 
27 27
 class Publisher implements XmlSerializable {
28 28
 
29
-	/**
30
-	 * @var string $publishUrl
31
-	 */
32
-	protected $publishUrl;
29
+    /**
30
+     * @var string $publishUrl
31
+     */
32
+    protected $publishUrl;
33 33
 
34
-	/**
35
-	 * @var boolean $isPublished
36
-	 */
37
-	protected $isPublished;
34
+    /**
35
+     * @var boolean $isPublished
36
+     */
37
+    protected $isPublished;
38 38
 
39
-	/**
40
-	 * @param string $publishUrl
41
-	 * @param boolean $isPublished
42
-	 */
43
-	function __construct($publishUrl, $isPublished) {
44
-		$this->publishUrl = $publishUrl;
45
-		$this->isPublished = $isPublished;
46
-	}
39
+    /**
40
+     * @param string $publishUrl
41
+     * @param boolean $isPublished
42
+     */
43
+    function __construct($publishUrl, $isPublished) {
44
+        $this->publishUrl = $publishUrl;
45
+        $this->isPublished = $isPublished;
46
+    }
47 47
 
48
-	/**
49
-	 * @return string
50
-	 */
51
-	function getValue() {
52
-		return $this->publishUrl;
53
-	}
48
+    /**
49
+     * @return string
50
+     */
51
+    function getValue() {
52
+        return $this->publishUrl;
53
+    }
54 54
 
55
-	/**
56
-	 * The xmlSerialize metod is called during xml writing.
57
-	 *
58
-	 * Use the $writer argument to write its own xml serialization.
59
-	 *
60
-	 * An important note: do _not_ create a parent element. Any element
61
-	 * implementing XmlSerializble should only ever write what's considered
62
-	 * its 'inner xml'.
63
-	 *
64
-	 * The parent of the current element is responsible for writing a
65
-	 * containing element.
66
-	 *
67
-	 * This allows serializers to be re-used for different element names.
68
-	 *
69
-	 * If you are opening new elements, you must also close them again.
70
-	 *
71
-	 * @param Writer $writer
72
-	 * @return void
73
-	 */
74
-	function xmlSerialize(Writer $writer) {
75
-		if (!$this->isPublished) {
76
-			// for pre-publish-url
77
-			$writer->write($this->publishUrl);
78
-		} else {
79
-			// for publish-url
80
-			$writer->writeElement('{DAV:}href', $this->publishUrl);
81
-		}
82
-	}
55
+    /**
56
+     * The xmlSerialize metod is called during xml writing.
57
+     *
58
+     * Use the $writer argument to write its own xml serialization.
59
+     *
60
+     * An important note: do _not_ create a parent element. Any element
61
+     * implementing XmlSerializble should only ever write what's considered
62
+     * its 'inner xml'.
63
+     *
64
+     * The parent of the current element is responsible for writing a
65
+     * containing element.
66
+     *
67
+     * This allows serializers to be re-used for different element names.
68
+     *
69
+     * If you are opening new elements, you must also close them again.
70
+     *
71
+     * @param Writer $writer
72
+     * @return void
73
+     */
74
+    function xmlSerialize(Writer $writer) {
75
+        if (!$this->isPublished) {
76
+            // for pre-publish-url
77
+            $writer->write($this->publishUrl);
78
+        } else {
79
+            // for publish-url
80
+            $writer->writeElement('{DAV:}href', $this->publishUrl);
81
+        }
82
+    }
83 83
 }
Please login to merge, or discard this patch.
apps/dav/lib/CardDAV/AddressBookImpl.php 2 patches
Spacing   +6 added lines, -6 removed lines patch added patch discarded remove patch
@@ -111,7 +111,7 @@  discard block
 block discarded – undo
111 111
 		$update = false;
112 112
 		if (!isset($properties['URI'])) { // create a new contact
113 113
 			$uid = $this->createUid();
114
-			$uri = $uid . '.vcf';
114
+			$uri = $uid.'.vcf';
115 115
 			$vCard = $this->createEmptyVCard($uid);
116 116
 		} else { // update existing contact
117 117
 			$uri = $properties['URI'];
@@ -142,7 +142,7 @@  discard block
 block discarded – undo
142 142
 		$permissions = $this->addressBook->getACL();
143 143
 		$result = 0;
144 144
 		foreach ($permissions as $permission) {
145
-			switch($permission['privilege']) {
145
+			switch ($permission['privilege']) {
146 146
 				case '{DAV:}read':
147 147
 					$result |= Constants::PERMISSION_READ;
148 148
 					break;
@@ -187,7 +187,7 @@  discard block
 block discarded – undo
187 187
 	protected function createUid() {
188 188
 		do {
189 189
 			$uid = $this->getUid();
190
-			$contact = $this->backend->getContact($this->getKey(), $uid . '.vcf');
190
+			$contact = $this->backend->getContact($this->getKey(), $uid.'.vcf');
191 191
 		} while (!empty($contact));
192 192
 
193 193
 		return $uid;
@@ -227,15 +227,15 @@  discard block
 block discarded – undo
227 227
 		foreach ($vCard->children() as $property) {
228 228
 			if ($property->name === 'PHOTO' && $property->getValueType() === 'BINARY') {
229 229
 				$url = $this->urlGenerator->getAbsoluteURL(
230
-					$this->urlGenerator->linkTo('', 'remote.php') . '/dav/');
230
+					$this->urlGenerator->linkTo('', 'remote.php').'/dav/');
231 231
 				$url .= implode('/', [
232 232
 					'addressbooks',
233 233
 					substr($this->addressBookInfo['principaluri'], 11), //cut off 'principals/'
234 234
 					$this->addressBookInfo['uri'],
235 235
 					$uri
236
-				]) . '?photo';
236
+				]).'?photo';
237 237
 
238
-				$result['PHOTO'] = 'VALUE=uri:' . $url;
238
+				$result['PHOTO'] = 'VALUE=uri:'.$url;
239 239
 
240 240
 			} else if ($property->name === 'X-SOCIALPROFILE') {
241 241
 				$type = $this->getTypeFromProperty($property);
Please login to merge, or discard this patch.
Indentation   +283 added lines, -283 removed lines patch added patch discarded remove patch
@@ -35,287 +35,287 @@
 block discarded – undo
35 35
 
36 36
 class AddressBookImpl implements IAddressBook {
37 37
 
38
-	/** @var CardDavBackend */
39
-	private $backend;
40
-
41
-	/** @var array */
42
-	private $addressBookInfo;
43
-
44
-	/** @var AddressBook */
45
-	private $addressBook;
46
-
47
-	/** @var IURLGenerator */
48
-	private $urlGenerator;
49
-
50
-	/**
51
-	 * AddressBookImpl constructor.
52
-	 *
53
-	 * @param AddressBook $addressBook
54
-	 * @param array $addressBookInfo
55
-	 * @param CardDavBackend $backend
56
-	 * @param IUrlGenerator $urlGenerator
57
-	 */
58
-	public function __construct(
59
-			AddressBook $addressBook,
60
-			array $addressBookInfo,
61
-			CardDavBackend $backend,
62
-			IURLGenerator $urlGenerator) {
63
-
64
-		$this->addressBook = $addressBook;
65
-		$this->addressBookInfo = $addressBookInfo;
66
-		$this->backend = $backend;
67
-		$this->urlGenerator = $urlGenerator;
68
-	}
69
-
70
-	/**
71
-	 * @return string defining the technical unique key
72
-	 * @since 5.0.0
73
-	 */
74
-	public function getKey() {
75
-		return $this->addressBookInfo['id'];
76
-	}
77
-
78
-	/**
79
-	 * @return string defining the unique uri
80
-	 * @since 16.0.0
81
-	 * @return string
82
-	 */
83
-	public function getUri(): string {
84
-		return $this->addressBookInfo['uri'];
85
-	}
86
-
87
-	/**
88
-	 * In comparison to getKey() this function returns a human readable (maybe translated) name
89
-	 *
90
-	 * @return mixed
91
-	 * @since 5.0.0
92
-	 */
93
-	public function getDisplayName() {
94
-		return $this->addressBookInfo['{DAV:}displayname'];
95
-	}
96
-
97
-	/**
98
-	 * @param string $pattern which should match within the $searchProperties
99
-	 * @param array $searchProperties defines the properties within the query pattern should match
100
-	 * @param array $options Options to define the output format and search behavior
101
-	 * 	- 'types' boolean (since 15.0.0) If set to true, fields that come with a TYPE property will be an array
102
-	 *    example: ['id' => 5, 'FN' => 'Thomas Tanghus', 'EMAIL' => ['type => 'HOME', 'value' => '[email protected]']]
103
-	 * 	- 'escape_like_param' - If set to false wildcards _ and % are not escaped
104
-	 * @return array an array of contacts which are arrays of key-value-pairs
105
-	 *  example result:
106
-	 *  [
107
-	 *		['id' => 0, 'FN' => 'Thomas Müller', 'EMAIL' => '[email protected]', 'GEO' => '37.386013;-122.082932'],
108
-	 *		['id' => 5, 'FN' => 'Thomas Tanghus', 'EMAIL' => ['[email protected]', '[email protected]']]
109
-	 *	]
110
-	 * @since 5.0.0
111
-	 */
112
-	public function search($pattern, $searchProperties, $options) {
113
-		$results = $this->backend->search($this->getKey(), $pattern, $searchProperties, $options);
114
-
115
-		$withTypes = \array_key_exists('types', $options) && $options['types'] === true;
116
-
117
-		$vCards = [];
118
-		foreach ($results as $result) {
119
-			$vCards[] = $this->vCard2Array($result['uri'], $this->readCard($result['carddata']), $withTypes);
120
-		}
121
-
122
-		return $vCards;
123
-	}
124
-
125
-	/**
126
-	 * @param array $properties this array if key-value-pairs defines a contact
127
-	 * @return array an array representing the contact just created or updated
128
-	 * @since 5.0.0
129
-	 */
130
-	public function createOrUpdate($properties) {
131
-		$update = false;
132
-		if (!isset($properties['URI'])) { // create a new contact
133
-			$uid = $this->createUid();
134
-			$uri = $uid . '.vcf';
135
-			$vCard = $this->createEmptyVCard($uid);
136
-		} else { // update existing contact
137
-			$uri = $properties['URI'];
138
-			$vCardData = $this->backend->getCard($this->getKey(), $uri);
139
-			$vCard = $this->readCard($vCardData['carddata']);
140
-			$update = true;
141
-		}
142
-
143
-		foreach ($properties as $key => $value) {
144
-			$vCard->$key = $vCard->createProperty($key, $value);
145
-		}
146
-
147
-		if ($update) {
148
-			$this->backend->updateCard($this->getKey(), $uri, $vCard->serialize());
149
-		} else {
150
-			$this->backend->createCard($this->getKey(), $uri, $vCard->serialize());
151
-		}
152
-
153
-		return $this->vCard2Array($uri, $vCard);
154
-
155
-	}
156
-
157
-	/**
158
-	 * @return mixed
159
-	 * @since 5.0.0
160
-	 */
161
-	public function getPermissions() {
162
-		$permissions = $this->addressBook->getACL();
163
-		$result = 0;
164
-		foreach ($permissions as $permission) {
165
-			switch($permission['privilege']) {
166
-				case '{DAV:}read':
167
-					$result |= Constants::PERMISSION_READ;
168
-					break;
169
-				case '{DAV:}write':
170
-					$result |= Constants::PERMISSION_CREATE;
171
-					$result |= Constants::PERMISSION_UPDATE;
172
-					break;
173
-				case '{DAV:}all':
174
-					$result |= Constants::PERMISSION_ALL;
175
-					break;
176
-			}
177
-		}
178
-
179
-		return $result;
180
-	}
181
-
182
-	/**
183
-	 * @param object $id the unique identifier to a contact
184
-	 * @return bool successful or not
185
-	 * @since 5.0.0
186
-	 */
187
-	public function delete($id) {
188
-		$uri = $this->backend->getCardUri($id);
189
-		return $this->backend->deleteCard($this->addressBookInfo['id'], $uri);
190
-	}
191
-
192
-	/**
193
-	 * read vCard data into a vCard object
194
-	 *
195
-	 * @param string $cardData
196
-	 * @return VCard
197
-	 */
198
-	protected function readCard($cardData) {
199
-		return  Reader::read($cardData);
200
-	}
201
-
202
-	/**
203
-	 * create UID for contact
204
-	 *
205
-	 * @return string
206
-	 */
207
-	protected function createUid() {
208
-		do {
209
-			$uid = $this->getUid();
210
-			$contact = $this->backend->getContact($this->getKey(), $uid . '.vcf');
211
-		} while (!empty($contact));
212
-
213
-		return $uid;
214
-	}
215
-
216
-	/**
217
-	 * getUid is only there for testing, use createUid instead
218
-	 */
219
-	protected function getUid() {
220
-		return UUIDUtil::getUUID();
221
-	}
222
-
223
-	/**
224
-	 * create empty vcard
225
-	 *
226
-	 * @param string $uid
227
-	 * @return VCard
228
-	 */
229
-	protected function createEmptyVCard($uid) {
230
-		$vCard = new VCard();
231
-		$vCard->UID = $uid;
232
-		return $vCard;
233
-	}
234
-
235
-	/**
236
-	 * create array with all vCard properties
237
-	 *
238
-	 * @param string $uri
239
-	 * @param VCard $vCard
240
-	 * @return array
241
-	 */
242
-	protected function vCard2Array($uri, VCard $vCard, $withTypes = false) {
243
-		$result = [
244
-			'URI' => $uri,
245
-		];
246
-
247
-		foreach ($vCard->children() as $property) {
248
-			if ($property->name === 'PHOTO' && $property->getValueType() === 'BINARY') {
249
-				$url = $this->urlGenerator->getAbsoluteURL(
250
-					$this->urlGenerator->linkTo('', 'remote.php') . '/dav/');
251
-				$url .= implode('/', [
252
-					'addressbooks',
253
-					substr($this->addressBookInfo['principaluri'], 11), //cut off 'principals/'
254
-					$this->addressBookInfo['uri'],
255
-					$uri
256
-				]) . '?photo';
257
-
258
-				$result['PHOTO'] = 'VALUE=uri:' . $url;
259
-
260
-			} else if ($property->name === 'X-SOCIALPROFILE') {
261
-				$type = $this->getTypeFromProperty($property);
262
-
263
-				// Type is the social network, when it's empty we don't need this.
264
-				if ($type !== null) {
265
-					if (!isset($result[$property->name])) {
266
-						$result[$property->name] = [];
267
-					}
268
-					$result[$property->name][$type] = $property->getValue();
269
-				}
270
-
271
-			// The following properties can be set multiple times
272
-			} else if (in_array($property->name, ['CLOUD', 'EMAIL', 'IMPP', 'TEL', 'URL', 'X-ADDRESSBOOKSERVER-MEMBER'])) {
273
-				if (!isset($result[$property->name])) {
274
-					$result[$property->name] = [];
275
-				}
276
-
277
-				$type = $this->getTypeFromProperty($property);
278
-				if ($withTypes) {
279
-					$result[$property->name][] = [
280
-						'type' => $type,
281
-						'value' => $property->getValue()
282
-						];
283
-				} else {
284
-					$result[$property->name][] = $property->getValue();
285
-				}
286
-
287
-
288
-			} else {
289
-				$result[$property->name] = $property->getValue();
290
-			}
291
-		}
292
-
293
-		if (
294
-			$this->addressBookInfo['principaluri'] === 'principals/system/system' && (
295
-				$this->addressBookInfo['uri'] === 'system' ||
296
-				$this->addressBookInfo['{DAV:}displayname'] === $this->urlGenerator->getBaseUrl()
297
-			)
298
-		) {
299
-			$result['isLocalSystemBook'] = true;
300
-		}
301
-		return $result;
302
-	}
303
-
304
-	/**
305
-	 * Get the type of the current property
306
-	 *
307
-	 * @param Property $property
308
-	 * @return null|string
309
-	 */
310
-	protected function getTypeFromProperty(Property $property) {
311
-		$parameters = $property->parameters();
312
-		// Type is the social network, when it's empty we don't need this.
313
-		if (isset($parameters['TYPE'])) {
314
-			/** @var \Sabre\VObject\Parameter $type */
315
-			$type = $parameters['TYPE'];
316
-			return $type->getValue();
317
-		}
318
-
319
-		return null;
320
-	}
38
+    /** @var CardDavBackend */
39
+    private $backend;
40
+
41
+    /** @var array */
42
+    private $addressBookInfo;
43
+
44
+    /** @var AddressBook */
45
+    private $addressBook;
46
+
47
+    /** @var IURLGenerator */
48
+    private $urlGenerator;
49
+
50
+    /**
51
+     * AddressBookImpl constructor.
52
+     *
53
+     * @param AddressBook $addressBook
54
+     * @param array $addressBookInfo
55
+     * @param CardDavBackend $backend
56
+     * @param IUrlGenerator $urlGenerator
57
+     */
58
+    public function __construct(
59
+            AddressBook $addressBook,
60
+            array $addressBookInfo,
61
+            CardDavBackend $backend,
62
+            IURLGenerator $urlGenerator) {
63
+
64
+        $this->addressBook = $addressBook;
65
+        $this->addressBookInfo = $addressBookInfo;
66
+        $this->backend = $backend;
67
+        $this->urlGenerator = $urlGenerator;
68
+    }
69
+
70
+    /**
71
+     * @return string defining the technical unique key
72
+     * @since 5.0.0
73
+     */
74
+    public function getKey() {
75
+        return $this->addressBookInfo['id'];
76
+    }
77
+
78
+    /**
79
+     * @return string defining the unique uri
80
+     * @since 16.0.0
81
+     * @return string
82
+     */
83
+    public function getUri(): string {
84
+        return $this->addressBookInfo['uri'];
85
+    }
86
+
87
+    /**
88
+     * In comparison to getKey() this function returns a human readable (maybe translated) name
89
+     *
90
+     * @return mixed
91
+     * @since 5.0.0
92
+     */
93
+    public function getDisplayName() {
94
+        return $this->addressBookInfo['{DAV:}displayname'];
95
+    }
96
+
97
+    /**
98
+     * @param string $pattern which should match within the $searchProperties
99
+     * @param array $searchProperties defines the properties within the query pattern should match
100
+     * @param array $options Options to define the output format and search behavior
101
+     * 	- 'types' boolean (since 15.0.0) If set to true, fields that come with a TYPE property will be an array
102
+     *    example: ['id' => 5, 'FN' => 'Thomas Tanghus', 'EMAIL' => ['type => 'HOME', 'value' => '[email protected]']]
103
+     * 	- 'escape_like_param' - If set to false wildcards _ and % are not escaped
104
+     * @return array an array of contacts which are arrays of key-value-pairs
105
+     *  example result:
106
+     *  [
107
+     *		['id' => 0, 'FN' => 'Thomas Müller', 'EMAIL' => '[email protected]', 'GEO' => '37.386013;-122.082932'],
108
+     *		['id' => 5, 'FN' => 'Thomas Tanghus', 'EMAIL' => ['[email protected]', '[email protected]']]
109
+     *	]
110
+     * @since 5.0.0
111
+     */
112
+    public function search($pattern, $searchProperties, $options) {
113
+        $results = $this->backend->search($this->getKey(), $pattern, $searchProperties, $options);
114
+
115
+        $withTypes = \array_key_exists('types', $options) && $options['types'] === true;
116
+
117
+        $vCards = [];
118
+        foreach ($results as $result) {
119
+            $vCards[] = $this->vCard2Array($result['uri'], $this->readCard($result['carddata']), $withTypes);
120
+        }
121
+
122
+        return $vCards;
123
+    }
124
+
125
+    /**
126
+     * @param array $properties this array if key-value-pairs defines a contact
127
+     * @return array an array representing the contact just created or updated
128
+     * @since 5.0.0
129
+     */
130
+    public function createOrUpdate($properties) {
131
+        $update = false;
132
+        if (!isset($properties['URI'])) { // create a new contact
133
+            $uid = $this->createUid();
134
+            $uri = $uid . '.vcf';
135
+            $vCard = $this->createEmptyVCard($uid);
136
+        } else { // update existing contact
137
+            $uri = $properties['URI'];
138
+            $vCardData = $this->backend->getCard($this->getKey(), $uri);
139
+            $vCard = $this->readCard($vCardData['carddata']);
140
+            $update = true;
141
+        }
142
+
143
+        foreach ($properties as $key => $value) {
144
+            $vCard->$key = $vCard->createProperty($key, $value);
145
+        }
146
+
147
+        if ($update) {
148
+            $this->backend->updateCard($this->getKey(), $uri, $vCard->serialize());
149
+        } else {
150
+            $this->backend->createCard($this->getKey(), $uri, $vCard->serialize());
151
+        }
152
+
153
+        return $this->vCard2Array($uri, $vCard);
154
+
155
+    }
156
+
157
+    /**
158
+     * @return mixed
159
+     * @since 5.0.0
160
+     */
161
+    public function getPermissions() {
162
+        $permissions = $this->addressBook->getACL();
163
+        $result = 0;
164
+        foreach ($permissions as $permission) {
165
+            switch($permission['privilege']) {
166
+                case '{DAV:}read':
167
+                    $result |= Constants::PERMISSION_READ;
168
+                    break;
169
+                case '{DAV:}write':
170
+                    $result |= Constants::PERMISSION_CREATE;
171
+                    $result |= Constants::PERMISSION_UPDATE;
172
+                    break;
173
+                case '{DAV:}all':
174
+                    $result |= Constants::PERMISSION_ALL;
175
+                    break;
176
+            }
177
+        }
178
+
179
+        return $result;
180
+    }
181
+
182
+    /**
183
+     * @param object $id the unique identifier to a contact
184
+     * @return bool successful or not
185
+     * @since 5.0.0
186
+     */
187
+    public function delete($id) {
188
+        $uri = $this->backend->getCardUri($id);
189
+        return $this->backend->deleteCard($this->addressBookInfo['id'], $uri);
190
+    }
191
+
192
+    /**
193
+     * read vCard data into a vCard object
194
+     *
195
+     * @param string $cardData
196
+     * @return VCard
197
+     */
198
+    protected function readCard($cardData) {
199
+        return  Reader::read($cardData);
200
+    }
201
+
202
+    /**
203
+     * create UID for contact
204
+     *
205
+     * @return string
206
+     */
207
+    protected function createUid() {
208
+        do {
209
+            $uid = $this->getUid();
210
+            $contact = $this->backend->getContact($this->getKey(), $uid . '.vcf');
211
+        } while (!empty($contact));
212
+
213
+        return $uid;
214
+    }
215
+
216
+    /**
217
+     * getUid is only there for testing, use createUid instead
218
+     */
219
+    protected function getUid() {
220
+        return UUIDUtil::getUUID();
221
+    }
222
+
223
+    /**
224
+     * create empty vcard
225
+     *
226
+     * @param string $uid
227
+     * @return VCard
228
+     */
229
+    protected function createEmptyVCard($uid) {
230
+        $vCard = new VCard();
231
+        $vCard->UID = $uid;
232
+        return $vCard;
233
+    }
234
+
235
+    /**
236
+     * create array with all vCard properties
237
+     *
238
+     * @param string $uri
239
+     * @param VCard $vCard
240
+     * @return array
241
+     */
242
+    protected function vCard2Array($uri, VCard $vCard, $withTypes = false) {
243
+        $result = [
244
+            'URI' => $uri,
245
+        ];
246
+
247
+        foreach ($vCard->children() as $property) {
248
+            if ($property->name === 'PHOTO' && $property->getValueType() === 'BINARY') {
249
+                $url = $this->urlGenerator->getAbsoluteURL(
250
+                    $this->urlGenerator->linkTo('', 'remote.php') . '/dav/');
251
+                $url .= implode('/', [
252
+                    'addressbooks',
253
+                    substr($this->addressBookInfo['principaluri'], 11), //cut off 'principals/'
254
+                    $this->addressBookInfo['uri'],
255
+                    $uri
256
+                ]) . '?photo';
257
+
258
+                $result['PHOTO'] = 'VALUE=uri:' . $url;
259
+
260
+            } else if ($property->name === 'X-SOCIALPROFILE') {
261
+                $type = $this->getTypeFromProperty($property);
262
+
263
+                // Type is the social network, when it's empty we don't need this.
264
+                if ($type !== null) {
265
+                    if (!isset($result[$property->name])) {
266
+                        $result[$property->name] = [];
267
+                    }
268
+                    $result[$property->name][$type] = $property->getValue();
269
+                }
270
+
271
+            // The following properties can be set multiple times
272
+            } else if (in_array($property->name, ['CLOUD', 'EMAIL', 'IMPP', 'TEL', 'URL', 'X-ADDRESSBOOKSERVER-MEMBER'])) {
273
+                if (!isset($result[$property->name])) {
274
+                    $result[$property->name] = [];
275
+                }
276
+
277
+                $type = $this->getTypeFromProperty($property);
278
+                if ($withTypes) {
279
+                    $result[$property->name][] = [
280
+                        'type' => $type,
281
+                        'value' => $property->getValue()
282
+                        ];
283
+                } else {
284
+                    $result[$property->name][] = $property->getValue();
285
+                }
286
+
287
+
288
+            } else {
289
+                $result[$property->name] = $property->getValue();
290
+            }
291
+        }
292
+
293
+        if (
294
+            $this->addressBookInfo['principaluri'] === 'principals/system/system' && (
295
+                $this->addressBookInfo['uri'] === 'system' ||
296
+                $this->addressBookInfo['{DAV:}displayname'] === $this->urlGenerator->getBaseUrl()
297
+            )
298
+        ) {
299
+            $result['isLocalSystemBook'] = true;
300
+        }
301
+        return $result;
302
+    }
303
+
304
+    /**
305
+     * Get the type of the current property
306
+     *
307
+     * @param Property $property
308
+     * @return null|string
309
+     */
310
+    protected function getTypeFromProperty(Property $property) {
311
+        $parameters = $property->parameters();
312
+        // Type is the social network, when it's empty we don't need this.
313
+        if (isset($parameters['TYPE'])) {
314
+            /** @var \Sabre\VObject\Parameter $type */
315
+            $type = $parameters['TYPE'];
316
+            return $type->getValue();
317
+        }
318
+
319
+        return null;
320
+    }
321 321
 }
Please login to merge, or discard this patch.
apps/dav/lib/CardDAV/Xml/Groups.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -40,7 +40,7 @@
 block discarded – undo
40 40
 
41 41
 	function xmlSerialize(Writer $writer) {
42 42
 		foreach ($this->groups as $group) {
43
-			$writer->writeElement('{' . self::NS_OWNCLOUD . '}group', $group);
43
+			$writer->writeElement('{'.self::NS_OWNCLOUD.'}group', $group);
44 44
 		}
45 45
 	}
46 46
 }
Please login to merge, or discard this patch.
Indentation   +14 added lines, -14 removed lines patch added patch discarded remove patch
@@ -26,21 +26,21 @@
 block discarded – undo
26 26
 use Sabre\Xml\XmlSerializable;
27 27
 
28 28
 class Groups implements XmlSerializable {
29
-	const NS_OWNCLOUD = 'http://owncloud.org/ns';
29
+    const NS_OWNCLOUD = 'http://owncloud.org/ns';
30 30
 
31
-	/** @var string[] of TYPE:CHECKSUM */
32
-	private $groups;
31
+    /** @var string[] of TYPE:CHECKSUM */
32
+    private $groups;
33 33
 
34
-	/**
35
-	 * @param string $groups
36
-	 */
37
-	public function __construct($groups) {
38
-		$this->groups = $groups;
39
-	}
34
+    /**
35
+     * @param string $groups
36
+     */
37
+    public function __construct($groups) {
38
+        $this->groups = $groups;
39
+    }
40 40
 
41
-	function xmlSerialize(Writer $writer) {
42
-		foreach ($this->groups as $group) {
43
-			$writer->writeElement('{' . self::NS_OWNCLOUD . '}group', $group);
44
-		}
45
-	}
41
+    function xmlSerialize(Writer $writer) {
42
+        foreach ($this->groups as $group) {
43
+            $writer->writeElement('{' . self::NS_OWNCLOUD . '}group', $group);
44
+        }
45
+    }
46 46
 }
Please login to merge, or discard this patch.