Passed
Push — master ( 9d5362...1a3daa )
by Blizzz
13:57 queued 13s
created
apps/user_ldap/lib/Jobs/UpdateGroups.php 2 patches
Indentation   +184 added lines, -184 removed lines patch added patch discarded remove patch
@@ -46,196 +46,196 @@
 block discarded – undo
46 46
 use Psr\Log\LoggerInterface;
47 47
 
48 48
 class UpdateGroups extends TimedJob {
49
-	private $groupsFromDB;
50
-
51
-	/** @var Group_Proxy */
52
-	private $groupBackend;
53
-	/** @var IEventDispatcher */
54
-	private $dispatcher;
55
-	/** @var IGroupManager */
56
-	private $groupManager;
57
-	/** @var IUserManager */
58
-	private $userManager;
59
-	/** @var LoggerInterface */
60
-	private $logger;
61
-	/** @var IDBConnection */
62
-	private $dbc;
63
-
64
-	public function __construct(
65
-		Group_Proxy $groupBackend,
66
-		IEventDispatcher $dispatcher,
67
-		IGroupManager $groupManager,
68
-		IUserManager $userManager,
69
-		LoggerInterface $logger,
70
-		IDBConnection $dbc
71
-	) {
72
-		$this->interval = $this->getRefreshInterval();
73
-		$this->groupBackend = $groupBackend;
74
-		$this->dispatcher = $dispatcher;
75
-		$this->groupManager = $groupManager;
76
-		$this->userManager = $userManager;
77
-		$this->logger = $logger;
78
-		$this->dbc = $dbc;
79
-	}
80
-
81
-	/**
82
-	 * @return int
83
-	 */
84
-	private function getRefreshInterval() {
85
-		//defaults to every hour
86
-		return \OC::$server->getConfig()->getAppValue('user_ldap', 'bgjRefreshInterval', 3600);
87
-	}
88
-
89
-	/**
90
-	 * @param mixed $argument
91
-	 */
92
-	public function run($argument) {
93
-		$this->updateGroups();
94
-	}
95
-
96
-	public function updateGroups() {
97
-		\OCP\Util::writeLog('user_ldap', 'Run background job "updateGroups"', ILogger::DEBUG);
98
-
99
-		$knownGroups = array_keys($this->getKnownGroups());
100
-		$actualGroups = $this->groupBackend->getGroups();
101
-
102
-		if (empty($actualGroups) && empty($knownGroups)) {
103
-			\OCP\Util::writeLog('user_ldap',
104
-				'bgJ "updateGroups" – groups do not seem to be configured properly, aborting.',
105
-				ILogger::INFO);
106
-			return;
107
-		}
108
-
109
-		$this->handleKnownGroups(array_intersect($actualGroups, $knownGroups));
110
-		$this->handleCreatedGroups(array_diff($actualGroups, $knownGroups));
111
-		$this->handleRemovedGroups(array_diff($knownGroups, $actualGroups));
112
-
113
-		\OCP\Util::writeLog('user_ldap', 'bgJ "updateGroups" – Finished.', ILogger::DEBUG);
114
-	}
115
-
116
-	/**
117
-	 * @return array
118
-	 */
119
-	private function getKnownGroups() {
120
-		if (is_array($this->groupsFromDB)) {
121
-			$this->groupsFromDB;
122
-		}
123
-		$qb = $this->dbc->getQueryBuilder();
124
-		$qb->select(['owncloudname', 'owncloudusers'])
125
-			->from('ldap_group_members');
126
-		$result = $qb->execute()->fetchAll();
127
-
128
-		$this->groupsFromDB = [];
129
-		foreach ($result as $dataset) {
130
-			$this->groupsFromDB[$dataset['owncloudname']] = $dataset;
131
-		}
132
-
133
-		return $this->groupsFromDB;
134
-	}
135
-
136
-	private function handleKnownGroups(array $groups) {
137
-		$this->logger->debug(
138
-			'bgJ "updateGroups" – Dealing with known Groups.',
139
-			['app' => 'user_ldap']
140
-		);
141
-		$qb = $this->dbc->getQueryBuilder();
142
-		$qb->update('ldap_group_members')
143
-			->set('owncloudusers', $qb->createParameter('members'))
144
-			->where($qb->expr()->eq('owncloudname', $qb->createParameter('groupId')));
145
-
146
-		if (!is_array($this->groupsFromDB)) {
147
-			$this->getKnownGroups();
148
-		}
149
-		foreach ($groups as $group) {
150
-			$knownUsers = unserialize($this->groupsFromDB[$group]['owncloudusers']);
151
-			$actualUsers = $this->groupBackend->usersInGroup($group);
152
-			$hasChanged = false;
153
-
154
-			$groupObject = $this->groupManager->get($group);
155
-			foreach (array_diff($knownUsers, $actualUsers) as $removedUser) {
156
-				$userObject = $this->userManager->get($removedUser);
157
-				if ($userObject instanceof IUser) {
158
-					$this->dispatcher->dispatchTyped(new UserRemovedEvent($groupObject, $userObject));
159
-				}
160
-				$this->logger->info(
161
-					'bgJ "updateGroups" – {user} removed from {group}',
162
-					[
163
-						'app' => 'user_ldap',
164
-						'user' => $removedUser,
165
-						'group' => $group
166
-					]
167
-				);
168
-				$hasChanged = true;
169
-			}
170
-			foreach (array_diff($actualUsers, $knownUsers) as $addedUser) {
171
-				$userObject = $this->userManager->get($addedUser);
172
-				if ($userObject instanceof IUser) {
173
-					$this->dispatcher->dispatchTyped(new UserAddedEvent($groupObject, $userObject));
174
-				}
175
-				$this->logger->info(
176
-					'bgJ "updateGroups" – {user} added to {group}',
177
-					[
178
-						'app' => 'user_ldap',
179
-						'user' => $addedUser,
180
-						'group' => $group
181
-					]
182
-				);
183
-				$hasChanged = true;
184
-			}
185
-			if ($hasChanged) {
186
-				$qb->setParameters([
187
-					'members' => serialize($actualUsers),
188
-					'groupId' => $group
189
-				]);
190
-				$qb->execute();
191
-			}
192
-		}
193
-		$this->logger->debug(
194
-			'bgJ "updateGroups" – FINISHED dealing with known Groups.',
195
-			['app' => 'user_ldap']
196
-		);
197
-	}
198
-
199
-	/**
200
-	 * @param string[] $createdGroups
201
-	 */
202
-	private function handleCreatedGroups($createdGroups) {
203
-		\OCP\Util::writeLog('user_ldap', 'bgJ "updateGroups" – dealing with created Groups.', ILogger::DEBUG);
204
-		$query = \OC_DB::prepare('
49
+    private $groupsFromDB;
50
+
51
+    /** @var Group_Proxy */
52
+    private $groupBackend;
53
+    /** @var IEventDispatcher */
54
+    private $dispatcher;
55
+    /** @var IGroupManager */
56
+    private $groupManager;
57
+    /** @var IUserManager */
58
+    private $userManager;
59
+    /** @var LoggerInterface */
60
+    private $logger;
61
+    /** @var IDBConnection */
62
+    private $dbc;
63
+
64
+    public function __construct(
65
+        Group_Proxy $groupBackend,
66
+        IEventDispatcher $dispatcher,
67
+        IGroupManager $groupManager,
68
+        IUserManager $userManager,
69
+        LoggerInterface $logger,
70
+        IDBConnection $dbc
71
+    ) {
72
+        $this->interval = $this->getRefreshInterval();
73
+        $this->groupBackend = $groupBackend;
74
+        $this->dispatcher = $dispatcher;
75
+        $this->groupManager = $groupManager;
76
+        $this->userManager = $userManager;
77
+        $this->logger = $logger;
78
+        $this->dbc = $dbc;
79
+    }
80
+
81
+    /**
82
+     * @return int
83
+     */
84
+    private function getRefreshInterval() {
85
+        //defaults to every hour
86
+        return \OC::$server->getConfig()->getAppValue('user_ldap', 'bgjRefreshInterval', 3600);
87
+    }
88
+
89
+    /**
90
+     * @param mixed $argument
91
+     */
92
+    public function run($argument) {
93
+        $this->updateGroups();
94
+    }
95
+
96
+    public function updateGroups() {
97
+        \OCP\Util::writeLog('user_ldap', 'Run background job "updateGroups"', ILogger::DEBUG);
98
+
99
+        $knownGroups = array_keys($this->getKnownGroups());
100
+        $actualGroups = $this->groupBackend->getGroups();
101
+
102
+        if (empty($actualGroups) && empty($knownGroups)) {
103
+            \OCP\Util::writeLog('user_ldap',
104
+                'bgJ "updateGroups" – groups do not seem to be configured properly, aborting.',
105
+                ILogger::INFO);
106
+            return;
107
+        }
108
+
109
+        $this->handleKnownGroups(array_intersect($actualGroups, $knownGroups));
110
+        $this->handleCreatedGroups(array_diff($actualGroups, $knownGroups));
111
+        $this->handleRemovedGroups(array_diff($knownGroups, $actualGroups));
112
+
113
+        \OCP\Util::writeLog('user_ldap', 'bgJ "updateGroups" – Finished.', ILogger::DEBUG);
114
+    }
115
+
116
+    /**
117
+     * @return array
118
+     */
119
+    private function getKnownGroups() {
120
+        if (is_array($this->groupsFromDB)) {
121
+            $this->groupsFromDB;
122
+        }
123
+        $qb = $this->dbc->getQueryBuilder();
124
+        $qb->select(['owncloudname', 'owncloudusers'])
125
+            ->from('ldap_group_members');
126
+        $result = $qb->execute()->fetchAll();
127
+
128
+        $this->groupsFromDB = [];
129
+        foreach ($result as $dataset) {
130
+            $this->groupsFromDB[$dataset['owncloudname']] = $dataset;
131
+        }
132
+
133
+        return $this->groupsFromDB;
134
+    }
135
+
136
+    private function handleKnownGroups(array $groups) {
137
+        $this->logger->debug(
138
+            'bgJ "updateGroups" – Dealing with known Groups.',
139
+            ['app' => 'user_ldap']
140
+        );
141
+        $qb = $this->dbc->getQueryBuilder();
142
+        $qb->update('ldap_group_members')
143
+            ->set('owncloudusers', $qb->createParameter('members'))
144
+            ->where($qb->expr()->eq('owncloudname', $qb->createParameter('groupId')));
145
+
146
+        if (!is_array($this->groupsFromDB)) {
147
+            $this->getKnownGroups();
148
+        }
149
+        foreach ($groups as $group) {
150
+            $knownUsers = unserialize($this->groupsFromDB[$group]['owncloudusers']);
151
+            $actualUsers = $this->groupBackend->usersInGroup($group);
152
+            $hasChanged = false;
153
+
154
+            $groupObject = $this->groupManager->get($group);
155
+            foreach (array_diff($knownUsers, $actualUsers) as $removedUser) {
156
+                $userObject = $this->userManager->get($removedUser);
157
+                if ($userObject instanceof IUser) {
158
+                    $this->dispatcher->dispatchTyped(new UserRemovedEvent($groupObject, $userObject));
159
+                }
160
+                $this->logger->info(
161
+                    'bgJ "updateGroups" – {user} removed from {group}',
162
+                    [
163
+                        'app' => 'user_ldap',
164
+                        'user' => $removedUser,
165
+                        'group' => $group
166
+                    ]
167
+                );
168
+                $hasChanged = true;
169
+            }
170
+            foreach (array_diff($actualUsers, $knownUsers) as $addedUser) {
171
+                $userObject = $this->userManager->get($addedUser);
172
+                if ($userObject instanceof IUser) {
173
+                    $this->dispatcher->dispatchTyped(new UserAddedEvent($groupObject, $userObject));
174
+                }
175
+                $this->logger->info(
176
+                    'bgJ "updateGroups" – {user} added to {group}',
177
+                    [
178
+                        'app' => 'user_ldap',
179
+                        'user' => $addedUser,
180
+                        'group' => $group
181
+                    ]
182
+                );
183
+                $hasChanged = true;
184
+            }
185
+            if ($hasChanged) {
186
+                $qb->setParameters([
187
+                    'members' => serialize($actualUsers),
188
+                    'groupId' => $group
189
+                ]);
190
+                $qb->execute();
191
+            }
192
+        }
193
+        $this->logger->debug(
194
+            'bgJ "updateGroups" – FINISHED dealing with known Groups.',
195
+            ['app' => 'user_ldap']
196
+        );
197
+    }
198
+
199
+    /**
200
+     * @param string[] $createdGroups
201
+     */
202
+    private function handleCreatedGroups($createdGroups) {
203
+        \OCP\Util::writeLog('user_ldap', 'bgJ "updateGroups" – dealing with created Groups.', ILogger::DEBUG);
204
+        $query = \OC_DB::prepare('
205 205
 			INSERT
206 206
 			INTO `*PREFIX*ldap_group_members` (`owncloudname`, `owncloudusers`)
207 207
 			VALUES (?, ?)
208 208
 		');
209
-		foreach ($createdGroups as $createdGroup) {
210
-			\OCP\Util::writeLog('user_ldap',
211
-				'bgJ "updateGroups" – new group "' . $createdGroup . '" found.',
212
-				ILogger::INFO);
213
-			$users = serialize($this->groupBackend->usersInGroup($createdGroup));
214
-			$query->execute([$createdGroup, $users]);
215
-		}
216
-		\OCP\Util::writeLog('user_ldap',
217
-			'bgJ "updateGroups" – FINISHED dealing with created Groups.',
218
-			ILogger::DEBUG);
219
-	}
220
-
221
-	/**
222
-	 * @param string[] $removedGroups
223
-	 */
224
-	private function handleRemovedGroups($removedGroups) {
225
-		\OCP\Util::writeLog('user_ldap', 'bgJ "updateGroups" – dealing with removed groups.', ILogger::DEBUG);
226
-		$query = \OC_DB::prepare('
209
+        foreach ($createdGroups as $createdGroup) {
210
+            \OCP\Util::writeLog('user_ldap',
211
+                'bgJ "updateGroups" – new group "' . $createdGroup . '" found.',
212
+                ILogger::INFO);
213
+            $users = serialize($this->groupBackend->usersInGroup($createdGroup));
214
+            $query->execute([$createdGroup, $users]);
215
+        }
216
+        \OCP\Util::writeLog('user_ldap',
217
+            'bgJ "updateGroups" – FINISHED dealing with created Groups.',
218
+            ILogger::DEBUG);
219
+    }
220
+
221
+    /**
222
+     * @param string[] $removedGroups
223
+     */
224
+    private function handleRemovedGroups($removedGroups) {
225
+        \OCP\Util::writeLog('user_ldap', 'bgJ "updateGroups" – dealing with removed groups.', ILogger::DEBUG);
226
+        $query = \OC_DB::prepare('
227 227
 			DELETE
228 228
 			FROM `*PREFIX*ldap_group_members`
229 229
 			WHERE `owncloudname` = ?
230 230
 		');
231
-		foreach ($removedGroups as $removedGroup) {
232
-			\OCP\Util::writeLog('user_ldap',
233
-				'bgJ "updateGroups" – group "' . $removedGroup . '" was removed.',
234
-				ILogger::INFO);
235
-			$query->execute([$removedGroup]);
236
-		}
237
-		\OCP\Util::writeLog('user_ldap',
238
-			'bgJ "updateGroups" – FINISHED dealing with removed groups.',
239
-			ILogger::DEBUG);
240
-	}
231
+        foreach ($removedGroups as $removedGroup) {
232
+            \OCP\Util::writeLog('user_ldap',
233
+                'bgJ "updateGroups" – group "' . $removedGroup . '" was removed.',
234
+                ILogger::INFO);
235
+            $query->execute([$removedGroup]);
236
+        }
237
+        \OCP\Util::writeLog('user_ldap',
238
+            'bgJ "updateGroups" – FINISHED dealing with removed groups.',
239
+            ILogger::DEBUG);
240
+    }
241 241
 }
Please login to merge, or discard this patch.
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -208,7 +208,7 @@  discard block
 block discarded – undo
208 208
 		');
209 209
 		foreach ($createdGroups as $createdGroup) {
210 210
 			\OCP\Util::writeLog('user_ldap',
211
-				'bgJ "updateGroups" – new group "' . $createdGroup . '" found.',
211
+				'bgJ "updateGroups" – new group "'.$createdGroup.'" found.',
212 212
 				ILogger::INFO);
213 213
 			$users = serialize($this->groupBackend->usersInGroup($createdGroup));
214 214
 			$query->execute([$createdGroup, $users]);
@@ -230,7 +230,7 @@  discard block
 block discarded – undo
230 230
 		');
231 231
 		foreach ($removedGroups as $removedGroup) {
232 232
 			\OCP\Util::writeLog('user_ldap',
233
-				'bgJ "updateGroups" – group "' . $removedGroup . '" was removed.',
233
+				'bgJ "updateGroups" – group "'.$removedGroup.'" was removed.',
234 234
 				ILogger::INFO);
235 235
 			$query->execute([$removedGroup]);
236 236
 		}
Please login to merge, or discard this patch.