Completed
Push — master ( 034246...d4e9a8 )
by
unknown
19:42 queued 13s
created
apps/user_ldap/lib/Migration/Version1130Date20211102154716.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -214,7 +214,7 @@
 block discarded – undo
214 214
 
215 215
 		while ($nextcloudId = array_shift($idList)) {
216 216
 			$update->setParameter('nextcloudId', $nextcloudId);
217
-			$update->setParameter('invalidatedUuid', 'invalidated_' . \bin2hex(\random_bytes(6)));
217
+			$update->setParameter('invalidatedUuid', 'invalidated_'.\bin2hex(\random_bytes(6)));
218 218
 			try {
219 219
 				$update->executeStatement();
220 220
 				$this->logger->warning(
Please login to merge, or discard this patch.
Indentation   +219 added lines, -219 removed lines patch added patch discarded remove patch
@@ -22,245 +22,245 @@
 block discarded – undo
22 22
 
23 23
 class Version1130Date20211102154716 extends SimpleMigrationStep {
24 24
 
25
-	/** @var string[] */
26
-	private $hashColumnAddedToTables = [];
25
+    /** @var string[] */
26
+    private $hashColumnAddedToTables = [];
27 27
 
28
-	public function __construct(
29
-		private IDBConnection $dbc,
30
-		private LoggerInterface $logger,
31
-	) {
32
-	}
28
+    public function __construct(
29
+        private IDBConnection $dbc,
30
+        private LoggerInterface $logger,
31
+    ) {
32
+    }
33 33
 
34
-	public function getName() {
35
-		return 'Adjust LDAP user and group ldap_dn column lengths and add ldap_dn_hash columns';
36
-	}
34
+    public function getName() {
35
+        return 'Adjust LDAP user and group ldap_dn column lengths and add ldap_dn_hash columns';
36
+    }
37 37
 
38
-	public function preSchemaChange(IOutput $output, \Closure $schemaClosure, array $options) {
39
-		foreach (['ldap_user_mapping', 'ldap_group_mapping'] as $tableName) {
40
-			$this->processDuplicateUUIDs($tableName);
41
-		}
38
+    public function preSchemaChange(IOutput $output, \Closure $schemaClosure, array $options) {
39
+        foreach (['ldap_user_mapping', 'ldap_group_mapping'] as $tableName) {
40
+            $this->processDuplicateUUIDs($tableName);
41
+        }
42 42
 
43
-		/** @var ISchemaWrapper $schema */
44
-		$schema = $schemaClosure();
45
-		if ($schema->hasTable('ldap_group_mapping_backup')) {
46
-			// Previous upgrades of a broken release might have left an incomplete
47
-			// ldap_group_mapping_backup table. No need to recreate, but it
48
-			// should be empty.
49
-			// TRUNCATE is not available from Query Builder, but faster than DELETE FROM.
50
-			$sql = $this->dbc->getDatabasePlatform()->getTruncateTableSQL('`*PREFIX*ldap_group_mapping_backup`', false);
51
-			$this->dbc->executeStatement($sql);
52
-		}
53
-	}
43
+        /** @var ISchemaWrapper $schema */
44
+        $schema = $schemaClosure();
45
+        if ($schema->hasTable('ldap_group_mapping_backup')) {
46
+            // Previous upgrades of a broken release might have left an incomplete
47
+            // ldap_group_mapping_backup table. No need to recreate, but it
48
+            // should be empty.
49
+            // TRUNCATE is not available from Query Builder, but faster than DELETE FROM.
50
+            $sql = $this->dbc->getDatabasePlatform()->getTruncateTableSQL('`*PREFIX*ldap_group_mapping_backup`', false);
51
+            $this->dbc->executeStatement($sql);
52
+        }
53
+    }
54 54
 
55
-	/**
56
-	 * @param IOutput $output
57
-	 * @param Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
58
-	 * @param array $options
59
-	 * @return null|ISchemaWrapper
60
-	 */
61
-	public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper {
62
-		/** @var ISchemaWrapper $schema */
63
-		$schema = $schemaClosure();
55
+    /**
56
+     * @param IOutput $output
57
+     * @param Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
58
+     * @param array $options
59
+     * @return null|ISchemaWrapper
60
+     */
61
+    public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper {
62
+        /** @var ISchemaWrapper $schema */
63
+        $schema = $schemaClosure();
64 64
 
65
-		$changeSchema = false;
66
-		foreach (['ldap_user_mapping', 'ldap_group_mapping'] as $tableName) {
67
-			$table = $schema->getTable($tableName);
68
-			if (!$table->hasColumn('ldap_dn_hash')) {
69
-				$table->addColumn('ldap_dn_hash', Types::STRING, [
70
-					'notnull' => false,
71
-					'length' => 64,
72
-				]);
73
-				$changeSchema = true;
74
-				$this->hashColumnAddedToTables[] = $tableName;
75
-			}
76
-			$column = $table->getColumn('ldap_dn');
77
-			if ($tableName === 'ldap_user_mapping') {
78
-				if ($column->getLength() < 4000) {
79
-					$column->setLength(4000);
80
-					$changeSchema = true;
81
-				}
65
+        $changeSchema = false;
66
+        foreach (['ldap_user_mapping', 'ldap_group_mapping'] as $tableName) {
67
+            $table = $schema->getTable($tableName);
68
+            if (!$table->hasColumn('ldap_dn_hash')) {
69
+                $table->addColumn('ldap_dn_hash', Types::STRING, [
70
+                    'notnull' => false,
71
+                    'length' => 64,
72
+                ]);
73
+                $changeSchema = true;
74
+                $this->hashColumnAddedToTables[] = $tableName;
75
+            }
76
+            $column = $table->getColumn('ldap_dn');
77
+            if ($tableName === 'ldap_user_mapping') {
78
+                if ($column->getLength() < 4000) {
79
+                    $column->setLength(4000);
80
+                    $changeSchema = true;
81
+                }
82 82
 
83
-				if ($table->hasIndex('ldap_dn_users')) {
84
-					$table->dropIndex('ldap_dn_users');
85
-					$changeSchema = true;
86
-				}
87
-				if (!$table->hasIndex('ldap_user_dn_hashes')) {
88
-					$table->addUniqueIndex(['ldap_dn_hash'], 'ldap_user_dn_hashes');
89
-					$changeSchema = true;
90
-				}
91
-				if (!$table->hasIndex('ldap_user_directory_uuid')) {
92
-					$table->addUniqueIndex(['directory_uuid'], 'ldap_user_directory_uuid');
93
-					$changeSchema = true;
94
-				}
95
-			} elseif (!$schema->hasTable('ldap_group_mapping_backup')) {
96
-				// We need to copy the table twice to be able to change primary key, prepare the backup table
97
-				$table2 = $schema->createTable('ldap_group_mapping_backup');
98
-				$table2->addColumn('ldap_dn', Types::STRING, [
99
-					'notnull' => true,
100
-					'length' => 4000,
101
-					'default' => '',
102
-				]);
103
-				$table2->addColumn('owncloud_name', Types::STRING, [
104
-					'notnull' => true,
105
-					'length' => 64,
106
-					'default' => '',
107
-				]);
108
-				$table2->addColumn('directory_uuid', Types::STRING, [
109
-					'notnull' => true,
110
-					'length' => 255,
111
-					'default' => '',
112
-				]);
113
-				$table2->addColumn('ldap_dn_hash', Types::STRING, [
114
-					'notnull' => false,
115
-					'length' => 64,
116
-				]);
117
-				$table2->setPrimaryKey(['owncloud_name'], 'lgm_backup_primary');
118
-				$changeSchema = true;
119
-			}
120
-		}
83
+                if ($table->hasIndex('ldap_dn_users')) {
84
+                    $table->dropIndex('ldap_dn_users');
85
+                    $changeSchema = true;
86
+                }
87
+                if (!$table->hasIndex('ldap_user_dn_hashes')) {
88
+                    $table->addUniqueIndex(['ldap_dn_hash'], 'ldap_user_dn_hashes');
89
+                    $changeSchema = true;
90
+                }
91
+                if (!$table->hasIndex('ldap_user_directory_uuid')) {
92
+                    $table->addUniqueIndex(['directory_uuid'], 'ldap_user_directory_uuid');
93
+                    $changeSchema = true;
94
+                }
95
+            } elseif (!$schema->hasTable('ldap_group_mapping_backup')) {
96
+                // We need to copy the table twice to be able to change primary key, prepare the backup table
97
+                $table2 = $schema->createTable('ldap_group_mapping_backup');
98
+                $table2->addColumn('ldap_dn', Types::STRING, [
99
+                    'notnull' => true,
100
+                    'length' => 4000,
101
+                    'default' => '',
102
+                ]);
103
+                $table2->addColumn('owncloud_name', Types::STRING, [
104
+                    'notnull' => true,
105
+                    'length' => 64,
106
+                    'default' => '',
107
+                ]);
108
+                $table2->addColumn('directory_uuid', Types::STRING, [
109
+                    'notnull' => true,
110
+                    'length' => 255,
111
+                    'default' => '',
112
+                ]);
113
+                $table2->addColumn('ldap_dn_hash', Types::STRING, [
114
+                    'notnull' => false,
115
+                    'length' => 64,
116
+                ]);
117
+                $table2->setPrimaryKey(['owncloud_name'], 'lgm_backup_primary');
118
+                $changeSchema = true;
119
+            }
120
+        }
121 121
 
122
-		return $changeSchema ? $schema : null;
123
-	}
122
+        return $changeSchema ? $schema : null;
123
+    }
124 124
 
125
-	/**
126
-	 * @param IOutput $output
127
-	 * @param Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
128
-	 * @param array $options
129
-	 */
130
-	public function postSchemaChange(IOutput $output, Closure $schemaClosure, array $options) {
131
-		$this->handleDNHashes('ldap_group_mapping');
132
-		$this->handleDNHashes('ldap_user_mapping');
133
-	}
125
+    /**
126
+     * @param IOutput $output
127
+     * @param Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
128
+     * @param array $options
129
+     */
130
+    public function postSchemaChange(IOutput $output, Closure $schemaClosure, array $options) {
131
+        $this->handleDNHashes('ldap_group_mapping');
132
+        $this->handleDNHashes('ldap_user_mapping');
133
+    }
134 134
 
135
-	protected function handleDNHashes(string $table): void {
136
-		$select = $this->getSelectQuery($table);
137
-		$update = $this->getUpdateQuery($table);
135
+    protected function handleDNHashes(string $table): void {
136
+        $select = $this->getSelectQuery($table);
137
+        $update = $this->getUpdateQuery($table);
138 138
 
139
-		$result = $select->executeQuery();
140
-		while ($row = $result->fetch()) {
141
-			$dnHash = hash('sha256', $row['ldap_dn'], false);
142
-			$update->setParameter('name', $row['owncloud_name']);
143
-			$update->setParameter('dn_hash', $dnHash);
144
-			try {
145
-				$update->executeStatement();
146
-			} catch (Exception $e) {
147
-				$this->logger->error('Failed to add hash "{dnHash}" ("{name}" of {table})',
148
-					[
149
-						'app' => 'user_ldap',
150
-						'name' => $row['owncloud_name'],
151
-						'dnHash' => $dnHash,
152
-						'table' => $table,
153
-						'exception' => $e,
154
-					]
155
-				);
156
-			}
157
-		}
158
-		$result->closeCursor();
159
-	}
139
+        $result = $select->executeQuery();
140
+        while ($row = $result->fetch()) {
141
+            $dnHash = hash('sha256', $row['ldap_dn'], false);
142
+            $update->setParameter('name', $row['owncloud_name']);
143
+            $update->setParameter('dn_hash', $dnHash);
144
+            try {
145
+                $update->executeStatement();
146
+            } catch (Exception $e) {
147
+                $this->logger->error('Failed to add hash "{dnHash}" ("{name}" of {table})',
148
+                    [
149
+                        'app' => 'user_ldap',
150
+                        'name' => $row['owncloud_name'],
151
+                        'dnHash' => $dnHash,
152
+                        'table' => $table,
153
+                        'exception' => $e,
154
+                    ]
155
+                );
156
+            }
157
+        }
158
+        $result->closeCursor();
159
+    }
160 160
 
161
-	protected function getSelectQuery(string $table): IQueryBuilder {
162
-		$qb = $this->dbc->getQueryBuilder();
163
-		$qb->select('owncloud_name', 'ldap_dn')
164
-			->from($table);
161
+    protected function getSelectQuery(string $table): IQueryBuilder {
162
+        $qb = $this->dbc->getQueryBuilder();
163
+        $qb->select('owncloud_name', 'ldap_dn')
164
+            ->from($table);
165 165
 
166
-		// when added we may run into risk that it's read from a DB node
167
-		// where the column is not present. Then the where clause is also
168
-		// not necessary since all rows qualify.
169
-		if (!in_array($table, $this->hashColumnAddedToTables, true)) {
170
-			$qb->where($qb->expr()->isNull('ldap_dn_hash'));
171
-		}
166
+        // when added we may run into risk that it's read from a DB node
167
+        // where the column is not present. Then the where clause is also
168
+        // not necessary since all rows qualify.
169
+        if (!in_array($table, $this->hashColumnAddedToTables, true)) {
170
+            $qb->where($qb->expr()->isNull('ldap_dn_hash'));
171
+        }
172 172
 
173
-		return $qb;
174
-	}
173
+        return $qb;
174
+    }
175 175
 
176
-	protected function getUpdateQuery(string $table): IQueryBuilder {
177
-		$qb = $this->dbc->getQueryBuilder();
178
-		$qb->update($table)
179
-			->set('ldap_dn_hash', $qb->createParameter('dn_hash'))
180
-			->where($qb->expr()->eq('owncloud_name', $qb->createParameter('name')));
181
-		return $qb;
182
-	}
176
+    protected function getUpdateQuery(string $table): IQueryBuilder {
177
+        $qb = $this->dbc->getQueryBuilder();
178
+        $qb->update($table)
179
+            ->set('ldap_dn_hash', $qb->createParameter('dn_hash'))
180
+            ->where($qb->expr()->eq('owncloud_name', $qb->createParameter('name')));
181
+        return $qb;
182
+    }
183 183
 
184
-	/**
185
-	 * @throws Exception
186
-	 */
187
-	protected function processDuplicateUUIDs(string $table): void {
188
-		$uuids = $this->getDuplicatedUuids($table);
189
-		$idsWithUuidToInvalidate = [];
190
-		foreach ($uuids as $uuid) {
191
-			array_push($idsWithUuidToInvalidate, ...$this->getNextcloudIdsByUuid($table, $uuid));
192
-		}
193
-		$this->invalidateUuids($table, $idsWithUuidToInvalidate);
194
-	}
184
+    /**
185
+     * @throws Exception
186
+     */
187
+    protected function processDuplicateUUIDs(string $table): void {
188
+        $uuids = $this->getDuplicatedUuids($table);
189
+        $idsWithUuidToInvalidate = [];
190
+        foreach ($uuids as $uuid) {
191
+            array_push($idsWithUuidToInvalidate, ...$this->getNextcloudIdsByUuid($table, $uuid));
192
+        }
193
+        $this->invalidateUuids($table, $idsWithUuidToInvalidate);
194
+    }
195 195
 
196
-	/**
197
-	 * @throws Exception
198
-	 */
199
-	protected function invalidateUuids(string $table, array $idList): void {
200
-		$update = $this->dbc->getQueryBuilder();
201
-		$update->update($table)
202
-			->set('directory_uuid', $update->createParameter('invalidatedUuid'))
203
-			->where($update->expr()->eq('owncloud_name', $update->createParameter('nextcloudId')));
196
+    /**
197
+     * @throws Exception
198
+     */
199
+    protected function invalidateUuids(string $table, array $idList): void {
200
+        $update = $this->dbc->getQueryBuilder();
201
+        $update->update($table)
202
+            ->set('directory_uuid', $update->createParameter('invalidatedUuid'))
203
+            ->where($update->expr()->eq('owncloud_name', $update->createParameter('nextcloudId')));
204 204
 
205
-		while ($nextcloudId = array_shift($idList)) {
206
-			$update->setParameter('nextcloudId', $nextcloudId);
207
-			$update->setParameter('invalidatedUuid', 'invalidated_' . \bin2hex(\random_bytes(6)));
208
-			try {
209
-				$update->executeStatement();
210
-				$this->logger->warning(
211
-					'LDAP user or group with ID {nid} has a duplicated UUID value which therefore was invalidated. You may double-check your LDAP configuration and trigger an update of the UUID.',
212
-					[
213
-						'app' => 'user_ldap',
214
-						'nid' => $nextcloudId,
215
-					]
216
-				);
217
-			} catch (Exception $e) {
218
-				// Catch possible, but unlikely duplications if new invalidated errors.
219
-				// There is the theoretical chance of an infinity loop is, when
220
-				// the constraint violation has a different background. I cannot
221
-				// think of one at the moment.
222
-				if ($e->getReason() !== Exception::REASON_CONSTRAINT_VIOLATION) {
223
-					throw $e;
224
-				}
225
-				$idList[] = $nextcloudId;
226
-			}
227
-		}
228
-	}
205
+        while ($nextcloudId = array_shift($idList)) {
206
+            $update->setParameter('nextcloudId', $nextcloudId);
207
+            $update->setParameter('invalidatedUuid', 'invalidated_' . \bin2hex(\random_bytes(6)));
208
+            try {
209
+                $update->executeStatement();
210
+                $this->logger->warning(
211
+                    'LDAP user or group with ID {nid} has a duplicated UUID value which therefore was invalidated. You may double-check your LDAP configuration and trigger an update of the UUID.',
212
+                    [
213
+                        'app' => 'user_ldap',
214
+                        'nid' => $nextcloudId,
215
+                    ]
216
+                );
217
+            } catch (Exception $e) {
218
+                // Catch possible, but unlikely duplications if new invalidated errors.
219
+                // There is the theoretical chance of an infinity loop is, when
220
+                // the constraint violation has a different background. I cannot
221
+                // think of one at the moment.
222
+                if ($e->getReason() !== Exception::REASON_CONSTRAINT_VIOLATION) {
223
+                    throw $e;
224
+                }
225
+                $idList[] = $nextcloudId;
226
+            }
227
+        }
228
+    }
229 229
 
230
-	/**
231
-	 * @throws \OCP\DB\Exception
232
-	 * @return array<string>
233
-	 */
234
-	protected function getNextcloudIdsByUuid(string $table, string $uuid): array {
235
-		$select = $this->dbc->getQueryBuilder();
236
-		$select->select('owncloud_name')
237
-			->from($table)
238
-			->where($select->expr()->eq('directory_uuid', $select->createNamedParameter($uuid)));
230
+    /**
231
+     * @throws \OCP\DB\Exception
232
+     * @return array<string>
233
+     */
234
+    protected function getNextcloudIdsByUuid(string $table, string $uuid): array {
235
+        $select = $this->dbc->getQueryBuilder();
236
+        $select->select('owncloud_name')
237
+            ->from($table)
238
+            ->where($select->expr()->eq('directory_uuid', $select->createNamedParameter($uuid)));
239 239
 
240
-		$result = $select->executeQuery();
241
-		$idList = [];
242
-		while (($id = $result->fetchOne()) !== false) {
243
-			$idList[] = $id;
244
-		}
245
-		$result->closeCursor();
246
-		return $idList;
247
-	}
240
+        $result = $select->executeQuery();
241
+        $idList = [];
242
+        while (($id = $result->fetchOne()) !== false) {
243
+            $idList[] = $id;
244
+        }
245
+        $result->closeCursor();
246
+        return $idList;
247
+    }
248 248
 
249
-	/**
250
-	 * @return Generator<string>
251
-	 * @throws \OCP\DB\Exception
252
-	 */
253
-	protected function getDuplicatedUuids(string $table): Generator {
254
-		$select = $this->dbc->getQueryBuilder();
255
-		$select->select('directory_uuid')
256
-			->from($table)
257
-			->groupBy('directory_uuid')
258
-			->having($select->expr()->gt($select->func()->count('owncloud_name'), $select->createNamedParameter(1)));
249
+    /**
250
+     * @return Generator<string>
251
+     * @throws \OCP\DB\Exception
252
+     */
253
+    protected function getDuplicatedUuids(string $table): Generator {
254
+        $select = $this->dbc->getQueryBuilder();
255
+        $select->select('directory_uuid')
256
+            ->from($table)
257
+            ->groupBy('directory_uuid')
258
+            ->having($select->expr()->gt($select->func()->count('owncloud_name'), $select->createNamedParameter(1)));
259 259
 
260
-		$result = $select->executeQuery();
261
-		while (($uuid = $result->fetchOne()) !== false) {
262
-			yield $uuid;
263
-		}
264
-		$result->closeCursor();
265
-	}
260
+        $result = $select->executeQuery();
261
+        while (($uuid = $result->fetchOne()) !== false) {
262
+            yield $uuid;
263
+        }
264
+        $result->closeCursor();
265
+    }
266 266
 }
Please login to merge, or discard this patch.
apps/dav/lib/Connector/Sabre/Exception/BadGateway.php 1 patch
Indentation   +8 added lines, -8 removed lines patch added patch discarded remove patch
@@ -29,12 +29,12 @@
 block discarded – undo
29 29
  */
30 30
 class BadGateway extends \Sabre\DAV\Exception {
31 31
 
32
-	/**
33
-	 * Returns the HTTP status code for this exception
34
-	 *
35
-	 * @return int
36
-	 */
37
-	public function getHTTPCode() {
38
-		return 502;
39
-	}
32
+    /**
33
+     * Returns the HTTP status code for this exception
34
+     *
35
+     * @return int
36
+     */
37
+    public function getHTTPCode() {
38
+        return 502;
39
+    }
40 40
 }
Please login to merge, or discard this patch.
lib/private/Files/Config/CachedMountFileInfo.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -53,6 +53,6 @@
 block discarded – undo
53 53
 	}
54 54
 
55 55
 	public function getPath(): string {
56
-		return $this->getMountPoint() . $this->getInternalPath();
56
+		return $this->getMountPoint().$this->getInternalPath();
57 57
 	}
58 58
 }
Please login to merge, or discard this patch.
Indentation   +24 added lines, -24 removed lines patch added patch discarded remove patch
@@ -9,31 +9,31 @@
 block discarded – undo
9 9
 use OCP\IUser;
10 10
 
11 11
 class CachedMountFileInfo extends CachedMountInfo implements ICachedMountFileInfo {
12
-	private string $internalPath;
12
+    private string $internalPath;
13 13
 
14
-	public function __construct(
15
-		IUser $user,
16
-		int $storageId,
17
-		int $rootId,
18
-		string $mountPoint,
19
-		?int $mountId,
20
-		string $mountProvider,
21
-		string $rootInternalPath,
22
-		string $internalPath,
23
-	) {
24
-		parent::__construct($user, $storageId, $rootId, $mountPoint, $mountProvider, $mountId, $rootInternalPath);
25
-		$this->internalPath = $internalPath;
26
-	}
14
+    public function __construct(
15
+        IUser $user,
16
+        int $storageId,
17
+        int $rootId,
18
+        string $mountPoint,
19
+        ?int $mountId,
20
+        string $mountProvider,
21
+        string $rootInternalPath,
22
+        string $internalPath,
23
+    ) {
24
+        parent::__construct($user, $storageId, $rootId, $mountPoint, $mountProvider, $mountId, $rootInternalPath);
25
+        $this->internalPath = $internalPath;
26
+    }
27 27
 
28
-	public function getInternalPath(): string {
29
-		if ($this->getRootInternalPath()) {
30
-			return substr($this->internalPath, strlen($this->getRootInternalPath()) + 1);
31
-		} else {
32
-			return $this->internalPath;
33
-		}
34
-	}
28
+    public function getInternalPath(): string {
29
+        if ($this->getRootInternalPath()) {
30
+            return substr($this->internalPath, strlen($this->getRootInternalPath()) + 1);
31
+        } else {
32
+            return $this->internalPath;
33
+        }
34
+    }
35 35
 
36
-	public function getPath(): string {
37
-		return $this->getMountPoint() . $this->getInternalPath();
38
-	}
36
+    public function getPath(): string {
37
+        return $this->getMountPoint() . $this->getInternalPath();
38
+    }
39 39
 }
Please login to merge, or discard this patch.
lib/private/Files/Mount/ObjectStorePreviewCacheMountProvider.php 2 patches
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -67,7 +67,7 @@  discard block
 block discarded – undo
67 67
 			foreach ($directoryRange as $child) {
68 68
 				$mountPoints[] = new MountPoint(
69 69
 					AppdataPreviewObjectStoreStorage::class,
70
-					'/appdata_' . $instanceId . '/preview/' . $parent . '/' . $child,
70
+					'/appdata_'.$instanceId.'/preview/'.$parent.'/'.$child,
71 71
 					$this->getMultiBucketObjectStore($i),
72 72
 					$loader,
73 73
 					null,
@@ -82,13 +82,13 @@  discard block
 block discarded – undo
82 82
 		$fakeRootStorage = new ObjectStoreStorage($rootStorageArguments);
83 83
 		$fakeRootStorageJail = new Jail([
84 84
 			'storage' => $fakeRootStorage,
85
-			'root' => '/appdata_' . $instanceId . '/preview',
85
+			'root' => '/appdata_'.$instanceId.'/preview',
86 86
 		]);
87 87
 
88 88
 		// add a fallback location to be able to fetch existing previews from the old bucket
89 89
 		$mountPoints[] = new MountPoint(
90 90
 			$fakeRootStorageJail,
91
-			'/appdata_' . $instanceId . '/preview/old-multibucket',
91
+			'/appdata_'.$instanceId.'/preview/old-multibucket',
92 92
 			null,
93 93
 			$loader,
94 94
 			null,
Please login to merge, or discard this patch.
Indentation   +100 added lines, -100 removed lines patch added patch discarded remove patch
@@ -37,119 +37,119 @@
 block discarded – undo
37 37
  * Mount provider for object store app data folder for previews
38 38
  */
39 39
 class ObjectStorePreviewCacheMountProvider implements IRootMountProvider {
40
-	private LoggerInterface $logger;
41
-	/** @var IConfig */
42
-	private $config;
43
-
44
-	public function __construct(LoggerInterface $logger, IConfig $config) {
45
-		$this->logger = $logger;
46
-		$this->config = $config;
47
-	}
48
-
49
-	/**
50
-	 * @return MountPoint[]
51
-	 * @throws \Exception
52
-	 */
53
-	public function getRootMounts(IStorageFactory $loader): array {
54
-		if (!is_array($this->config->getSystemValue('objectstore_multibucket'))) {
55
-			return [];
56
-		}
57
-		if ($this->config->getSystemValue('objectstore.multibucket.preview-distribution', false) !== true) {
58
-			return [];
59
-		}
60
-
61
-		$instanceId = $this->config->getSystemValueString('instanceid', '');
62
-		$mountPoints = [];
63
-		$directoryRange = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'];
64
-		$i = 0;
65
-		foreach ($directoryRange as $parent) {
66
-			foreach ($directoryRange as $child) {
67
-				$mountPoints[] = new MountPoint(
68
-					AppdataPreviewObjectStoreStorage::class,
69
-					'/appdata_' . $instanceId . '/preview/' . $parent . '/' . $child,
70
-					$this->getMultiBucketObjectStore($i),
71
-					$loader,
72
-					null,
73
-					null,
74
-					self::class
75
-				);
76
-				$i++;
77
-			}
78
-		}
79
-
80
-		$rootStorageArguments = $this->getMultiBucketObjectStoreForRoot();
81
-		$fakeRootStorage = new ObjectStoreStorage($rootStorageArguments);
82
-		$fakeRootStorageJail = new Jail([
83
-			'storage' => $fakeRootStorage,
84
-			'root' => '/appdata_' . $instanceId . '/preview',
85
-		]);
86
-
87
-		// add a fallback location to be able to fetch existing previews from the old bucket
88
-		$mountPoints[] = new MountPoint(
89
-			$fakeRootStorageJail,
90
-			'/appdata_' . $instanceId . '/preview/old-multibucket',
91
-			null,
92
-			$loader,
93
-			null,
94
-			null,
95
-			self::class
96
-		);
97
-
98
-		return $mountPoints;
99
-	}
100
-
101
-	protected function getMultiBucketObjectStore(int $number): array {
102
-		$config = $this->config->getSystemValue('objectstore_multibucket');
103
-
104
-		// sanity checks
105
-		if (empty($config['class'])) {
106
-			$this->logger->error('No class given for objectstore', ['app' => 'files']);
107
-		}
108
-		if (!isset($config['arguments'])) {
109
-			$config['arguments'] = [];
110
-		}
111
-
112
-		/*
40
+    private LoggerInterface $logger;
41
+    /** @var IConfig */
42
+    private $config;
43
+
44
+    public function __construct(LoggerInterface $logger, IConfig $config) {
45
+        $this->logger = $logger;
46
+        $this->config = $config;
47
+    }
48
+
49
+    /**
50
+     * @return MountPoint[]
51
+     * @throws \Exception
52
+     */
53
+    public function getRootMounts(IStorageFactory $loader): array {
54
+        if (!is_array($this->config->getSystemValue('objectstore_multibucket'))) {
55
+            return [];
56
+        }
57
+        if ($this->config->getSystemValue('objectstore.multibucket.preview-distribution', false) !== true) {
58
+            return [];
59
+        }
60
+
61
+        $instanceId = $this->config->getSystemValueString('instanceid', '');
62
+        $mountPoints = [];
63
+        $directoryRange = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'];
64
+        $i = 0;
65
+        foreach ($directoryRange as $parent) {
66
+            foreach ($directoryRange as $child) {
67
+                $mountPoints[] = new MountPoint(
68
+                    AppdataPreviewObjectStoreStorage::class,
69
+                    '/appdata_' . $instanceId . '/preview/' . $parent . '/' . $child,
70
+                    $this->getMultiBucketObjectStore($i),
71
+                    $loader,
72
+                    null,
73
+                    null,
74
+                    self::class
75
+                );
76
+                $i++;
77
+            }
78
+        }
79
+
80
+        $rootStorageArguments = $this->getMultiBucketObjectStoreForRoot();
81
+        $fakeRootStorage = new ObjectStoreStorage($rootStorageArguments);
82
+        $fakeRootStorageJail = new Jail([
83
+            'storage' => $fakeRootStorage,
84
+            'root' => '/appdata_' . $instanceId . '/preview',
85
+        ]);
86
+
87
+        // add a fallback location to be able to fetch existing previews from the old bucket
88
+        $mountPoints[] = new MountPoint(
89
+            $fakeRootStorageJail,
90
+            '/appdata_' . $instanceId . '/preview/old-multibucket',
91
+            null,
92
+            $loader,
93
+            null,
94
+            null,
95
+            self::class
96
+        );
97
+
98
+        return $mountPoints;
99
+    }
100
+
101
+    protected function getMultiBucketObjectStore(int $number): array {
102
+        $config = $this->config->getSystemValue('objectstore_multibucket');
103
+
104
+        // sanity checks
105
+        if (empty($config['class'])) {
106
+            $this->logger->error('No class given for objectstore', ['app' => 'files']);
107
+        }
108
+        if (!isset($config['arguments'])) {
109
+            $config['arguments'] = [];
110
+        }
111
+
112
+        /*
113 113
 		 * Use any provided bucket argument as prefix
114 114
 		 * and add the mapping from parent/child => bucket
115 115
 		 */
116
-		if (!isset($config['arguments']['bucket'])) {
117
-			$config['arguments']['bucket'] = '';
118
-		}
116
+        if (!isset($config['arguments']['bucket'])) {
117
+            $config['arguments']['bucket'] = '';
118
+        }
119 119
 
120
-		$config['arguments']['bucket'] .= "-preview-$number";
120
+        $config['arguments']['bucket'] .= "-preview-$number";
121 121
 
122
-		// instantiate object store implementation
123
-		$config['arguments']['objectstore'] = new $config['class']($config['arguments']);
122
+        // instantiate object store implementation
123
+        $config['arguments']['objectstore'] = new $config['class']($config['arguments']);
124 124
 
125
-		$config['arguments']['internal-id'] = $number;
125
+        $config['arguments']['internal-id'] = $number;
126 126
 
127
-		return $config['arguments'];
128
-	}
127
+        return $config['arguments'];
128
+    }
129 129
 
130
-	protected function getMultiBucketObjectStoreForRoot(): array {
131
-		$config = $this->config->getSystemValue('objectstore_multibucket');
130
+    protected function getMultiBucketObjectStoreForRoot(): array {
131
+        $config = $this->config->getSystemValue('objectstore_multibucket');
132 132
 
133
-		// sanity checks
134
-		if (empty($config['class'])) {
135
-			$this->logger->error('No class given for objectstore', ['app' => 'files']);
136
-		}
137
-		if (!isset($config['arguments'])) {
138
-			$config['arguments'] = [];
139
-		}
133
+        // sanity checks
134
+        if (empty($config['class'])) {
135
+            $this->logger->error('No class given for objectstore', ['app' => 'files']);
136
+        }
137
+        if (!isset($config['arguments'])) {
138
+            $config['arguments'] = [];
139
+        }
140 140
 
141
-		/*
141
+        /*
142 142
 		 * Use any provided bucket argument as prefix
143 143
 		 * and add the mapping from parent/child => bucket
144 144
 		 */
145
-		if (!isset($config['arguments']['bucket'])) {
146
-			$config['arguments']['bucket'] = '';
147
-		}
148
-		$config['arguments']['bucket'] .= '0';
145
+        if (!isset($config['arguments']['bucket'])) {
146
+            $config['arguments']['bucket'] = '';
147
+        }
148
+        $config['arguments']['bucket'] .= '0';
149 149
 
150
-		// instantiate object store implementation
151
-		$config['arguments']['objectstore'] = new $config['class']($config['arguments']);
150
+        // instantiate object store implementation
151
+        $config['arguments']['objectstore'] = new $config['class']($config['arguments']);
152 152
 
153
-		return $config['arguments'];
154
-	}
153
+        return $config['arguments'];
154
+    }
155 155
 }
Please login to merge, or discard this patch.
lib/private/Preview/OpenDocument.php 1 patch
Indentation   +16 added lines, -16 removed lines patch added patch discarded remove patch
@@ -29,22 +29,22 @@
 block discarded – undo
29 29
 use OCP\IImage;
30 30
 
31 31
 class OpenDocument extends Bundled {
32
-	/**
33
-	 * {@inheritDoc}
34
-	 */
35
-	public function getMimeType(): string {
36
-		return '/application\/vnd.oasis.opendocument.*/';
37
-	}
32
+    /**
33
+     * {@inheritDoc}
34
+     */
35
+    public function getMimeType(): string {
36
+        return '/application\/vnd.oasis.opendocument.*/';
37
+    }
38 38
 
39 39
 
40
-	/**
41
-	 * @inheritDoc
42
-	 */
43
-	public function getThumbnail(File $file, int $maxX, int $maxY): ?IImage {
44
-		$image = $this->extractThumbnail($file, 'Thumbnails/thumbnail.png');
45
-		if (($image !== null) && $image->valid()) {
46
-			return $image;
47
-		}
48
-		return null;
49
-	}
40
+    /**
41
+     * @inheritDoc
42
+     */
43
+    public function getThumbnail(File $file, int $maxX, int $maxY): ?IImage {
44
+        $image = $this->extractThumbnail($file, 'Thumbnails/thumbnail.png');
45
+        if (($image !== null) && $image->valid()) {
46
+            return $image;
47
+        }
48
+        return null;
49
+    }
50 50
 }
Please login to merge, or discard this patch.
lib/private/Preview/Krita.php 1 patch
Indentation   +20 added lines, -20 removed lines patch added patch discarded remove patch
@@ -26,26 +26,26 @@
 block discarded – undo
26 26
 use OCP\IImage;
27 27
 
28 28
 class Krita extends Bundled {
29
-	/**
30
-	 * {@inheritDoc}
31
-	 */
32
-	public function getMimeType(): string {
33
-		return '/application\/x-krita/';
34
-	}
29
+    /**
30
+     * {@inheritDoc}
31
+     */
32
+    public function getMimeType(): string {
33
+        return '/application\/x-krita/';
34
+    }
35 35
 
36 36
 
37
-	/**
38
-	 * @inheritDoc
39
-	 */
40
-	public function getThumbnail(File $file, int $maxX, int $maxY): ?IImage {
41
-		$image = $this->extractThumbnail($file, 'mergedimage.png');
42
-		if (($image !== null) && $image->valid()) {
43
-			return $image;
44
-		}
45
-		$image = $this->extractThumbnail($file, 'preview.png');
46
-		if (($image !== null) && $image->valid()) {
47
-			return $image;
48
-		}
49
-		return null;
50
-	}
37
+    /**
38
+     * @inheritDoc
39
+     */
40
+    public function getThumbnail(File $file, int $maxX, int $maxY): ?IImage {
41
+        $image = $this->extractThumbnail($file, 'mergedimage.png');
42
+        if (($image !== null) && $image->valid()) {
43
+            return $image;
44
+        }
45
+        $image = $this->extractThumbnail($file, 'preview.png');
46
+        if (($image !== null) && $image->valid()) {
47
+            return $image;
48
+        }
49
+        return null;
50
+    }
51 51
 }
Please login to merge, or discard this patch.
lib/public/Files/Config/ICachedMountFileInfo.php 1 patch
Indentation   +12 added lines, -12 removed lines patch added patch discarded remove patch
@@ -28,17 +28,17 @@
 block discarded – undo
28 28
  * @since 13.0.0
29 29
  */
30 30
 interface ICachedMountFileInfo extends ICachedMountInfo {
31
-	/**
32
-	 * Return the path for the file within the cached mount
33
-	 *
34
-	 * @return string
35
-	 * @since 13.0.0
36
-	 */
37
-	public function getInternalPath(): string;
31
+    /**
32
+     * Return the path for the file within the cached mount
33
+     *
34
+     * @return string
35
+     * @since 13.0.0
36
+     */
37
+    public function getInternalPath(): string;
38 38
 
39
-	/**
40
-	 * @return string
41
-	 * @since 13.0.0
42
-	 */
43
-	public function getPath(): string;
39
+    /**
40
+     * @return string
41
+     * @since 13.0.0
42
+     */
43
+    public function getPath(): string;
44 44
 }
Please login to merge, or discard this patch.
lib/private/Group/MetaData.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -78,7 +78,7 @@
 block discarded – undo
78 78
 	 * @param string $userSearch the pattern users are search for
79 79
 	 */
80 80
 	public function get(string $groupSearch = '', string $userSearch = ''): array {
81
-		$key = $groupSearch . '::' . $userSearch;
81
+		$key = $groupSearch.'::'.$userSearch;
82 82
 		if (isset($this->metaData[$key])) {
83 83
 			return $this->metaData[$key];
84 84
 		}
Please login to merge, or discard this patch.
Indentation   +151 added lines, -151 removed lines patch added patch discarded remove patch
@@ -13,155 +13,155 @@
 block discarded – undo
13 13
 use OCP\IUserSession;
14 14
 
15 15
 class MetaData {
16
-	public const SORT_NONE = 0;
17
-	public const SORT_USERCOUNT = 1; // May have performance issues on LDAP backends
18
-	public const SORT_GROUPNAME = 2;
19
-
20
-	/** @var array */
21
-	protected $metaData = [];
22
-	/** @var int */
23
-	protected $sorting = self::SORT_NONE;
24
-
25
-	/**
26
-	 * @param string $user the uid of the current user
27
-	 * @param bool $isAdmin whether the current users is an admin
28
-	 */
29
-	public function __construct(
30
-		private string $user,
31
-		private bool $isAdmin,
32
-		private bool $isDelegatedAdmin,
33
-		private IGroupManager $groupManager,
34
-		private IUserSession $userSession,
35
-	) {
36
-	}
37
-
38
-	/**
39
-	 * returns an array with meta data about all available groups
40
-	 * the array is structured as follows:
41
-	 * [0] array containing meta data about admin groups
42
-	 * [1] array containing meta data about unprivileged groups
43
-	 * @param string $groupSearch only effective when instance was created with
44
-	 *                            isAdmin being true
45
-	 * @param string $userSearch the pattern users are search for
46
-	 */
47
-	public function get(string $groupSearch = '', string $userSearch = ''): array {
48
-		$key = $groupSearch . '::' . $userSearch;
49
-		if (isset($this->metaData[$key])) {
50
-			return $this->metaData[$key];
51
-		}
52
-
53
-		$adminGroups = [];
54
-		$groups = [];
55
-		$sortGroupsIndex = 0;
56
-		$sortGroupsKeys = [];
57
-		$sortAdminGroupsIndex = 0;
58
-		$sortAdminGroupsKeys = [];
59
-
60
-		foreach ($this->getGroups($groupSearch) as $group) {
61
-			$groupMetaData = $this->generateGroupMetaData($group, $userSearch);
62
-			if (strtolower($group->getGID()) !== 'admin') {
63
-				$this->addEntry(
64
-					$groups,
65
-					$sortGroupsKeys,
66
-					$sortGroupsIndex,
67
-					$groupMetaData);
68
-			} else {
69
-				//admin group is hard coded to 'admin' for now. In future,
70
-				//backends may define admin groups too. Then the if statement
71
-				//has to be adjusted accordingly.
72
-				$this->addEntry(
73
-					$adminGroups,
74
-					$sortAdminGroupsKeys,
75
-					$sortAdminGroupsIndex,
76
-					$groupMetaData);
77
-			}
78
-		}
79
-
80
-		//whether sorting is necessary is will be checked in sort()
81
-		$this->sort($groups, $sortGroupsKeys);
82
-		$this->sort($adminGroups, $sortAdminGroupsKeys);
83
-
84
-		$this->metaData[$key] = [$adminGroups, $groups];
85
-		return $this->metaData[$key];
86
-	}
87
-
88
-	/**
89
-	 * sets the sort mode, see SORT_* constants for supported modes
90
-	 */
91
-	public function setSorting(int $sortMode): void {
92
-		switch ($sortMode) {
93
-			case self::SORT_USERCOUNT:
94
-			case self::SORT_GROUPNAME:
95
-				$this->sorting = $sortMode;
96
-				break;
97
-
98
-			default:
99
-				$this->sorting = self::SORT_NONE;
100
-		}
101
-	}
102
-
103
-	/**
104
-	 * adds an group entry to the resulting array
105
-	 * @param array $entries the resulting array, by reference
106
-	 * @param array $sortKeys the sort key array, by reference
107
-	 * @param int $sortIndex the sort key index, by reference
108
-	 * @param array $data the group's meta data as returned by generateGroupMetaData()
109
-	 */
110
-	private function addEntry(array &$entries, array &$sortKeys, int &$sortIndex, array $data): void {
111
-		$entries[] = $data;
112
-		if ($this->sorting === self::SORT_USERCOUNT) {
113
-			$sortKeys[$sortIndex] = $data['usercount'];
114
-			$sortIndex++;
115
-		} elseif ($this->sorting === self::SORT_GROUPNAME) {
116
-			$sortKeys[$sortIndex] = $data['name'];
117
-			$sortIndex++;
118
-		}
119
-	}
120
-
121
-	/**
122
-	 * creates an array containing the group meta data
123
-	 * @return array with the keys 'id', 'name', 'usercount' and 'disabled'
124
-	 */
125
-	private function generateGroupMetaData(IGroup $group, string $userSearch): array {
126
-		return [
127
-			'id' => $group->getGID(),
128
-			'name' => $group->getDisplayName(),
129
-			'usercount' => $this->sorting === self::SORT_USERCOUNT ? $group->count($userSearch) : 0,
130
-			'disabled' => $group->countDisabled(),
131
-			'canAdd' => $group->canAddUser(),
132
-			'canRemove' => $group->canRemoveUser(),
133
-		];
134
-	}
135
-
136
-	/**
137
-	 * sorts the result array, if applicable
138
-	 * @param array $entries the result array, by reference
139
-	 * @param array $sortKeys the array containing the sort keys
140
-	 */
141
-	private function sort(array &$entries, array $sortKeys): void {
142
-		if ($this->sorting === self::SORT_USERCOUNT) {
143
-			array_multisort($sortKeys, SORT_DESC, $entries);
144
-		} elseif ($this->sorting === self::SORT_GROUPNAME) {
145
-			array_multisort($sortKeys, SORT_ASC, $entries);
146
-		}
147
-	}
148
-
149
-	/**
150
-	 * returns the available groups
151
-	 * @return IGroup[]
152
-	 */
153
-	public function getGroups(string $search = ''): array {
154
-		if ($this->isAdmin || $this->isDelegatedAdmin) {
155
-			return $this->groupManager->search($search);
156
-		} else {
157
-			$userObject = $this->userSession->getUser();
158
-			if ($userObject !== null && $this->groupManager instanceof GroupManager) {
159
-				$groups = $this->groupManager->getSubAdmin()->getSubAdminsGroups($userObject);
160
-			} else {
161
-				$groups = [];
162
-			}
163
-
164
-			return $groups;
165
-		}
166
-	}
16
+    public const SORT_NONE = 0;
17
+    public const SORT_USERCOUNT = 1; // May have performance issues on LDAP backends
18
+    public const SORT_GROUPNAME = 2;
19
+
20
+    /** @var array */
21
+    protected $metaData = [];
22
+    /** @var int */
23
+    protected $sorting = self::SORT_NONE;
24
+
25
+    /**
26
+     * @param string $user the uid of the current user
27
+     * @param bool $isAdmin whether the current users is an admin
28
+     */
29
+    public function __construct(
30
+        private string $user,
31
+        private bool $isAdmin,
32
+        private bool $isDelegatedAdmin,
33
+        private IGroupManager $groupManager,
34
+        private IUserSession $userSession,
35
+    ) {
36
+    }
37
+
38
+    /**
39
+     * returns an array with meta data about all available groups
40
+     * the array is structured as follows:
41
+     * [0] array containing meta data about admin groups
42
+     * [1] array containing meta data about unprivileged groups
43
+     * @param string $groupSearch only effective when instance was created with
44
+     *                            isAdmin being true
45
+     * @param string $userSearch the pattern users are search for
46
+     */
47
+    public function get(string $groupSearch = '', string $userSearch = ''): array {
48
+        $key = $groupSearch . '::' . $userSearch;
49
+        if (isset($this->metaData[$key])) {
50
+            return $this->metaData[$key];
51
+        }
52
+
53
+        $adminGroups = [];
54
+        $groups = [];
55
+        $sortGroupsIndex = 0;
56
+        $sortGroupsKeys = [];
57
+        $sortAdminGroupsIndex = 0;
58
+        $sortAdminGroupsKeys = [];
59
+
60
+        foreach ($this->getGroups($groupSearch) as $group) {
61
+            $groupMetaData = $this->generateGroupMetaData($group, $userSearch);
62
+            if (strtolower($group->getGID()) !== 'admin') {
63
+                $this->addEntry(
64
+                    $groups,
65
+                    $sortGroupsKeys,
66
+                    $sortGroupsIndex,
67
+                    $groupMetaData);
68
+            } else {
69
+                //admin group is hard coded to 'admin' for now. In future,
70
+                //backends may define admin groups too. Then the if statement
71
+                //has to be adjusted accordingly.
72
+                $this->addEntry(
73
+                    $adminGroups,
74
+                    $sortAdminGroupsKeys,
75
+                    $sortAdminGroupsIndex,
76
+                    $groupMetaData);
77
+            }
78
+        }
79
+
80
+        //whether sorting is necessary is will be checked in sort()
81
+        $this->sort($groups, $sortGroupsKeys);
82
+        $this->sort($adminGroups, $sortAdminGroupsKeys);
83
+
84
+        $this->metaData[$key] = [$adminGroups, $groups];
85
+        return $this->metaData[$key];
86
+    }
87
+
88
+    /**
89
+     * sets the sort mode, see SORT_* constants for supported modes
90
+     */
91
+    public function setSorting(int $sortMode): void {
92
+        switch ($sortMode) {
93
+            case self::SORT_USERCOUNT:
94
+            case self::SORT_GROUPNAME:
95
+                $this->sorting = $sortMode;
96
+                break;
97
+
98
+            default:
99
+                $this->sorting = self::SORT_NONE;
100
+        }
101
+    }
102
+
103
+    /**
104
+     * adds an group entry to the resulting array
105
+     * @param array $entries the resulting array, by reference
106
+     * @param array $sortKeys the sort key array, by reference
107
+     * @param int $sortIndex the sort key index, by reference
108
+     * @param array $data the group's meta data as returned by generateGroupMetaData()
109
+     */
110
+    private function addEntry(array &$entries, array &$sortKeys, int &$sortIndex, array $data): void {
111
+        $entries[] = $data;
112
+        if ($this->sorting === self::SORT_USERCOUNT) {
113
+            $sortKeys[$sortIndex] = $data['usercount'];
114
+            $sortIndex++;
115
+        } elseif ($this->sorting === self::SORT_GROUPNAME) {
116
+            $sortKeys[$sortIndex] = $data['name'];
117
+            $sortIndex++;
118
+        }
119
+    }
120
+
121
+    /**
122
+     * creates an array containing the group meta data
123
+     * @return array with the keys 'id', 'name', 'usercount' and 'disabled'
124
+     */
125
+    private function generateGroupMetaData(IGroup $group, string $userSearch): array {
126
+        return [
127
+            'id' => $group->getGID(),
128
+            'name' => $group->getDisplayName(),
129
+            'usercount' => $this->sorting === self::SORT_USERCOUNT ? $group->count($userSearch) : 0,
130
+            'disabled' => $group->countDisabled(),
131
+            'canAdd' => $group->canAddUser(),
132
+            'canRemove' => $group->canRemoveUser(),
133
+        ];
134
+    }
135
+
136
+    /**
137
+     * sorts the result array, if applicable
138
+     * @param array $entries the result array, by reference
139
+     * @param array $sortKeys the array containing the sort keys
140
+     */
141
+    private function sort(array &$entries, array $sortKeys): void {
142
+        if ($this->sorting === self::SORT_USERCOUNT) {
143
+            array_multisort($sortKeys, SORT_DESC, $entries);
144
+        } elseif ($this->sorting === self::SORT_GROUPNAME) {
145
+            array_multisort($sortKeys, SORT_ASC, $entries);
146
+        }
147
+    }
148
+
149
+    /**
150
+     * returns the available groups
151
+     * @return IGroup[]
152
+     */
153
+    public function getGroups(string $search = ''): array {
154
+        if ($this->isAdmin || $this->isDelegatedAdmin) {
155
+            return $this->groupManager->search($search);
156
+        } else {
157
+            $userObject = $this->userSession->getUser();
158
+            if ($userObject !== null && $this->groupManager instanceof GroupManager) {
159
+                $groups = $this->groupManager->getSubAdmin()->getSubAdminsGroups($userObject);
160
+            } else {
161
+                $groups = [];
162
+            }
163
+
164
+            return $groups;
165
+        }
166
+    }
167 167
 }
Please login to merge, or discard this patch.
apps/admin_audit/lib/AuditLogger.php 2 patches
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -42,7 +42,7 @@
 block discarded – undo
42 42
 		$logFile = $config->getSystemValueString('logfile_audit', '');
43 43
 
44 44
 		if ($auditType === 'file' && !$logFile) {
45
-			$default = $config->getSystemValue('datadirectory', \OC::$SERVERROOT . '/data') . '/audit.log';
45
+			$default = $config->getSystemValue('datadirectory', \OC::$SERVERROOT.'/data').'/audit.log';
46 46
 			// Legacy way was appconfig, now it's paralleled with the normal log config
47 47
 			$logFile = $config->getAppValue('admin_audit', 'logfile', $default);
48 48
 		}
Please login to merge, or discard this patch.
Indentation   +52 added lines, -52 removed lines patch added patch discarded remove patch
@@ -18,56 +18,56 @@
 block discarded – undo
18 18
  */
19 19
 class AuditLogger implements IAuditLogger {
20 20
 
21
-	private LoggerInterface $parentLogger;
22
-
23
-	public function __construct(ILogFactory $logFactory, IConfig $config) {
24
-		$auditType = $config->getSystemValueString('log_type_audit', 'file');
25
-		$defaultTag = $config->getSystemValueString('syslog_tag', 'Nextcloud');
26
-		$auditTag = $config->getSystemValueString('syslog_tag_audit', $defaultTag);
27
-		$logFile = $config->getSystemValueString('logfile_audit', '');
28
-
29
-		if ($auditType === 'file' && !$logFile) {
30
-			$default = $config->getSystemValue('datadirectory', \OC::$SERVERROOT . '/data') . '/audit.log';
31
-			// Legacy way was appconfig, now it's paralleled with the normal log config
32
-			$logFile = $config->getAppValue('admin_audit', 'logfile', $default);
33
-		}
34
-
35
-		$this->parentLogger = $logFactory->getCustomPsrLogger($logFile, $auditType, $auditTag);
36
-	}
37
-
38
-	public function emergency($message, array $context = []): void {
39
-		$this->parentLogger->emergency($message, $context);
40
-	}
41
-
42
-	public function alert($message, array $context = []): void {
43
-		$this->parentLogger->alert($message, $context);
44
-	}
45
-
46
-	public function critical($message, array $context = []): void {
47
-		$this->parentLogger->critical($message, $context);
48
-	}
49
-
50
-	public function error($message, array $context = []): void {
51
-		$this->parentLogger->error($message, $context);
52
-	}
53
-
54
-	public function warning($message, array $context = []): void {
55
-		$this->parentLogger->warning($message, $context);
56
-	}
57
-
58
-	public function notice($message, array $context = []): void {
59
-		$this->parentLogger->notice($message, $context);
60
-	}
61
-
62
-	public function info($message, array $context = []): void {
63
-		$this->parentLogger->info($message, $context);
64
-	}
65
-
66
-	public function debug($message, array $context = []): void {
67
-		$this->parentLogger->debug($message, $context);
68
-	}
69
-
70
-	public function log($level, $message, array $context = []): void {
71
-		$this->parentLogger->log($level, $message, $context);
72
-	}
21
+    private LoggerInterface $parentLogger;
22
+
23
+    public function __construct(ILogFactory $logFactory, IConfig $config) {
24
+        $auditType = $config->getSystemValueString('log_type_audit', 'file');
25
+        $defaultTag = $config->getSystemValueString('syslog_tag', 'Nextcloud');
26
+        $auditTag = $config->getSystemValueString('syslog_tag_audit', $defaultTag);
27
+        $logFile = $config->getSystemValueString('logfile_audit', '');
28
+
29
+        if ($auditType === 'file' && !$logFile) {
30
+            $default = $config->getSystemValue('datadirectory', \OC::$SERVERROOT . '/data') . '/audit.log';
31
+            // Legacy way was appconfig, now it's paralleled with the normal log config
32
+            $logFile = $config->getAppValue('admin_audit', 'logfile', $default);
33
+        }
34
+
35
+        $this->parentLogger = $logFactory->getCustomPsrLogger($logFile, $auditType, $auditTag);
36
+    }
37
+
38
+    public function emergency($message, array $context = []): void {
39
+        $this->parentLogger->emergency($message, $context);
40
+    }
41
+
42
+    public function alert($message, array $context = []): void {
43
+        $this->parentLogger->alert($message, $context);
44
+    }
45
+
46
+    public function critical($message, array $context = []): void {
47
+        $this->parentLogger->critical($message, $context);
48
+    }
49
+
50
+    public function error($message, array $context = []): void {
51
+        $this->parentLogger->error($message, $context);
52
+    }
53
+
54
+    public function warning($message, array $context = []): void {
55
+        $this->parentLogger->warning($message, $context);
56
+    }
57
+
58
+    public function notice($message, array $context = []): void {
59
+        $this->parentLogger->notice($message, $context);
60
+    }
61
+
62
+    public function info($message, array $context = []): void {
63
+        $this->parentLogger->info($message, $context);
64
+    }
65
+
66
+    public function debug($message, array $context = []): void {
67
+        $this->parentLogger->debug($message, $context);
68
+    }
69
+
70
+    public function log($level, $message, array $context = []): void {
71
+        $this->parentLogger->log($level, $message, $context);
72
+    }
73 73
 }
Please login to merge, or discard this patch.