Code Duplication    Length = 36-37 lines in 3 locations

lib/BackgroundJob/BackgroundScanner.php 3 locations

@@ 100-135 (lines=36) @@
97
98
		// Run for unscanned files
99
		$cnt = 0;
100
		while (($row = $result->fetch()) && $cnt < $batchSize) {
101
			try {
102
				$fileId = $row['fileid'];
103
				$users = $this->getUserWithAccessToStorage((int)$row['storage']);
104
105
				foreach ($users as $user) {
106
					/** @var IUser $owner */
107
					$owner = $this->userManager->get($user['user_id']);
108
					if (!$owner instanceof IUser) {
109
						continue;
110
					}
111
112
					$userFolder = $this->rootFolder->getUserFolder($owner->getUID());
113
					$files = $userFolder->getById($fileId);
114
115
					if ($files === []) {
116
						continue;
117
					}
118
119
					$file = array_pop($files);
120
					if ($file instanceof File) {
121
						if ($userFolder->nodeExists($userFolder->getRelativePath($file->getPath()))) {
122
							$this->scanOneFile($file);
123
						}
124
					} else {
125
						$this->logger->error('Tried to scan non file');
126
					}
127
128
					// increased only for successfully scanned files
129
					$cnt++;
130
					break;
131
				}
132
			} catch (\Exception $e) {
133
				$this->logger->logException($e, ['app' => 'files_antivirus']);
134
			}
135
		}
136
137
		if ($cnt === $batchSize) {
138
			// we are done
@@ 150-186 (lines=37) @@
147
			return;
148
		}
149
150
		while (($row = $result->fetch()) && $cnt < $batchSize) {
151
			try {
152
				$fileId = $row['fileid'];
153
				$users = $this->getUserWithAccessToStorage((int)$row['storage']);
154
155
				foreach ($users as $user) {
156
					/** @var IUser $owner */
157
					$owner = $this->userManager->get($user['user_id']);
158
					if (!$owner instanceof IUser) {
159
						continue;
160
					}
161
162
					$userFolder = $this->rootFolder->getUserFolder($owner->getUID());
163
					$files = $userFolder->getById($fileId);
164
165
					if ($files === []) {
166
						continue;
167
					}
168
169
					$file = array_pop($files);
170
171
					if ($file instanceof File) {
172
						if ($userFolder->nodeExists($userFolder->getRelativePath($file->getPath()))) {
173
							$this->scanOneFile($file);
174
						}
175
					} else {
176
						$this->logger->error('Tried to scan non file');
177
					}
178
179
					// increased only for successfully scanned files
180
					$cnt++;
181
					break;
182
				}
183
			} catch (\Exception $e) {
184
				$this->logger->error(__METHOD__ . ', exception: ' . $e->getMessage(), ['app' => 'files_antivirus']);
185
			}
186
		}
187
188
189
		// Run for files that have been scanned in the past. Just start to rescan them as the virus definitaions might have been updated
@@ 197-232 (lines=36) @@
194
			return;
195
		}
196
197
		while (($row = $result->fetch()) && $cnt < $batchSize) {
198
			try {
199
				$fileId = $row['fileid'];
200
				$users = $this->getUserWithAccessToStorage((int)$row['storage']);
201
202
				foreach ($users as $user) {
203
					/** @var IUser $owner */
204
					$owner = $this->userManager->get($user['user_id']);
205
					if (!$owner instanceof IUser) {
206
						continue;
207
					}
208
209
					$userFolder = $this->rootFolder->getUserFolder($owner->getUID());
210
					$files = $userFolder->getById($fileId);
211
212
					if ($files === []) {
213
						continue;
214
					}
215
216
					$file = array_pop($files);
217
					if ($file instanceof File) {
218
						if ($userFolder->nodeExists($userFolder->getRelativePath($file->getPath()))) {
219
							$this->scanOneFile($file);
220
						}
221
					} else {
222
						$this->logger->error('Tried to scan non file');
223
					}
224
225
					// increased only for successfully scanned files
226
					$cnt++;
227
					break;
228
				}
229
			} catch (\Exception $e) {
230
				$this->logger->error(__METHOD__ . ', exception: ' . $e->getMessage(), ['app' => 'files_antivirus']);
231
			}
232
		}
233
	}
234
235
	protected function getBatchSize(): int {