Completed
Pull Request — master (#4120)
by Joas
15:45
created
lib/private/Activity/EventMerger.php 2 patches
Indentation   +201 added lines, -201 removed lines patch added patch discarded remove patch
@@ -27,230 +27,230 @@
 block discarded – undo
27 27
 
28 28
 class EventMerger implements IEventMerger {
29 29
 
30
-	/** @var IL10N */
31
-	protected $l10n;
30
+    /** @var IL10N */
31
+    protected $l10n;
32 32
 
33
-	/**
34
-	 * @param IL10N $l10n
35
-	 */
36
-	public function __construct(IL10N $l10n) {
37
-		$this->l10n = $l10n;
38
-	}
33
+    /**
34
+     * @param IL10N $l10n
35
+     */
36
+    public function __construct(IL10N $l10n) {
37
+        $this->l10n = $l10n;
38
+    }
39 39
 
40
-	/**
41
-	 * Combines two events when possible to have grouping:
42
-	 *
43
-	 * Example1: Two events with subject '{user} created {file}' and
44
-	 * $mergeParameter file with different file and same user will be merged
45
-	 * to '{user} created {file1} and {file2}' and the childEvent on the return
46
-	 * will be set, if the events have been merged.
47
-	 *
48
-	 * Example2: Two events with subject '{user} created {file}' and
49
-	 * $mergeParameter file with same file and same user will be merged to
50
-	 * '{user} created {file1}' and the childEvent on the return will be set, if
51
-	 * the events have been merged.
52
-	 *
53
-	 * The following requirements have to be met, in order to be merged:
54
-	 * - Both events need to have the same `getApp()`
55
-	 * - Both events must not have a message `getMessage()`
56
-	 * - Both events need to have the same subject `getSubject()`
57
-	 * - Both events need to have the same object type `getObjectType()`
58
-	 * - The time difference between both events must not be bigger then 3 hours
59
-	 * - Only up to 5 events can be merged.
60
-	 * - All parameters apart from such starting with $mergeParameter must be
61
-	 *   the same for both events.
62
-	 *
63
-	 * @param string $mergeParameter
64
-	 * @param IEvent $event
65
-	 * @param IEvent|null $previousEvent
66
-	 * @return IEvent
67
-	 */
68
-	public function mergeEvents($mergeParameter, IEvent $event, IEvent $previousEvent = null) {
69
-		// No second event => can not combine
70
-		if (!$previousEvent instanceof IEvent) {
71
-			return $event;
72
-		}
40
+    /**
41
+     * Combines two events when possible to have grouping:
42
+     *
43
+     * Example1: Two events with subject '{user} created {file}' and
44
+     * $mergeParameter file with different file and same user will be merged
45
+     * to '{user} created {file1} and {file2}' and the childEvent on the return
46
+     * will be set, if the events have been merged.
47
+     *
48
+     * Example2: Two events with subject '{user} created {file}' and
49
+     * $mergeParameter file with same file and same user will be merged to
50
+     * '{user} created {file1}' and the childEvent on the return will be set, if
51
+     * the events have been merged.
52
+     *
53
+     * The following requirements have to be met, in order to be merged:
54
+     * - Both events need to have the same `getApp()`
55
+     * - Both events must not have a message `getMessage()`
56
+     * - Both events need to have the same subject `getSubject()`
57
+     * - Both events need to have the same object type `getObjectType()`
58
+     * - The time difference between both events must not be bigger then 3 hours
59
+     * - Only up to 5 events can be merged.
60
+     * - All parameters apart from such starting with $mergeParameter must be
61
+     *   the same for both events.
62
+     *
63
+     * @param string $mergeParameter
64
+     * @param IEvent $event
65
+     * @param IEvent|null $previousEvent
66
+     * @return IEvent
67
+     */
68
+    public function mergeEvents($mergeParameter, IEvent $event, IEvent $previousEvent = null) {
69
+        // No second event => can not combine
70
+        if (!$previousEvent instanceof IEvent) {
71
+            return $event;
72
+        }
73 73
 
74
-		// Different app => can not combine
75
-		if ($event->getApp() !== $previousEvent->getApp()) {
76
-			return $event;
77
-		}
74
+        // Different app => can not combine
75
+        if ($event->getApp() !== $previousEvent->getApp()) {
76
+            return $event;
77
+        }
78 78
 
79
-		// Message is set => can not combine
80
-		if ($event->getMessage() !== '' || $previousEvent->getMessage() !== '') {
81
-			return $event;
82
-		}
79
+        // Message is set => can not combine
80
+        if ($event->getMessage() !== '' || $previousEvent->getMessage() !== '') {
81
+            return $event;
82
+        }
83 83
 
84
-		// Different subject => can not combine
85
-		if ($event->getSubject() !== $previousEvent->getSubject()) {
86
-			return $event;
87
-		}
84
+        // Different subject => can not combine
85
+        if ($event->getSubject() !== $previousEvent->getSubject()) {
86
+            return $event;
87
+        }
88 88
 
89
-		// Different object type => can not combine
90
-		if ($event->getObjectType() !== $previousEvent->getObjectType()) {
91
-			return $event;
92
-		}
89
+        // Different object type => can not combine
90
+        if ($event->getObjectType() !== $previousEvent->getObjectType()) {
91
+            return $event;
92
+        }
93 93
 
94
-		// More than 3 hours difference => can not combine
95
-		if (abs($event->getTimestamp() - $previousEvent->getTimestamp()) > 3 * 60 * 60) {
96
-			return $event;
97
-		}
94
+        // More than 3 hours difference => can not combine
95
+        if (abs($event->getTimestamp() - $previousEvent->getTimestamp()) > 3 * 60 * 60) {
96
+            return $event;
97
+        }
98 98
 
99
-		// Other parameters are not the same => can not combine
100
-		try {
101
-			list($combined, $parameters) = $this->combineParameters($mergeParameter, $event, $previousEvent);
102
-		} catch (\UnexpectedValueException $e) {
103
-			return $event;
104
-		}
99
+        // Other parameters are not the same => can not combine
100
+        try {
101
+            list($combined, $parameters) = $this->combineParameters($mergeParameter, $event, $previousEvent);
102
+        } catch (\UnexpectedValueException $e) {
103
+            return $event;
104
+        }
105 105
 
106
-		try {
107
-			$newSubject = $this->getExtendedSubject($event->getRichSubject(), $mergeParameter, $combined);
108
-			$parsedSubject = $this->generateParsedSubject($newSubject, $parameters);
106
+        try {
107
+            $newSubject = $this->getExtendedSubject($event->getRichSubject(), $mergeParameter, $combined);
108
+            $parsedSubject = $this->generateParsedSubject($newSubject, $parameters);
109 109
 
110
-			$event->setRichSubject($newSubject, $parameters)
111
-				->setParsedSubject($parsedSubject)
112
-				->setChildEvent($previousEvent);
113
-		} catch (\UnexpectedValueException $e) {
114
-			return $event;
115
-		}
110
+            $event->setRichSubject($newSubject, $parameters)
111
+                ->setParsedSubject($parsedSubject)
112
+                ->setChildEvent($previousEvent);
113
+        } catch (\UnexpectedValueException $e) {
114
+            return $event;
115
+        }
116 116
 
117
-		return $event;
118
-	}
117
+        return $event;
118
+    }
119 119
 
120
-	/**
121
-	 * @param string $mergeParameter
122
-	 * @param IEvent $event
123
-	 * @param IEvent $previousEvent
124
-	 * @return array
125
-	 * @throws \UnexpectedValueException
126
-	 */
127
-	protected function combineParameters($mergeParameter, IEvent $event, IEvent $previousEvent) {
128
-		$params1 = $event->getRichSubjectParameters();
129
-		$params2 = $previousEvent->getRichSubjectParameters();
130
-		$params = [];
120
+    /**
121
+     * @param string $mergeParameter
122
+     * @param IEvent $event
123
+     * @param IEvent $previousEvent
124
+     * @return array
125
+     * @throws \UnexpectedValueException
126
+     */
127
+    protected function combineParameters($mergeParameter, IEvent $event, IEvent $previousEvent) {
128
+        $params1 = $event->getRichSubjectParameters();
129
+        $params2 = $previousEvent->getRichSubjectParameters();
130
+        $params = [];
131 131
 
132
-		$combined = 0;
132
+        $combined = 0;
133 133
 
134
-		// Check that all parameters from $event exist in $previousEvent
135
-		foreach ($params1 as $key => $parameter) {
136
-			if (preg_match('/^' . $mergeParameter . '(\d+)?$/', $key)) {
137
-				if (!$this->checkParameterAlreadyExits($params, $mergeParameter, $parameter)) {
138
-					$combined++;
139
-					$params[$mergeParameter . $combined] = $parameter;
140
-				}
141
-				continue;
142
-			}
134
+        // Check that all parameters from $event exist in $previousEvent
135
+        foreach ($params1 as $key => $parameter) {
136
+            if (preg_match('/^' . $mergeParameter . '(\d+)?$/', $key)) {
137
+                if (!$this->checkParameterAlreadyExits($params, $mergeParameter, $parameter)) {
138
+                    $combined++;
139
+                    $params[$mergeParameter . $combined] = $parameter;
140
+                }
141
+                continue;
142
+            }
143 143
 
144
-			if (!isset($params2[$key]) || $params2[$key] !== $parameter) {
145
-				// Parameter missing on $previousEvent or different => can not combine
146
-				throw new \UnexpectedValueException();
147
-			}
144
+            if (!isset($params2[$key]) || $params2[$key] !== $parameter) {
145
+                // Parameter missing on $previousEvent or different => can not combine
146
+                throw new \UnexpectedValueException();
147
+            }
148 148
 
149
-			$params[$key] = $parameter;
150
-		}
149
+            $params[$key] = $parameter;
150
+        }
151 151
 
152
-		// Check that all parameters from $previousEvent exist in $event
153
-		foreach ($params2 as $key => $parameter) {
154
-			if (preg_match('/^' . $mergeParameter . '(\d+)?$/', $key)) {
155
-				if (!$this->checkParameterAlreadyExits($params, $mergeParameter, $parameter)) {
156
-					$combined++;
157
-					$params[$mergeParameter . $combined] = $parameter;
158
-				}
159
-				continue;
160
-			}
152
+        // Check that all parameters from $previousEvent exist in $event
153
+        foreach ($params2 as $key => $parameter) {
154
+            if (preg_match('/^' . $mergeParameter . '(\d+)?$/', $key)) {
155
+                if (!$this->checkParameterAlreadyExits($params, $mergeParameter, $parameter)) {
156
+                    $combined++;
157
+                    $params[$mergeParameter . $combined] = $parameter;
158
+                }
159
+                continue;
160
+            }
161 161
 
162
-			if (!isset($params1[$key]) || $params1[$key] !== $parameter) {
163
-				// Parameter missing on $event or different => can not combine
164
-				throw new \UnexpectedValueException();
165
-			}
162
+            if (!isset($params1[$key]) || $params1[$key] !== $parameter) {
163
+                // Parameter missing on $event or different => can not combine
164
+                throw new \UnexpectedValueException();
165
+            }
166 166
 
167
-			$params[$key] = $parameter;
168
-		}
167
+            $params[$key] = $parameter;
168
+        }
169 169
 
170
-		return [$combined, $params];
171
-	}
170
+        return [$combined, $params];
171
+    }
172 172
 
173
-	/**
174
-	 * @param array[] $parameters
175
-	 * @param string $mergeParameter
176
-	 * @param array $parameter
177
-	 * @return bool
178
-	 */
179
-	protected function checkParameterAlreadyExits($parameters, $mergeParameter, $parameter) {
180
-		foreach ($parameters as $key => $param) {
181
-			if (preg_match('/^' . $mergeParameter . '(\d+)?$/', $key)) {
182
-				if ($param === $parameter) {
183
-					return true;
184
-				}
185
-			}
186
-		}
187
-		return false;
188
-	}
173
+    /**
174
+     * @param array[] $parameters
175
+     * @param string $mergeParameter
176
+     * @param array $parameter
177
+     * @return bool
178
+     */
179
+    protected function checkParameterAlreadyExits($parameters, $mergeParameter, $parameter) {
180
+        foreach ($parameters as $key => $param) {
181
+            if (preg_match('/^' . $mergeParameter . '(\d+)?$/', $key)) {
182
+                if ($param === $parameter) {
183
+                    return true;
184
+                }
185
+            }
186
+        }
187
+        return false;
188
+    }
189 189
 
190
-	/**
191
-	 * @param string $subject
192
-	 * @param string $parameter
193
-	 * @param int $counter
194
-	 * @return mixed
195
-	 */
196
-	protected function getExtendedSubject($subject, $parameter, $counter) {
197
-		switch ($counter) {
198
-			case 1:
199
-				$replacement = '{' . $parameter . '1}';
200
-				break;
201
-			case 2:
202
-				$replacement = $this->l10n->t(
203
-					'%1$s and %2$s',
204
-					['{' . $parameter . '2}', '{' . $parameter . '1}']
205
-				);
206
-				break;
207
-			case 3:
208
-				$replacement = $this->l10n->t(
209
-					'%1$s, %2$s and %3$s',
210
-					['{' . $parameter . '3}', '{' . $parameter . '2}', '{' . $parameter . '1}']
211
-				);
212
-				break;
213
-			case 4:
214
-				$replacement = $this->l10n->t(
215
-					'%1$s, %2$s, %3$s and %4$s',
216
-					['{' . $parameter . '4}', '{' . $parameter . '3}', '{' . $parameter . '2}', '{' . $parameter . '1}']
217
-				);
218
-				break;
219
-			case 5:
220
-				$replacement = $this->l10n->t(
221
-					'%1$s, %2$s, %3$s, %4$s and %5$s',
222
-					['{' . $parameter . '5}', '{' . $parameter . '4}', '{' . $parameter . '3}', '{' . $parameter . '2}', '{' . $parameter . '1}']
223
-				);
224
-				break;
225
-			default:
226
-				throw new \UnexpectedValueException();
227
-		}
190
+    /**
191
+     * @param string $subject
192
+     * @param string $parameter
193
+     * @param int $counter
194
+     * @return mixed
195
+     */
196
+    protected function getExtendedSubject($subject, $parameter, $counter) {
197
+        switch ($counter) {
198
+            case 1:
199
+                $replacement = '{' . $parameter . '1}';
200
+                break;
201
+            case 2:
202
+                $replacement = $this->l10n->t(
203
+                    '%1$s and %2$s',
204
+                    ['{' . $parameter . '2}', '{' . $parameter . '1}']
205
+                );
206
+                break;
207
+            case 3:
208
+                $replacement = $this->l10n->t(
209
+                    '%1$s, %2$s and %3$s',
210
+                    ['{' . $parameter . '3}', '{' . $parameter . '2}', '{' . $parameter . '1}']
211
+                );
212
+                break;
213
+            case 4:
214
+                $replacement = $this->l10n->t(
215
+                    '%1$s, %2$s, %3$s and %4$s',
216
+                    ['{' . $parameter . '4}', '{' . $parameter . '3}', '{' . $parameter . '2}', '{' . $parameter . '1}']
217
+                );
218
+                break;
219
+            case 5:
220
+                $replacement = $this->l10n->t(
221
+                    '%1$s, %2$s, %3$s, %4$s and %5$s',
222
+                    ['{' . $parameter . '5}', '{' . $parameter . '4}', '{' . $parameter . '3}', '{' . $parameter . '2}', '{' . $parameter . '1}']
223
+                );
224
+                break;
225
+            default:
226
+                throw new \UnexpectedValueException();
227
+        }
228 228
 
229
-		return str_replace(
230
-			'{' . $parameter . '}',
231
-			$replacement,
232
-			$subject
233
-		);
234
-	}
229
+        return str_replace(
230
+            '{' . $parameter . '}',
231
+            $replacement,
232
+            $subject
233
+        );
234
+    }
235 235
 
236
-	/**
237
-	 * @param string $subject
238
-	 * @param array[] $parameters
239
-	 * @return string
240
-	 */
241
-	protected function generateParsedSubject($subject, $parameters) {
242
-		$placeholders = $replacements = [];
243
-		foreach ($parameters as $placeholder => $parameter) {
244
-			$placeholders[] = '{' . $placeholder . '}';
245
-			if ($parameter['type'] === 'file') {
246
-				$replacements[] = trim($parameter['path'], '/');
247
-			} else if (isset($parameter['name'])) {
248
-				$replacements[] = $parameter['name'];
249
-			} else {
250
-				$replacements[] = $parameter['id'];
251
-			}
252
-		}
236
+    /**
237
+     * @param string $subject
238
+     * @param array[] $parameters
239
+     * @return string
240
+     */
241
+    protected function generateParsedSubject($subject, $parameters) {
242
+        $placeholders = $replacements = [];
243
+        foreach ($parameters as $placeholder => $parameter) {
244
+            $placeholders[] = '{' . $placeholder . '}';
245
+            if ($parameter['type'] === 'file') {
246
+                $replacements[] = trim($parameter['path'], '/');
247
+            } else if (isset($parameter['name'])) {
248
+                $replacements[] = $parameter['name'];
249
+            } else {
250
+                $replacements[] = $parameter['id'];
251
+            }
252
+        }
253 253
 
254
-		return str_replace($placeholders, $replacements, $subject);
255
-	}
254
+        return str_replace($placeholders, $replacements, $subject);
255
+    }
256 256
 }
Please login to merge, or discard this patch.
Spacing   +12 added lines, -12 removed lines patch added patch discarded remove patch
@@ -133,10 +133,10 @@  discard block
 block discarded – undo
133 133
 
134 134
 		// Check that all parameters from $event exist in $previousEvent
135 135
 		foreach ($params1 as $key => $parameter) {
136
-			if (preg_match('/^' . $mergeParameter . '(\d+)?$/', $key)) {
136
+			if (preg_match('/^'.$mergeParameter.'(\d+)?$/', $key)) {
137 137
 				if (!$this->checkParameterAlreadyExits($params, $mergeParameter, $parameter)) {
138 138
 					$combined++;
139
-					$params[$mergeParameter . $combined] = $parameter;
139
+					$params[$mergeParameter.$combined] = $parameter;
140 140
 				}
141 141
 				continue;
142 142
 			}
@@ -151,10 +151,10 @@  discard block
 block discarded – undo
151 151
 
152 152
 		// Check that all parameters from $previousEvent exist in $event
153 153
 		foreach ($params2 as $key => $parameter) {
154
-			if (preg_match('/^' . $mergeParameter . '(\d+)?$/', $key)) {
154
+			if (preg_match('/^'.$mergeParameter.'(\d+)?$/', $key)) {
155 155
 				if (!$this->checkParameterAlreadyExits($params, $mergeParameter, $parameter)) {
156 156
 					$combined++;
157
-					$params[$mergeParameter . $combined] = $parameter;
157
+					$params[$mergeParameter.$combined] = $parameter;
158 158
 				}
159 159
 				continue;
160 160
 			}
@@ -178,7 +178,7 @@  discard block
 block discarded – undo
178 178
 	 */
179 179
 	protected function checkParameterAlreadyExits($parameters, $mergeParameter, $parameter) {
180 180
 		foreach ($parameters as $key => $param) {
181
-			if (preg_match('/^' . $mergeParameter . '(\d+)?$/', $key)) {
181
+			if (preg_match('/^'.$mergeParameter.'(\d+)?$/', $key)) {
182 182
 				if ($param === $parameter) {
183 183
 					return true;
184 184
 				}
@@ -196,30 +196,30 @@  discard block
 block discarded – undo
196 196
 	protected function getExtendedSubject($subject, $parameter, $counter) {
197 197
 		switch ($counter) {
198 198
 			case 1:
199
-				$replacement = '{' . $parameter . '1}';
199
+				$replacement = '{'.$parameter.'1}';
200 200
 				break;
201 201
 			case 2:
202 202
 				$replacement = $this->l10n->t(
203 203
 					'%1$s and %2$s',
204
-					['{' . $parameter . '2}', '{' . $parameter . '1}']
204
+					['{'.$parameter.'2}', '{'.$parameter.'1}']
205 205
 				);
206 206
 				break;
207 207
 			case 3:
208 208
 				$replacement = $this->l10n->t(
209 209
 					'%1$s, %2$s and %3$s',
210
-					['{' . $parameter . '3}', '{' . $parameter . '2}', '{' . $parameter . '1}']
210
+					['{'.$parameter.'3}', '{'.$parameter.'2}', '{'.$parameter.'1}']
211 211
 				);
212 212
 				break;
213 213
 			case 4:
214 214
 				$replacement = $this->l10n->t(
215 215
 					'%1$s, %2$s, %3$s and %4$s',
216
-					['{' . $parameter . '4}', '{' . $parameter . '3}', '{' . $parameter . '2}', '{' . $parameter . '1}']
216
+					['{'.$parameter.'4}', '{'.$parameter.'3}', '{'.$parameter.'2}', '{'.$parameter.'1}']
217 217
 				);
218 218
 				break;
219 219
 			case 5:
220 220
 				$replacement = $this->l10n->t(
221 221
 					'%1$s, %2$s, %3$s, %4$s and %5$s',
222
-					['{' . $parameter . '5}', '{' . $parameter . '4}', '{' . $parameter . '3}', '{' . $parameter . '2}', '{' . $parameter . '1}']
222
+					['{'.$parameter.'5}', '{'.$parameter.'4}', '{'.$parameter.'3}', '{'.$parameter.'2}', '{'.$parameter.'1}']
223 223
 				);
224 224
 				break;
225 225
 			default:
@@ -227,7 +227,7 @@  discard block
 block discarded – undo
227 227
 		}
228 228
 
229 229
 		return str_replace(
230
-			'{' . $parameter . '}',
230
+			'{'.$parameter.'}',
231 231
 			$replacement,
232 232
 			$subject
233 233
 		);
@@ -241,7 +241,7 @@  discard block
 block discarded – undo
241 241
 	protected function generateParsedSubject($subject, $parameters) {
242 242
 		$placeholders = $replacements = [];
243 243
 		foreach ($parameters as $placeholder => $parameter) {
244
-			$placeholders[] = '{' . $placeholder . '}';
244
+			$placeholders[] = '{'.$placeholder.'}';
245 245
 			if ($parameter['type'] === 'file') {
246 246
 				$replacements[] = trim($parameter['path'], '/');
247 247
 			} else if (isset($parameter['name'])) {
Please login to merge, or discard this patch.