@@ -117,8 +117,8 @@ |
||
117 | 117 | if ($aChunk !== $bChunk) { |
118 | 118 | // test first character (character comparison, not number comparison) |
119 | 119 | if ($aChunk[0] >= '0' && $aChunk[0] <= '9' && $bChunk[0] >= '0' && $bChunk[0] <= '9') { |
120 | - $aNum = (int)$aChunk; |
|
121 | - $bNum = (int)$bChunk; |
|
120 | + $aNum = (int) $aChunk; |
|
121 | + $bNum = (int) $bChunk; |
|
122 | 122 | return $aNum - $bNum; |
123 | 123 | } |
124 | 124 | return self::getCollator()->compare($aChunk, $bChunk); |
@@ -88,8 +88,7 @@ |
||
88 | 88 | // German umlauts, so using en_US instead |
89 | 89 | if (class_exists('Collator')) { |
90 | 90 | $this->collator = new \Collator('en_US'); |
91 | - } |
|
92 | - else { |
|
91 | + } else { |
|
93 | 92 | $this->collator = new \OC\NaturalSort_DefaultCollator(); |
94 | 93 | } |
95 | 94 | } |
@@ -30,113 +30,113 @@ |
||
30 | 30 | use OCP\ILogger; |
31 | 31 | |
32 | 32 | class NaturalSort { |
33 | - private static $instance; |
|
34 | - private $collator; |
|
35 | - private $cache = []; |
|
33 | + private static $instance; |
|
34 | + private $collator; |
|
35 | + private $cache = []; |
|
36 | 36 | |
37 | - /** |
|
38 | - * Instantiate a new \OC\NaturalSort instance. |
|
39 | - * @param object $injectedCollator |
|
40 | - */ |
|
41 | - public function __construct($injectedCollator = null) { |
|
42 | - // inject an instance of \Collator('en_US') to force using the php5-intl Collator |
|
43 | - // or inject an instance of \OC\NaturalSort_DefaultCollator to force using Owncloud's default collator |
|
44 | - if (isset($injectedCollator)) { |
|
45 | - $this->collator = $injectedCollator; |
|
46 | - \OCP\Util::writeLog('core', 'forced use of '.get_class($injectedCollator), ILogger::DEBUG); |
|
47 | - } |
|
48 | - } |
|
37 | + /** |
|
38 | + * Instantiate a new \OC\NaturalSort instance. |
|
39 | + * @param object $injectedCollator |
|
40 | + */ |
|
41 | + public function __construct($injectedCollator = null) { |
|
42 | + // inject an instance of \Collator('en_US') to force using the php5-intl Collator |
|
43 | + // or inject an instance of \OC\NaturalSort_DefaultCollator to force using Owncloud's default collator |
|
44 | + if (isset($injectedCollator)) { |
|
45 | + $this->collator = $injectedCollator; |
|
46 | + \OCP\Util::writeLog('core', 'forced use of '.get_class($injectedCollator), ILogger::DEBUG); |
|
47 | + } |
|
48 | + } |
|
49 | 49 | |
50 | - /** |
|
51 | - * Split the given string in chunks of numbers and strings |
|
52 | - * @param string $t string |
|
53 | - * @return array of strings and number chunks |
|
54 | - */ |
|
55 | - private function naturalSortChunkify($t) { |
|
56 | - // Adapted and ported to PHP from |
|
57 | - // http://my.opera.com/GreyWyvern/blog/show.dml/1671288 |
|
58 | - if (isset($this->cache[$t])) { |
|
59 | - return $this->cache[$t]; |
|
60 | - } |
|
61 | - $tz = []; |
|
62 | - $x = 0; |
|
63 | - $y = -1; |
|
64 | - $n = null; |
|
50 | + /** |
|
51 | + * Split the given string in chunks of numbers and strings |
|
52 | + * @param string $t string |
|
53 | + * @return array of strings and number chunks |
|
54 | + */ |
|
55 | + private function naturalSortChunkify($t) { |
|
56 | + // Adapted and ported to PHP from |
|
57 | + // http://my.opera.com/GreyWyvern/blog/show.dml/1671288 |
|
58 | + if (isset($this->cache[$t])) { |
|
59 | + return $this->cache[$t]; |
|
60 | + } |
|
61 | + $tz = []; |
|
62 | + $x = 0; |
|
63 | + $y = -1; |
|
64 | + $n = null; |
|
65 | 65 | |
66 | - while (isset($t[$x])) { |
|
67 | - $c = $t[$x]; |
|
68 | - // only include the dot in strings |
|
69 | - $m = ((!$n && $c === '.') || ($c >= '0' && $c <= '9')); |
|
70 | - if ($m !== $n) { |
|
71 | - // next chunk |
|
72 | - $y++; |
|
73 | - $tz[$y] = ''; |
|
74 | - $n = $m; |
|
75 | - } |
|
76 | - $tz[$y] .= $c; |
|
77 | - $x++; |
|
78 | - } |
|
79 | - $this->cache[$t] = $tz; |
|
80 | - return $tz; |
|
81 | - } |
|
66 | + while (isset($t[$x])) { |
|
67 | + $c = $t[$x]; |
|
68 | + // only include the dot in strings |
|
69 | + $m = ((!$n && $c === '.') || ($c >= '0' && $c <= '9')); |
|
70 | + if ($m !== $n) { |
|
71 | + // next chunk |
|
72 | + $y++; |
|
73 | + $tz[$y] = ''; |
|
74 | + $n = $m; |
|
75 | + } |
|
76 | + $tz[$y] .= $c; |
|
77 | + $x++; |
|
78 | + } |
|
79 | + $this->cache[$t] = $tz; |
|
80 | + return $tz; |
|
81 | + } |
|
82 | 82 | |
83 | - /** |
|
84 | - * Returns the string collator |
|
85 | - * @return \Collator string collator |
|
86 | - */ |
|
87 | - private function getCollator() { |
|
88 | - if (!isset($this->collator)) { |
|
89 | - // looks like the default is en_US_POSIX which yields wrong sorting with |
|
90 | - // German umlauts, so using en_US instead |
|
91 | - if (class_exists('Collator')) { |
|
92 | - $this->collator = new \Collator('en_US'); |
|
93 | - } |
|
94 | - else { |
|
95 | - $this->collator = new \OC\NaturalSort_DefaultCollator(); |
|
96 | - } |
|
97 | - } |
|
98 | - return $this->collator; |
|
99 | - } |
|
83 | + /** |
|
84 | + * Returns the string collator |
|
85 | + * @return \Collator string collator |
|
86 | + */ |
|
87 | + private function getCollator() { |
|
88 | + if (!isset($this->collator)) { |
|
89 | + // looks like the default is en_US_POSIX which yields wrong sorting with |
|
90 | + // German umlauts, so using en_US instead |
|
91 | + if (class_exists('Collator')) { |
|
92 | + $this->collator = new \Collator('en_US'); |
|
93 | + } |
|
94 | + else { |
|
95 | + $this->collator = new \OC\NaturalSort_DefaultCollator(); |
|
96 | + } |
|
97 | + } |
|
98 | + return $this->collator; |
|
99 | + } |
|
100 | 100 | |
101 | - /** |
|
102 | - * Compare two strings to provide a natural sort |
|
103 | - * @param string $a first string to compare |
|
104 | - * @param string $b second string to compare |
|
105 | - * @return int -1 if $b comes before $a, 1 if $a comes before $b |
|
106 | - * or 0 if the strings are identical |
|
107 | - */ |
|
108 | - public function compare($a, $b) { |
|
109 | - // Needed because PHP doesn't sort correctly when numbers are enclosed in |
|
110 | - // parenthesis, even with NUMERIC_COLLATION enabled. |
|
111 | - // For example it gave ["test (2).txt", "test.txt"] |
|
112 | - // instead of ["test.txt", "test (2).txt"] |
|
113 | - $aa = self::naturalSortChunkify($a); |
|
114 | - $bb = self::naturalSortChunkify($b); |
|
101 | + /** |
|
102 | + * Compare two strings to provide a natural sort |
|
103 | + * @param string $a first string to compare |
|
104 | + * @param string $b second string to compare |
|
105 | + * @return int -1 if $b comes before $a, 1 if $a comes before $b |
|
106 | + * or 0 if the strings are identical |
|
107 | + */ |
|
108 | + public function compare($a, $b) { |
|
109 | + // Needed because PHP doesn't sort correctly when numbers are enclosed in |
|
110 | + // parenthesis, even with NUMERIC_COLLATION enabled. |
|
111 | + // For example it gave ["test (2).txt", "test.txt"] |
|
112 | + // instead of ["test.txt", "test (2).txt"] |
|
113 | + $aa = self::naturalSortChunkify($a); |
|
114 | + $bb = self::naturalSortChunkify($b); |
|
115 | 115 | |
116 | - for ($x = 0; isset($aa[$x]) && isset($bb[$x]); $x++) { |
|
117 | - $aChunk = $aa[$x]; |
|
118 | - $bChunk = $bb[$x]; |
|
119 | - if ($aChunk !== $bChunk) { |
|
120 | - // test first character (character comparison, not number comparison) |
|
121 | - if ($aChunk[0] >= '0' && $aChunk[0] <= '9' && $bChunk[0] >= '0' && $bChunk[0] <= '9') { |
|
122 | - $aNum = (int)$aChunk; |
|
123 | - $bNum = (int)$bChunk; |
|
124 | - return $aNum - $bNum; |
|
125 | - } |
|
126 | - return self::getCollator()->compare($aChunk, $bChunk); |
|
127 | - } |
|
128 | - } |
|
129 | - return count($aa) - count($bb); |
|
130 | - } |
|
116 | + for ($x = 0; isset($aa[$x]) && isset($bb[$x]); $x++) { |
|
117 | + $aChunk = $aa[$x]; |
|
118 | + $bChunk = $bb[$x]; |
|
119 | + if ($aChunk !== $bChunk) { |
|
120 | + // test first character (character comparison, not number comparison) |
|
121 | + if ($aChunk[0] >= '0' && $aChunk[0] <= '9' && $bChunk[0] >= '0' && $bChunk[0] <= '9') { |
|
122 | + $aNum = (int)$aChunk; |
|
123 | + $bNum = (int)$bChunk; |
|
124 | + return $aNum - $bNum; |
|
125 | + } |
|
126 | + return self::getCollator()->compare($aChunk, $bChunk); |
|
127 | + } |
|
128 | + } |
|
129 | + return count($aa) - count($bb); |
|
130 | + } |
|
131 | 131 | |
132 | - /** |
|
133 | - * Returns a singleton |
|
134 | - * @return \OC\NaturalSort instance |
|
135 | - */ |
|
136 | - public static function getInstance() { |
|
137 | - if (!isset(self::$instance)) { |
|
138 | - self::$instance = new \OC\NaturalSort(); |
|
139 | - } |
|
140 | - return self::$instance; |
|
141 | - } |
|
132 | + /** |
|
133 | + * Returns a singleton |
|
134 | + * @return \OC\NaturalSort instance |
|
135 | + */ |
|
136 | + public static function getInstance() { |
|
137 | + if (!isset(self::$instance)) { |
|
138 | + self::$instance = new \OC\NaturalSort(); |
|
139 | + } |
|
140 | + return self::$instance; |
|
141 | + } |
|
142 | 142 | } |
@@ -168,7 +168,7 @@ |
||
168 | 168 | ->setValue('gid', $qb->createNamedParameter($gid)) |
169 | 169 | ->execute(); |
170 | 170 | return true; |
171 | - }else{ |
|
171 | + } else{ |
|
172 | 172 | return false; |
173 | 173 | } |
174 | 174 | } |
@@ -111,7 +111,7 @@ discard block |
||
111 | 111 | ->setValue('gid', $builder->createNamedParameter($gid)) |
112 | 112 | ->setValue('displayname', $builder->createNamedParameter($gid)) |
113 | 113 | ->execute(); |
114 | - } catch(UniqueConstraintViolationException $e) { |
|
114 | + } catch (UniqueConstraintViolationException $e) { |
|
115 | 115 | $result = 0; |
116 | 116 | } |
117 | 117 | |
@@ -163,7 +163,7 @@ discard block |
||
163 | 163 | * |
164 | 164 | * Checks whether the user is member of a group or not. |
165 | 165 | */ |
166 | - public function inGroup( $uid, $gid ) { |
|
166 | + public function inGroup($uid, $gid) { |
|
167 | 167 | $this->fixDI(); |
168 | 168 | |
169 | 169 | // check |
@@ -192,14 +192,14 @@ discard block |
||
192 | 192 | $this->fixDI(); |
193 | 193 | |
194 | 194 | // No duplicate entries! |
195 | - if( !$this->inGroup( $uid, $gid )) { |
|
195 | + if (!$this->inGroup($uid, $gid)) { |
|
196 | 196 | $qb = $this->dbConn->getQueryBuilder(); |
197 | 197 | $qb->insert('group_user') |
198 | 198 | ->setValue('uid', $qb->createNamedParameter($uid)) |
199 | 199 | ->setValue('gid', $qb->createNamedParameter($gid)) |
200 | 200 | ->execute(); |
201 | 201 | return true; |
202 | - }else{ |
|
202 | + } else { |
|
203 | 203 | return false; |
204 | 204 | } |
205 | 205 | } |
@@ -232,7 +232,7 @@ discard block |
||
232 | 232 | * This function fetches all groups a user belongs to. It does not check |
233 | 233 | * if the user exists at all. |
234 | 234 | */ |
235 | - public function getUserGroups( $uid ) { |
|
235 | + public function getUserGroups($uid) { |
|
236 | 236 | //guests has empty or null $uid |
237 | 237 | if ($uid === null || $uid === '') { |
238 | 238 | return []; |
@@ -248,7 +248,7 @@ discard block |
||
248 | 248 | ->execute(); |
249 | 249 | |
250 | 250 | $groups = []; |
251 | - while( $row = $cursor->fetch()) { |
|
251 | + while ($row = $cursor->fetch()) { |
|
252 | 252 | $groups[] = $row['gid']; |
253 | 253 | $this->groupCache[$row['gid']] = $row['gid']; |
254 | 254 | } |
@@ -276,7 +276,7 @@ discard block |
||
276 | 276 | |
277 | 277 | if ($search !== '') { |
278 | 278 | $query->where($query->expr()->iLike('gid', $query->createNamedParameter( |
279 | - '%' . $this->dbConn->escapeLikeParameter($search) . '%' |
|
279 | + '%'.$this->dbConn->escapeLikeParameter($search).'%' |
|
280 | 280 | ))); |
281 | 281 | } |
282 | 282 | |
@@ -340,7 +340,7 @@ discard block |
||
340 | 340 | |
341 | 341 | if ($search !== '') { |
342 | 342 | $query->andWhere($query->expr()->like('uid', $query->createNamedParameter( |
343 | - '%' . $this->dbConn->escapeLikeParameter($search) . '%' |
|
343 | + '%'.$this->dbConn->escapeLikeParameter($search).'%' |
|
344 | 344 | ))); |
345 | 345 | } |
346 | 346 | |
@@ -378,7 +378,7 @@ discard block |
||
378 | 378 | |
379 | 379 | if ($search !== '') { |
380 | 380 | $query->andWhere($query->expr()->like('uid', $query->createNamedParameter( |
381 | - '%' . $this->dbConn->escapeLikeParameter($search) . '%' |
|
381 | + '%'.$this->dbConn->escapeLikeParameter($search).'%' |
|
382 | 382 | ))); |
383 | 383 | } |
384 | 384 | |
@@ -387,7 +387,7 @@ discard block |
||
387 | 387 | $result->closeCursor(); |
388 | 388 | |
389 | 389 | if ($count !== false) { |
390 | - $count = (int)$count; |
|
390 | + $count = (int) $count; |
|
391 | 391 | } else { |
392 | 392 | $count = 0; |
393 | 393 | } |
@@ -405,7 +405,7 @@ discard block |
||
405 | 405 | $this->fixDI(); |
406 | 406 | |
407 | 407 | $query = $this->dbConn->getQueryBuilder(); |
408 | - $query->select($query->createFunction('COUNT(DISTINCT ' . $query->getColumnName('uid') . ')')) |
|
408 | + $query->select($query->createFunction('COUNT(DISTINCT '.$query->getColumnName('uid').')')) |
|
409 | 409 | ->from('preferences', 'p') |
410 | 410 | ->innerJoin('p', 'group_user', 'g', $query->expr()->eq('p.userid', 'g.uid')) |
411 | 411 | ->where($query->expr()->eq('appid', $query->createNamedParameter('core'))) |
@@ -418,7 +418,7 @@ discard block |
||
418 | 418 | $result->closeCursor(); |
419 | 419 | |
420 | 420 | if ($count !== false) { |
421 | - $count = (int)$count; |
|
421 | + $count = (int) $count; |
|
422 | 422 | } else { |
423 | 423 | $count = 0; |
424 | 424 | } |
@@ -60,417 +60,417 @@ |
||
60 | 60 | * Class for group management in a SQL Database (e.g. MySQL, SQLite) |
61 | 61 | */ |
62 | 62 | class Database extends ABackend |
63 | - implements IAddToGroupBackend, |
|
64 | - ICountDisabledInGroup, |
|
65 | - ICountUsersBackend, |
|
66 | - ICreateGroupBackend, |
|
67 | - IDeleteGroupBackend, |
|
68 | - IGetDisplayNameBackend, |
|
69 | - IGroupDetailsBackend, |
|
70 | - IRemoveFromGroupBackend, |
|
71 | - ISetDisplayNameBackend { |
|
72 | - |
|
73 | - /** @var string[] */ |
|
74 | - private $groupCache = []; |
|
75 | - |
|
76 | - /** @var IDBConnection */ |
|
77 | - private $dbConn; |
|
78 | - |
|
79 | - /** |
|
80 | - * \OC\Group\Database constructor. |
|
81 | - * |
|
82 | - * @param IDBConnection|null $dbConn |
|
83 | - */ |
|
84 | - public function __construct(IDBConnection $dbConn = null) { |
|
85 | - $this->dbConn = $dbConn; |
|
86 | - } |
|
87 | - |
|
88 | - /** |
|
89 | - * FIXME: This function should not be required! |
|
90 | - */ |
|
91 | - private function fixDI() { |
|
92 | - if ($this->dbConn === null) { |
|
93 | - $this->dbConn = \OC::$server->getDatabaseConnection(); |
|
94 | - } |
|
95 | - } |
|
96 | - |
|
97 | - /** |
|
98 | - * Try to create a new group |
|
99 | - * @param string $gid The name of the group to create |
|
100 | - * @return bool |
|
101 | - * |
|
102 | - * Tries to create a new group. If the group name already exists, false will |
|
103 | - * be returned. |
|
104 | - */ |
|
105 | - public function createGroup(string $gid): bool { |
|
106 | - $this->fixDI(); |
|
107 | - |
|
108 | - try { |
|
109 | - // Add group |
|
110 | - $builder = $this->dbConn->getQueryBuilder(); |
|
111 | - $result = $builder->insert('groups') |
|
112 | - ->setValue('gid', $builder->createNamedParameter($gid)) |
|
113 | - ->setValue('displayname', $builder->createNamedParameter($gid)) |
|
114 | - ->execute(); |
|
115 | - } catch(UniqueConstraintViolationException $e) { |
|
116 | - $result = 0; |
|
117 | - } |
|
118 | - |
|
119 | - // Add to cache |
|
120 | - $this->groupCache[$gid] = $gid; |
|
121 | - |
|
122 | - return $result === 1; |
|
123 | - } |
|
124 | - |
|
125 | - /** |
|
126 | - * delete a group |
|
127 | - * @param string $gid gid of the group to delete |
|
128 | - * @return bool |
|
129 | - * |
|
130 | - * Deletes a group and removes it from the group_user-table |
|
131 | - */ |
|
132 | - public function deleteGroup(string $gid): bool { |
|
133 | - $this->fixDI(); |
|
134 | - |
|
135 | - // Delete the group |
|
136 | - $qb = $this->dbConn->getQueryBuilder(); |
|
137 | - $qb->delete('groups') |
|
138 | - ->where($qb->expr()->eq('gid', $qb->createNamedParameter($gid))) |
|
139 | - ->execute(); |
|
140 | - |
|
141 | - // Delete the group-user relation |
|
142 | - $qb = $this->dbConn->getQueryBuilder(); |
|
143 | - $qb->delete('group_user') |
|
144 | - ->where($qb->expr()->eq('gid', $qb->createNamedParameter($gid))) |
|
145 | - ->execute(); |
|
146 | - |
|
147 | - // Delete the group-groupadmin relation |
|
148 | - $qb = $this->dbConn->getQueryBuilder(); |
|
149 | - $qb->delete('group_admin') |
|
150 | - ->where($qb->expr()->eq('gid', $qb->createNamedParameter($gid))) |
|
151 | - ->execute(); |
|
152 | - |
|
153 | - // Delete from cache |
|
154 | - unset($this->groupCache[$gid]); |
|
155 | - |
|
156 | - return true; |
|
157 | - } |
|
158 | - |
|
159 | - /** |
|
160 | - * is user in group? |
|
161 | - * @param string $uid uid of the user |
|
162 | - * @param string $gid gid of the group |
|
163 | - * @return bool |
|
164 | - * |
|
165 | - * Checks whether the user is member of a group or not. |
|
166 | - */ |
|
167 | - public function inGroup( $uid, $gid ) { |
|
168 | - $this->fixDI(); |
|
169 | - |
|
170 | - // check |
|
171 | - $qb = $this->dbConn->getQueryBuilder(); |
|
172 | - $cursor = $qb->select('uid') |
|
173 | - ->from('group_user') |
|
174 | - ->where($qb->expr()->eq('gid', $qb->createNamedParameter($gid))) |
|
175 | - ->andWhere($qb->expr()->eq('uid', $qb->createNamedParameter($uid))) |
|
176 | - ->execute(); |
|
177 | - |
|
178 | - $result = $cursor->fetch(); |
|
179 | - $cursor->closeCursor(); |
|
180 | - |
|
181 | - return $result ? true : false; |
|
182 | - } |
|
183 | - |
|
184 | - /** |
|
185 | - * Add a user to a group |
|
186 | - * @param string $uid Name of the user to add to group |
|
187 | - * @param string $gid Name of the group in which add the user |
|
188 | - * @return bool |
|
189 | - * |
|
190 | - * Adds a user to a group. |
|
191 | - */ |
|
192 | - public function addToGroup(string $uid, string $gid): bool { |
|
193 | - $this->fixDI(); |
|
194 | - |
|
195 | - // No duplicate entries! |
|
196 | - if( !$this->inGroup( $uid, $gid )) { |
|
197 | - $qb = $this->dbConn->getQueryBuilder(); |
|
198 | - $qb->insert('group_user') |
|
199 | - ->setValue('uid', $qb->createNamedParameter($uid)) |
|
200 | - ->setValue('gid', $qb->createNamedParameter($gid)) |
|
201 | - ->execute(); |
|
202 | - return true; |
|
203 | - }else{ |
|
204 | - return false; |
|
205 | - } |
|
206 | - } |
|
207 | - |
|
208 | - /** |
|
209 | - * Removes a user from a group |
|
210 | - * @param string $uid Name of the user to remove from group |
|
211 | - * @param string $gid Name of the group from which remove the user |
|
212 | - * @return bool |
|
213 | - * |
|
214 | - * removes the user from a group. |
|
215 | - */ |
|
216 | - public function removeFromGroup(string $uid, string $gid): bool { |
|
217 | - $this->fixDI(); |
|
218 | - |
|
219 | - $qb = $this->dbConn->getQueryBuilder(); |
|
220 | - $qb->delete('group_user') |
|
221 | - ->where($qb->expr()->eq('uid', $qb->createNamedParameter($uid))) |
|
222 | - ->andWhere($qb->expr()->eq('gid', $qb->createNamedParameter($gid))) |
|
223 | - ->execute(); |
|
224 | - |
|
225 | - return true; |
|
226 | - } |
|
227 | - |
|
228 | - /** |
|
229 | - * Get all groups a user belongs to |
|
230 | - * @param string $uid Name of the user |
|
231 | - * @return array an array of group names |
|
232 | - * |
|
233 | - * This function fetches all groups a user belongs to. It does not check |
|
234 | - * if the user exists at all. |
|
235 | - */ |
|
236 | - public function getUserGroups( $uid ) { |
|
237 | - //guests has empty or null $uid |
|
238 | - if ($uid === null || $uid === '') { |
|
239 | - return []; |
|
240 | - } |
|
241 | - |
|
242 | - $this->fixDI(); |
|
243 | - |
|
244 | - // No magic! |
|
245 | - $qb = $this->dbConn->getQueryBuilder(); |
|
246 | - $cursor = $qb->select('gid') |
|
247 | - ->from('group_user') |
|
248 | - ->where($qb->expr()->eq('uid', $qb->createNamedParameter($uid))) |
|
249 | - ->execute(); |
|
250 | - |
|
251 | - $groups = []; |
|
252 | - while( $row = $cursor->fetch()) { |
|
253 | - $groups[] = $row['gid']; |
|
254 | - $this->groupCache[$row['gid']] = $row['gid']; |
|
255 | - } |
|
256 | - $cursor->closeCursor(); |
|
257 | - |
|
258 | - return $groups; |
|
259 | - } |
|
260 | - |
|
261 | - /** |
|
262 | - * get a list of all groups |
|
263 | - * @param string $search |
|
264 | - * @param int $limit |
|
265 | - * @param int $offset |
|
266 | - * @return array an array of group names |
|
267 | - * |
|
268 | - * Returns a list with all groups |
|
269 | - */ |
|
270 | - public function getGroups($search = '', $limit = null, $offset = null) { |
|
271 | - $this->fixDI(); |
|
272 | - |
|
273 | - $query = $this->dbConn->getQueryBuilder(); |
|
274 | - $query->select('gid') |
|
275 | - ->from('groups') |
|
276 | - ->orderBy('gid', 'ASC'); |
|
277 | - |
|
278 | - if ($search !== '') { |
|
279 | - $query->where($query->expr()->iLike('gid', $query->createNamedParameter( |
|
280 | - '%' . $this->dbConn->escapeLikeParameter($search) . '%' |
|
281 | - ))); |
|
282 | - } |
|
283 | - |
|
284 | - $query->setMaxResults($limit) |
|
285 | - ->setFirstResult($offset); |
|
286 | - $result = $query->execute(); |
|
287 | - |
|
288 | - $groups = []; |
|
289 | - while ($row = $result->fetch()) { |
|
290 | - $groups[] = $row['gid']; |
|
291 | - } |
|
292 | - $result->closeCursor(); |
|
293 | - |
|
294 | - return $groups; |
|
295 | - } |
|
296 | - |
|
297 | - /** |
|
298 | - * check if a group exists |
|
299 | - * @param string $gid |
|
300 | - * @return bool |
|
301 | - */ |
|
302 | - public function groupExists($gid) { |
|
303 | - $this->fixDI(); |
|
304 | - |
|
305 | - // Check cache first |
|
306 | - if (isset($this->groupCache[$gid])) { |
|
307 | - return true; |
|
308 | - } |
|
309 | - |
|
310 | - $qb = $this->dbConn->getQueryBuilder(); |
|
311 | - $cursor = $qb->select('gid') |
|
312 | - ->from('groups') |
|
313 | - ->where($qb->expr()->eq('gid', $qb->createNamedParameter($gid))) |
|
314 | - ->execute(); |
|
315 | - $result = $cursor->fetch(); |
|
316 | - $cursor->closeCursor(); |
|
317 | - |
|
318 | - if ($result !== false) { |
|
319 | - $this->groupCache[$gid] = $gid; |
|
320 | - return true; |
|
321 | - } |
|
322 | - return false; |
|
323 | - } |
|
324 | - |
|
325 | - /** |
|
326 | - * get a list of all users in a group |
|
327 | - * @param string $gid |
|
328 | - * @param string $search |
|
329 | - * @param int $limit |
|
330 | - * @param int $offset |
|
331 | - * @return array an array of user ids |
|
332 | - */ |
|
333 | - public function usersInGroup($gid, $search = '', $limit = -1, $offset = 0) { |
|
334 | - $this->fixDI(); |
|
335 | - |
|
336 | - $query = $this->dbConn->getQueryBuilder(); |
|
337 | - $query->select('uid') |
|
338 | - ->from('group_user') |
|
339 | - ->where($query->expr()->eq('gid', $query->createNamedParameter($gid))) |
|
340 | - ->orderBy('uid', 'ASC'); |
|
341 | - |
|
342 | - if ($search !== '') { |
|
343 | - $query->andWhere($query->expr()->like('uid', $query->createNamedParameter( |
|
344 | - '%' . $this->dbConn->escapeLikeParameter($search) . '%' |
|
345 | - ))); |
|
346 | - } |
|
347 | - |
|
348 | - if ($limit !== -1) { |
|
349 | - $query->setMaxResults($limit); |
|
350 | - } |
|
351 | - if ($offset !== 0) { |
|
352 | - $query->setFirstResult($offset); |
|
353 | - } |
|
354 | - |
|
355 | - $result = $query->execute(); |
|
356 | - |
|
357 | - $users = []; |
|
358 | - while ($row = $result->fetch()) { |
|
359 | - $users[] = $row['uid']; |
|
360 | - } |
|
361 | - $result->closeCursor(); |
|
362 | - |
|
363 | - return $users; |
|
364 | - } |
|
365 | - |
|
366 | - /** |
|
367 | - * get the number of all users matching the search string in a group |
|
368 | - * @param string $gid |
|
369 | - * @param string $search |
|
370 | - * @return int |
|
371 | - */ |
|
372 | - public function countUsersInGroup(string $gid, string $search = ''): int { |
|
373 | - $this->fixDI(); |
|
374 | - |
|
375 | - $query = $this->dbConn->getQueryBuilder(); |
|
376 | - $query->select($query->func()->count('*', 'num_users')) |
|
377 | - ->from('group_user') |
|
378 | - ->where($query->expr()->eq('gid', $query->createNamedParameter($gid))); |
|
379 | - |
|
380 | - if ($search !== '') { |
|
381 | - $query->andWhere($query->expr()->like('uid', $query->createNamedParameter( |
|
382 | - '%' . $this->dbConn->escapeLikeParameter($search) . '%' |
|
383 | - ))); |
|
384 | - } |
|
385 | - |
|
386 | - $result = $query->execute(); |
|
387 | - $count = $result->fetchColumn(); |
|
388 | - $result->closeCursor(); |
|
389 | - |
|
390 | - if ($count !== false) { |
|
391 | - $count = (int)$count; |
|
392 | - } else { |
|
393 | - $count = 0; |
|
394 | - } |
|
395 | - |
|
396 | - return $count; |
|
397 | - } |
|
398 | - |
|
399 | - /** |
|
400 | - * get the number of disabled users in a group |
|
401 | - * |
|
402 | - * @param string $search |
|
403 | - * |
|
404 | - * @return int |
|
405 | - */ |
|
406 | - public function countDisabledInGroup(string $gid): int { |
|
407 | - $this->fixDI(); |
|
408 | - |
|
409 | - $query = $this->dbConn->getQueryBuilder(); |
|
410 | - $query->select($query->createFunction('COUNT(DISTINCT ' . $query->getColumnName('uid') . ')')) |
|
411 | - ->from('preferences', 'p') |
|
412 | - ->innerJoin('p', 'group_user', 'g', $query->expr()->eq('p.userid', 'g.uid')) |
|
413 | - ->where($query->expr()->eq('appid', $query->createNamedParameter('core'))) |
|
414 | - ->andWhere($query->expr()->eq('configkey', $query->createNamedParameter('enabled'))) |
|
415 | - ->andWhere($query->expr()->eq('configvalue', $query->createNamedParameter('false'), IQueryBuilder::PARAM_STR)) |
|
416 | - ->andWhere($query->expr()->eq('gid', $query->createNamedParameter($gid), IQueryBuilder::PARAM_STR)); |
|
417 | - |
|
418 | - $result = $query->execute(); |
|
419 | - $count = $result->fetchColumn(); |
|
420 | - $result->closeCursor(); |
|
421 | - |
|
422 | - if ($count !== false) { |
|
423 | - $count = (int)$count; |
|
424 | - } else { |
|
425 | - $count = 0; |
|
426 | - } |
|
427 | - |
|
428 | - return $count; |
|
429 | - } |
|
430 | - |
|
431 | - public function getDisplayName(string $gid): string { |
|
432 | - $this->fixDI(); |
|
433 | - |
|
434 | - $query = $this->dbConn->getQueryBuilder(); |
|
435 | - $query->select('displayname') |
|
436 | - ->from('groups') |
|
437 | - ->where($query->expr()->eq('gid', $query->createNamedParameter($gid))); |
|
438 | - |
|
439 | - $result = $query->execute(); |
|
440 | - $displayName = $result->fetchColumn(); |
|
441 | - $result->closeCursor(); |
|
442 | - |
|
443 | - return (string) $displayName; |
|
444 | - } |
|
445 | - |
|
446 | - public function getGroupDetails(string $gid): array { |
|
447 | - $displayName = $this->getDisplayName($gid); |
|
448 | - if ($displayName !== '') { |
|
449 | - return ['displayName' => $displayName]; |
|
450 | - } |
|
451 | - |
|
452 | - return []; |
|
453 | - } |
|
454 | - |
|
455 | - public function setDisplayName(string $gid, string $displayName): bool { |
|
456 | - if (!$this->groupExists($gid)) { |
|
457 | - return false; |
|
458 | - } |
|
459 | - |
|
460 | - $this->fixDI(); |
|
461 | - |
|
462 | - $displayName = trim($displayName); |
|
463 | - if ($displayName === '') { |
|
464 | - $displayName = $gid; |
|
465 | - } |
|
466 | - |
|
467 | - $query = $this->dbConn->getQueryBuilder(); |
|
468 | - $query->update('groups') |
|
469 | - ->set('displayname', $query->createNamedParameter($displayName)) |
|
470 | - ->where($query->expr()->eq('gid', $query->createNamedParameter($gid))); |
|
471 | - $query->execute(); |
|
472 | - |
|
473 | - return true; |
|
474 | - } |
|
63 | + implements IAddToGroupBackend, |
|
64 | + ICountDisabledInGroup, |
|
65 | + ICountUsersBackend, |
|
66 | + ICreateGroupBackend, |
|
67 | + IDeleteGroupBackend, |
|
68 | + IGetDisplayNameBackend, |
|
69 | + IGroupDetailsBackend, |
|
70 | + IRemoveFromGroupBackend, |
|
71 | + ISetDisplayNameBackend { |
|
72 | + |
|
73 | + /** @var string[] */ |
|
74 | + private $groupCache = []; |
|
75 | + |
|
76 | + /** @var IDBConnection */ |
|
77 | + private $dbConn; |
|
78 | + |
|
79 | + /** |
|
80 | + * \OC\Group\Database constructor. |
|
81 | + * |
|
82 | + * @param IDBConnection|null $dbConn |
|
83 | + */ |
|
84 | + public function __construct(IDBConnection $dbConn = null) { |
|
85 | + $this->dbConn = $dbConn; |
|
86 | + } |
|
87 | + |
|
88 | + /** |
|
89 | + * FIXME: This function should not be required! |
|
90 | + */ |
|
91 | + private function fixDI() { |
|
92 | + if ($this->dbConn === null) { |
|
93 | + $this->dbConn = \OC::$server->getDatabaseConnection(); |
|
94 | + } |
|
95 | + } |
|
96 | + |
|
97 | + /** |
|
98 | + * Try to create a new group |
|
99 | + * @param string $gid The name of the group to create |
|
100 | + * @return bool |
|
101 | + * |
|
102 | + * Tries to create a new group. If the group name already exists, false will |
|
103 | + * be returned. |
|
104 | + */ |
|
105 | + public function createGroup(string $gid): bool { |
|
106 | + $this->fixDI(); |
|
107 | + |
|
108 | + try { |
|
109 | + // Add group |
|
110 | + $builder = $this->dbConn->getQueryBuilder(); |
|
111 | + $result = $builder->insert('groups') |
|
112 | + ->setValue('gid', $builder->createNamedParameter($gid)) |
|
113 | + ->setValue('displayname', $builder->createNamedParameter($gid)) |
|
114 | + ->execute(); |
|
115 | + } catch(UniqueConstraintViolationException $e) { |
|
116 | + $result = 0; |
|
117 | + } |
|
118 | + |
|
119 | + // Add to cache |
|
120 | + $this->groupCache[$gid] = $gid; |
|
121 | + |
|
122 | + return $result === 1; |
|
123 | + } |
|
124 | + |
|
125 | + /** |
|
126 | + * delete a group |
|
127 | + * @param string $gid gid of the group to delete |
|
128 | + * @return bool |
|
129 | + * |
|
130 | + * Deletes a group and removes it from the group_user-table |
|
131 | + */ |
|
132 | + public function deleteGroup(string $gid): bool { |
|
133 | + $this->fixDI(); |
|
134 | + |
|
135 | + // Delete the group |
|
136 | + $qb = $this->dbConn->getQueryBuilder(); |
|
137 | + $qb->delete('groups') |
|
138 | + ->where($qb->expr()->eq('gid', $qb->createNamedParameter($gid))) |
|
139 | + ->execute(); |
|
140 | + |
|
141 | + // Delete the group-user relation |
|
142 | + $qb = $this->dbConn->getQueryBuilder(); |
|
143 | + $qb->delete('group_user') |
|
144 | + ->where($qb->expr()->eq('gid', $qb->createNamedParameter($gid))) |
|
145 | + ->execute(); |
|
146 | + |
|
147 | + // Delete the group-groupadmin relation |
|
148 | + $qb = $this->dbConn->getQueryBuilder(); |
|
149 | + $qb->delete('group_admin') |
|
150 | + ->where($qb->expr()->eq('gid', $qb->createNamedParameter($gid))) |
|
151 | + ->execute(); |
|
152 | + |
|
153 | + // Delete from cache |
|
154 | + unset($this->groupCache[$gid]); |
|
155 | + |
|
156 | + return true; |
|
157 | + } |
|
158 | + |
|
159 | + /** |
|
160 | + * is user in group? |
|
161 | + * @param string $uid uid of the user |
|
162 | + * @param string $gid gid of the group |
|
163 | + * @return bool |
|
164 | + * |
|
165 | + * Checks whether the user is member of a group or not. |
|
166 | + */ |
|
167 | + public function inGroup( $uid, $gid ) { |
|
168 | + $this->fixDI(); |
|
169 | + |
|
170 | + // check |
|
171 | + $qb = $this->dbConn->getQueryBuilder(); |
|
172 | + $cursor = $qb->select('uid') |
|
173 | + ->from('group_user') |
|
174 | + ->where($qb->expr()->eq('gid', $qb->createNamedParameter($gid))) |
|
175 | + ->andWhere($qb->expr()->eq('uid', $qb->createNamedParameter($uid))) |
|
176 | + ->execute(); |
|
177 | + |
|
178 | + $result = $cursor->fetch(); |
|
179 | + $cursor->closeCursor(); |
|
180 | + |
|
181 | + return $result ? true : false; |
|
182 | + } |
|
183 | + |
|
184 | + /** |
|
185 | + * Add a user to a group |
|
186 | + * @param string $uid Name of the user to add to group |
|
187 | + * @param string $gid Name of the group in which add the user |
|
188 | + * @return bool |
|
189 | + * |
|
190 | + * Adds a user to a group. |
|
191 | + */ |
|
192 | + public function addToGroup(string $uid, string $gid): bool { |
|
193 | + $this->fixDI(); |
|
194 | + |
|
195 | + // No duplicate entries! |
|
196 | + if( !$this->inGroup( $uid, $gid )) { |
|
197 | + $qb = $this->dbConn->getQueryBuilder(); |
|
198 | + $qb->insert('group_user') |
|
199 | + ->setValue('uid', $qb->createNamedParameter($uid)) |
|
200 | + ->setValue('gid', $qb->createNamedParameter($gid)) |
|
201 | + ->execute(); |
|
202 | + return true; |
|
203 | + }else{ |
|
204 | + return false; |
|
205 | + } |
|
206 | + } |
|
207 | + |
|
208 | + /** |
|
209 | + * Removes a user from a group |
|
210 | + * @param string $uid Name of the user to remove from group |
|
211 | + * @param string $gid Name of the group from which remove the user |
|
212 | + * @return bool |
|
213 | + * |
|
214 | + * removes the user from a group. |
|
215 | + */ |
|
216 | + public function removeFromGroup(string $uid, string $gid): bool { |
|
217 | + $this->fixDI(); |
|
218 | + |
|
219 | + $qb = $this->dbConn->getQueryBuilder(); |
|
220 | + $qb->delete('group_user') |
|
221 | + ->where($qb->expr()->eq('uid', $qb->createNamedParameter($uid))) |
|
222 | + ->andWhere($qb->expr()->eq('gid', $qb->createNamedParameter($gid))) |
|
223 | + ->execute(); |
|
224 | + |
|
225 | + return true; |
|
226 | + } |
|
227 | + |
|
228 | + /** |
|
229 | + * Get all groups a user belongs to |
|
230 | + * @param string $uid Name of the user |
|
231 | + * @return array an array of group names |
|
232 | + * |
|
233 | + * This function fetches all groups a user belongs to. It does not check |
|
234 | + * if the user exists at all. |
|
235 | + */ |
|
236 | + public function getUserGroups( $uid ) { |
|
237 | + //guests has empty or null $uid |
|
238 | + if ($uid === null || $uid === '') { |
|
239 | + return []; |
|
240 | + } |
|
241 | + |
|
242 | + $this->fixDI(); |
|
243 | + |
|
244 | + // No magic! |
|
245 | + $qb = $this->dbConn->getQueryBuilder(); |
|
246 | + $cursor = $qb->select('gid') |
|
247 | + ->from('group_user') |
|
248 | + ->where($qb->expr()->eq('uid', $qb->createNamedParameter($uid))) |
|
249 | + ->execute(); |
|
250 | + |
|
251 | + $groups = []; |
|
252 | + while( $row = $cursor->fetch()) { |
|
253 | + $groups[] = $row['gid']; |
|
254 | + $this->groupCache[$row['gid']] = $row['gid']; |
|
255 | + } |
|
256 | + $cursor->closeCursor(); |
|
257 | + |
|
258 | + return $groups; |
|
259 | + } |
|
260 | + |
|
261 | + /** |
|
262 | + * get a list of all groups |
|
263 | + * @param string $search |
|
264 | + * @param int $limit |
|
265 | + * @param int $offset |
|
266 | + * @return array an array of group names |
|
267 | + * |
|
268 | + * Returns a list with all groups |
|
269 | + */ |
|
270 | + public function getGroups($search = '', $limit = null, $offset = null) { |
|
271 | + $this->fixDI(); |
|
272 | + |
|
273 | + $query = $this->dbConn->getQueryBuilder(); |
|
274 | + $query->select('gid') |
|
275 | + ->from('groups') |
|
276 | + ->orderBy('gid', 'ASC'); |
|
277 | + |
|
278 | + if ($search !== '') { |
|
279 | + $query->where($query->expr()->iLike('gid', $query->createNamedParameter( |
|
280 | + '%' . $this->dbConn->escapeLikeParameter($search) . '%' |
|
281 | + ))); |
|
282 | + } |
|
283 | + |
|
284 | + $query->setMaxResults($limit) |
|
285 | + ->setFirstResult($offset); |
|
286 | + $result = $query->execute(); |
|
287 | + |
|
288 | + $groups = []; |
|
289 | + while ($row = $result->fetch()) { |
|
290 | + $groups[] = $row['gid']; |
|
291 | + } |
|
292 | + $result->closeCursor(); |
|
293 | + |
|
294 | + return $groups; |
|
295 | + } |
|
296 | + |
|
297 | + /** |
|
298 | + * check if a group exists |
|
299 | + * @param string $gid |
|
300 | + * @return bool |
|
301 | + */ |
|
302 | + public function groupExists($gid) { |
|
303 | + $this->fixDI(); |
|
304 | + |
|
305 | + // Check cache first |
|
306 | + if (isset($this->groupCache[$gid])) { |
|
307 | + return true; |
|
308 | + } |
|
309 | + |
|
310 | + $qb = $this->dbConn->getQueryBuilder(); |
|
311 | + $cursor = $qb->select('gid') |
|
312 | + ->from('groups') |
|
313 | + ->where($qb->expr()->eq('gid', $qb->createNamedParameter($gid))) |
|
314 | + ->execute(); |
|
315 | + $result = $cursor->fetch(); |
|
316 | + $cursor->closeCursor(); |
|
317 | + |
|
318 | + if ($result !== false) { |
|
319 | + $this->groupCache[$gid] = $gid; |
|
320 | + return true; |
|
321 | + } |
|
322 | + return false; |
|
323 | + } |
|
324 | + |
|
325 | + /** |
|
326 | + * get a list of all users in a group |
|
327 | + * @param string $gid |
|
328 | + * @param string $search |
|
329 | + * @param int $limit |
|
330 | + * @param int $offset |
|
331 | + * @return array an array of user ids |
|
332 | + */ |
|
333 | + public function usersInGroup($gid, $search = '', $limit = -1, $offset = 0) { |
|
334 | + $this->fixDI(); |
|
335 | + |
|
336 | + $query = $this->dbConn->getQueryBuilder(); |
|
337 | + $query->select('uid') |
|
338 | + ->from('group_user') |
|
339 | + ->where($query->expr()->eq('gid', $query->createNamedParameter($gid))) |
|
340 | + ->orderBy('uid', 'ASC'); |
|
341 | + |
|
342 | + if ($search !== '') { |
|
343 | + $query->andWhere($query->expr()->like('uid', $query->createNamedParameter( |
|
344 | + '%' . $this->dbConn->escapeLikeParameter($search) . '%' |
|
345 | + ))); |
|
346 | + } |
|
347 | + |
|
348 | + if ($limit !== -1) { |
|
349 | + $query->setMaxResults($limit); |
|
350 | + } |
|
351 | + if ($offset !== 0) { |
|
352 | + $query->setFirstResult($offset); |
|
353 | + } |
|
354 | + |
|
355 | + $result = $query->execute(); |
|
356 | + |
|
357 | + $users = []; |
|
358 | + while ($row = $result->fetch()) { |
|
359 | + $users[] = $row['uid']; |
|
360 | + } |
|
361 | + $result->closeCursor(); |
|
362 | + |
|
363 | + return $users; |
|
364 | + } |
|
365 | + |
|
366 | + /** |
|
367 | + * get the number of all users matching the search string in a group |
|
368 | + * @param string $gid |
|
369 | + * @param string $search |
|
370 | + * @return int |
|
371 | + */ |
|
372 | + public function countUsersInGroup(string $gid, string $search = ''): int { |
|
373 | + $this->fixDI(); |
|
374 | + |
|
375 | + $query = $this->dbConn->getQueryBuilder(); |
|
376 | + $query->select($query->func()->count('*', 'num_users')) |
|
377 | + ->from('group_user') |
|
378 | + ->where($query->expr()->eq('gid', $query->createNamedParameter($gid))); |
|
379 | + |
|
380 | + if ($search !== '') { |
|
381 | + $query->andWhere($query->expr()->like('uid', $query->createNamedParameter( |
|
382 | + '%' . $this->dbConn->escapeLikeParameter($search) . '%' |
|
383 | + ))); |
|
384 | + } |
|
385 | + |
|
386 | + $result = $query->execute(); |
|
387 | + $count = $result->fetchColumn(); |
|
388 | + $result->closeCursor(); |
|
389 | + |
|
390 | + if ($count !== false) { |
|
391 | + $count = (int)$count; |
|
392 | + } else { |
|
393 | + $count = 0; |
|
394 | + } |
|
395 | + |
|
396 | + return $count; |
|
397 | + } |
|
398 | + |
|
399 | + /** |
|
400 | + * get the number of disabled users in a group |
|
401 | + * |
|
402 | + * @param string $search |
|
403 | + * |
|
404 | + * @return int |
|
405 | + */ |
|
406 | + public function countDisabledInGroup(string $gid): int { |
|
407 | + $this->fixDI(); |
|
408 | + |
|
409 | + $query = $this->dbConn->getQueryBuilder(); |
|
410 | + $query->select($query->createFunction('COUNT(DISTINCT ' . $query->getColumnName('uid') . ')')) |
|
411 | + ->from('preferences', 'p') |
|
412 | + ->innerJoin('p', 'group_user', 'g', $query->expr()->eq('p.userid', 'g.uid')) |
|
413 | + ->where($query->expr()->eq('appid', $query->createNamedParameter('core'))) |
|
414 | + ->andWhere($query->expr()->eq('configkey', $query->createNamedParameter('enabled'))) |
|
415 | + ->andWhere($query->expr()->eq('configvalue', $query->createNamedParameter('false'), IQueryBuilder::PARAM_STR)) |
|
416 | + ->andWhere($query->expr()->eq('gid', $query->createNamedParameter($gid), IQueryBuilder::PARAM_STR)); |
|
417 | + |
|
418 | + $result = $query->execute(); |
|
419 | + $count = $result->fetchColumn(); |
|
420 | + $result->closeCursor(); |
|
421 | + |
|
422 | + if ($count !== false) { |
|
423 | + $count = (int)$count; |
|
424 | + } else { |
|
425 | + $count = 0; |
|
426 | + } |
|
427 | + |
|
428 | + return $count; |
|
429 | + } |
|
430 | + |
|
431 | + public function getDisplayName(string $gid): string { |
|
432 | + $this->fixDI(); |
|
433 | + |
|
434 | + $query = $this->dbConn->getQueryBuilder(); |
|
435 | + $query->select('displayname') |
|
436 | + ->from('groups') |
|
437 | + ->where($query->expr()->eq('gid', $query->createNamedParameter($gid))); |
|
438 | + |
|
439 | + $result = $query->execute(); |
|
440 | + $displayName = $result->fetchColumn(); |
|
441 | + $result->closeCursor(); |
|
442 | + |
|
443 | + return (string) $displayName; |
|
444 | + } |
|
445 | + |
|
446 | + public function getGroupDetails(string $gid): array { |
|
447 | + $displayName = $this->getDisplayName($gid); |
|
448 | + if ($displayName !== '') { |
|
449 | + return ['displayName' => $displayName]; |
|
450 | + } |
|
451 | + |
|
452 | + return []; |
|
453 | + } |
|
454 | + |
|
455 | + public function setDisplayName(string $gid, string $displayName): bool { |
|
456 | + if (!$this->groupExists($gid)) { |
|
457 | + return false; |
|
458 | + } |
|
459 | + |
|
460 | + $this->fixDI(); |
|
461 | + |
|
462 | + $displayName = trim($displayName); |
|
463 | + if ($displayName === '') { |
|
464 | + $displayName = $gid; |
|
465 | + } |
|
466 | + |
|
467 | + $query = $this->dbConn->getQueryBuilder(); |
|
468 | + $query->update('groups') |
|
469 | + ->set('displayname', $query->createNamedParameter($displayName)) |
|
470 | + ->where($query->expr()->eq('gid', $query->createNamedParameter($gid))); |
|
471 | + $query->execute(); |
|
472 | + |
|
473 | + return true; |
|
474 | + } |
|
475 | 475 | |
476 | 476 | } |
@@ -49,8 +49,8 @@ discard block |
||
49 | 49 | */ |
50 | 50 | public function getSupportedActions() { |
51 | 51 | $actions = 0; |
52 | - foreach($this->possibleActions AS $action => $methodName) { |
|
53 | - if(method_exists($this, $methodName)) { |
|
52 | + foreach ($this->possibleActions AS $action => $methodName) { |
|
53 | + if (method_exists($this, $methodName)) { |
|
54 | 54 | $actions |= $action; |
55 | 55 | } |
56 | 56 | } |
@@ -67,7 +67,7 @@ discard block |
||
67 | 67 | * compared with \OC\Group\Backend::CREATE_GROUP etc. |
68 | 68 | */ |
69 | 69 | public function implementsActions($actions) { |
70 | - return (bool)($this->getSupportedActions() & $actions); |
|
70 | + return (bool) ($this->getSupportedActions() & $actions); |
|
71 | 71 | } |
72 | 72 | |
73 | 73 | /** |
@@ -28,107 +28,107 @@ |
||
28 | 28 | * Abstract base class for user management |
29 | 29 | */ |
30 | 30 | abstract class Backend implements \OCP\GroupInterface { |
31 | - /** |
|
32 | - * error code for functions not provided by the group backend |
|
33 | - */ |
|
34 | - const NOT_IMPLEMENTED = -501; |
|
31 | + /** |
|
32 | + * error code for functions not provided by the group backend |
|
33 | + */ |
|
34 | + const NOT_IMPLEMENTED = -501; |
|
35 | 35 | |
36 | - protected $possibleActions = [ |
|
37 | - self::CREATE_GROUP => 'createGroup', |
|
38 | - self::DELETE_GROUP => 'deleteGroup', |
|
39 | - self::ADD_TO_GROUP => 'addToGroup', |
|
40 | - self::REMOVE_FROM_GOUP => 'removeFromGroup', |
|
41 | - self::COUNT_USERS => 'countUsersInGroup', |
|
42 | - self::GROUP_DETAILS => 'getGroupDetails', |
|
43 | - self::IS_ADMIN => 'isAdmin', |
|
44 | - ]; |
|
36 | + protected $possibleActions = [ |
|
37 | + self::CREATE_GROUP => 'createGroup', |
|
38 | + self::DELETE_GROUP => 'deleteGroup', |
|
39 | + self::ADD_TO_GROUP => 'addToGroup', |
|
40 | + self::REMOVE_FROM_GOUP => 'removeFromGroup', |
|
41 | + self::COUNT_USERS => 'countUsersInGroup', |
|
42 | + self::GROUP_DETAILS => 'getGroupDetails', |
|
43 | + self::IS_ADMIN => 'isAdmin', |
|
44 | + ]; |
|
45 | 45 | |
46 | - /** |
|
47 | - * Get all supported actions |
|
48 | - * @return int bitwise-or'ed actions |
|
49 | - * |
|
50 | - * Returns the supported actions as int to be |
|
51 | - * compared with \OC\Group\Backend::CREATE_GROUP etc. |
|
52 | - */ |
|
53 | - public function getSupportedActions() { |
|
54 | - $actions = 0; |
|
55 | - foreach($this->possibleActions AS $action => $methodName) { |
|
56 | - if(method_exists($this, $methodName)) { |
|
57 | - $actions |= $action; |
|
58 | - } |
|
59 | - } |
|
46 | + /** |
|
47 | + * Get all supported actions |
|
48 | + * @return int bitwise-or'ed actions |
|
49 | + * |
|
50 | + * Returns the supported actions as int to be |
|
51 | + * compared with \OC\Group\Backend::CREATE_GROUP etc. |
|
52 | + */ |
|
53 | + public function getSupportedActions() { |
|
54 | + $actions = 0; |
|
55 | + foreach($this->possibleActions AS $action => $methodName) { |
|
56 | + if(method_exists($this, $methodName)) { |
|
57 | + $actions |= $action; |
|
58 | + } |
|
59 | + } |
|
60 | 60 | |
61 | - return $actions; |
|
62 | - } |
|
61 | + return $actions; |
|
62 | + } |
|
63 | 63 | |
64 | - /** |
|
65 | - * Check if backend implements actions |
|
66 | - * @param int $actions bitwise-or'ed actions |
|
67 | - * @return bool |
|
68 | - * |
|
69 | - * Returns the supported actions as int to be |
|
70 | - * compared with \OC\Group\Backend::CREATE_GROUP etc. |
|
71 | - */ |
|
72 | - public function implementsActions($actions) { |
|
73 | - return (bool)($this->getSupportedActions() & $actions); |
|
74 | - } |
|
64 | + /** |
|
65 | + * Check if backend implements actions |
|
66 | + * @param int $actions bitwise-or'ed actions |
|
67 | + * @return bool |
|
68 | + * |
|
69 | + * Returns the supported actions as int to be |
|
70 | + * compared with \OC\Group\Backend::CREATE_GROUP etc. |
|
71 | + */ |
|
72 | + public function implementsActions($actions) { |
|
73 | + return (bool)($this->getSupportedActions() & $actions); |
|
74 | + } |
|
75 | 75 | |
76 | - /** |
|
77 | - * is user in group? |
|
78 | - * @param string $uid uid of the user |
|
79 | - * @param string $gid gid of the group |
|
80 | - * @return bool |
|
81 | - * |
|
82 | - * Checks whether the user is member of a group or not. |
|
83 | - */ |
|
84 | - public function inGroup($uid, $gid) { |
|
85 | - return in_array($gid, $this->getUserGroups($uid)); |
|
86 | - } |
|
76 | + /** |
|
77 | + * is user in group? |
|
78 | + * @param string $uid uid of the user |
|
79 | + * @param string $gid gid of the group |
|
80 | + * @return bool |
|
81 | + * |
|
82 | + * Checks whether the user is member of a group or not. |
|
83 | + */ |
|
84 | + public function inGroup($uid, $gid) { |
|
85 | + return in_array($gid, $this->getUserGroups($uid)); |
|
86 | + } |
|
87 | 87 | |
88 | - /** |
|
89 | - * Get all groups a user belongs to |
|
90 | - * @param string $uid Name of the user |
|
91 | - * @return array an array of group names |
|
92 | - * |
|
93 | - * This function fetches all groups a user belongs to. It does not check |
|
94 | - * if the user exists at all. |
|
95 | - */ |
|
96 | - public function getUserGroups($uid) { |
|
97 | - return []; |
|
98 | - } |
|
88 | + /** |
|
89 | + * Get all groups a user belongs to |
|
90 | + * @param string $uid Name of the user |
|
91 | + * @return array an array of group names |
|
92 | + * |
|
93 | + * This function fetches all groups a user belongs to. It does not check |
|
94 | + * if the user exists at all. |
|
95 | + */ |
|
96 | + public function getUserGroups($uid) { |
|
97 | + return []; |
|
98 | + } |
|
99 | 99 | |
100 | - /** |
|
101 | - * get a list of all groups |
|
102 | - * @param string $search |
|
103 | - * @param int $limit |
|
104 | - * @param int $offset |
|
105 | - * @return array an array of group names |
|
106 | - * |
|
107 | - * Returns a list with all groups |
|
108 | - */ |
|
100 | + /** |
|
101 | + * get a list of all groups |
|
102 | + * @param string $search |
|
103 | + * @param int $limit |
|
104 | + * @param int $offset |
|
105 | + * @return array an array of group names |
|
106 | + * |
|
107 | + * Returns a list with all groups |
|
108 | + */ |
|
109 | 109 | |
110 | - public function getGroups($search = '', $limit = -1, $offset = 0) { |
|
111 | - return []; |
|
112 | - } |
|
110 | + public function getGroups($search = '', $limit = -1, $offset = 0) { |
|
111 | + return []; |
|
112 | + } |
|
113 | 113 | |
114 | - /** |
|
115 | - * check if a group exists |
|
116 | - * @param string $gid |
|
117 | - * @return bool |
|
118 | - */ |
|
119 | - public function groupExists($gid) { |
|
120 | - return in_array($gid, $this->getGroups($gid, 1)); |
|
121 | - } |
|
114 | + /** |
|
115 | + * check if a group exists |
|
116 | + * @param string $gid |
|
117 | + * @return bool |
|
118 | + */ |
|
119 | + public function groupExists($gid) { |
|
120 | + return in_array($gid, $this->getGroups($gid, 1)); |
|
121 | + } |
|
122 | 122 | |
123 | - /** |
|
124 | - * get a list of all users in a group |
|
125 | - * @param string $gid |
|
126 | - * @param string $search |
|
127 | - * @param int $limit |
|
128 | - * @param int $offset |
|
129 | - * @return array an array of user ids |
|
130 | - */ |
|
131 | - public function usersInGroup($gid, $search = '', $limit = -1, $offset = 0) { |
|
132 | - return []; |
|
133 | - } |
|
123 | + /** |
|
124 | + * get a list of all users in a group |
|
125 | + * @param string $gid |
|
126 | + * @param string $search |
|
127 | + * @param int $limit |
|
128 | + * @param int $offset |
|
129 | + * @return array an array of user ids |
|
130 | + */ |
|
131 | + public function usersInGroup($gid, $search = '', $limit = -1, $offset = 0) { |
|
132 | + return []; |
|
133 | + } |
|
134 | 134 | } |
@@ -20,4 +20,4 @@ |
||
20 | 20 | * |
21 | 21 | */ |
22 | 22 | |
23 | -require_once __DIR__ . '/v1.php'; |
|
23 | +require_once __DIR__.'/v1.php'; |
@@ -26,8 +26,8 @@ |
||
26 | 26 | $server = \OC::$server; |
27 | 27 | |
28 | 28 | $controller = new \OC\OCS\Provider( |
29 | - 'ocs_provider', |
|
30 | - $server->getRequest(), |
|
31 | - $server->getAppManager() |
|
29 | + 'ocs_provider', |
|
30 | + $server->getRequest(), |
|
31 | + $server->getAppManager() |
|
32 | 32 | ); |
33 | 33 | echo $controller->buildProviderList()->render(); |
@@ -19,7 +19,7 @@ |
||
19 | 19 | * |
20 | 20 | */ |
21 | 21 | |
22 | -require_once __DIR__ . '/../lib/base.php'; |
|
22 | +require_once __DIR__.'/../lib/base.php'; |
|
23 | 23 | |
24 | 24 | header('Content-Type: application/json'); |
25 | 25 |
@@ -1,6 +1,6 @@ |
||
1 | 1 | <?php |
2 | - /** @var array $_ */ |
|
3 | - /** @var \OCP\IL10N $l */ |
|
2 | + /** @var array $_ */ |
|
3 | + /** @var \OCP\IL10N $l */ |
|
4 | 4 | |
5 | 5 | style('core', ['styles', 'header']); |
6 | 6 | ?> |
@@ -14,7 +14,7 @@ discard block |
||
14 | 14 | <ul> |
15 | 15 | <li><?php p($l->t('Remote Address: %s', [$_['remoteAddr']])) ?></li> |
16 | 16 | <li><?php p($l->t('Request ID: %s', [$_['requestID']])) ?></li> |
17 | - <?php if($_['debugMode']): ?> |
|
17 | + <?php if ($_['debugMode']): ?> |
|
18 | 18 | <li><?php p($l->t('Type: %s', [$_['errorClass']])) ?></li> |
19 | 19 | <li><?php p($l->t('Code: %s', [$_['errorCode']])) ?></li> |
20 | 20 | <li><?php p($l->t('Message: %s', [$_['errorMsg']])) ?></li> |
@@ -23,7 +23,7 @@ discard block |
||
23 | 23 | <?php endif; ?> |
24 | 24 | </ul> |
25 | 25 | |
26 | - <?php if($_['debugMode']): ?> |
|
26 | + <?php if ($_['debugMode']): ?> |
|
27 | 27 | <br /> |
28 | 28 | <h3><?php p($l->t('Trace')) ?></h3> |
29 | 29 | <pre><?php p($_['trace']) ?></pre> |
@@ -34,28 +34,28 @@ |
||
34 | 34 | |
35 | 35 | class RemoveCertificate extends Base { |
36 | 36 | |
37 | - /** @var ICertificateManager */ |
|
38 | - protected $certificateManager; |
|
39 | - |
|
40 | - public function __construct(ICertificateManager $certificateManager) { |
|
41 | - $this->certificateManager = $certificateManager; |
|
42 | - parent::__construct(); |
|
43 | - } |
|
44 | - |
|
45 | - protected function configure() { |
|
46 | - $this |
|
47 | - ->setName('security:certificates:remove') |
|
48 | - ->setDescription('remove trusted certificate') |
|
49 | - ->addArgument( |
|
50 | - 'name', |
|
51 | - InputArgument::REQUIRED, |
|
52 | - 'the file name of the certificate to remove' |
|
53 | - ); |
|
54 | - } |
|
55 | - |
|
56 | - protected function execute(InputInterface $input, OutputInterface $output) { |
|
57 | - $name = $input->getArgument('name'); |
|
58 | - |
|
59 | - $this->certificateManager->removeCertificate($name); |
|
60 | - } |
|
37 | + /** @var ICertificateManager */ |
|
38 | + protected $certificateManager; |
|
39 | + |
|
40 | + public function __construct(ICertificateManager $certificateManager) { |
|
41 | + $this->certificateManager = $certificateManager; |
|
42 | + parent::__construct(); |
|
43 | + } |
|
44 | + |
|
45 | + protected function configure() { |
|
46 | + $this |
|
47 | + ->setName('security:certificates:remove') |
|
48 | + ->setDescription('remove trusted certificate') |
|
49 | + ->addArgument( |
|
50 | + 'name', |
|
51 | + InputArgument::REQUIRED, |
|
52 | + 'the file name of the certificate to remove' |
|
53 | + ); |
|
54 | + } |
|
55 | + |
|
56 | + protected function execute(InputInterface $input, OutputInterface $output) { |
|
57 | + $name = $input->getArgument('name'); |
|
58 | + |
|
59 | + $this->certificateManager->removeCertificate($name); |
|
60 | + } |
|
61 | 61 | } |
@@ -34,64 +34,64 @@ |
||
34 | 34 | |
35 | 35 | class ListCertificates extends Base { |
36 | 36 | |
37 | - /** @var ICertificateManager */ |
|
38 | - protected $certificateManager; |
|
39 | - /** @var IL10N */ |
|
40 | - protected $l; |
|
37 | + /** @var ICertificateManager */ |
|
38 | + protected $certificateManager; |
|
39 | + /** @var IL10N */ |
|
40 | + protected $l; |
|
41 | 41 | |
42 | - public function __construct(ICertificateManager $certificateManager, IL10N $l) { |
|
43 | - $this->certificateManager = $certificateManager; |
|
44 | - $this->l = $l; |
|
45 | - parent::__construct(); |
|
46 | - } |
|
42 | + public function __construct(ICertificateManager $certificateManager, IL10N $l) { |
|
43 | + $this->certificateManager = $certificateManager; |
|
44 | + $this->l = $l; |
|
45 | + parent::__construct(); |
|
46 | + } |
|
47 | 47 | |
48 | - protected function configure() { |
|
49 | - $this |
|
50 | - ->setName('security:certificates') |
|
51 | - ->setDescription('list trusted certificates'); |
|
52 | - parent::configure(); |
|
53 | - } |
|
48 | + protected function configure() { |
|
49 | + $this |
|
50 | + ->setName('security:certificates') |
|
51 | + ->setDescription('list trusted certificates'); |
|
52 | + parent::configure(); |
|
53 | + } |
|
54 | 54 | |
55 | - protected function execute(InputInterface $input, OutputInterface $output) { |
|
56 | - $outputType = $input->getOption('output'); |
|
57 | - if ($outputType === self::OUTPUT_FORMAT_JSON || $outputType === self::OUTPUT_FORMAT_JSON_PRETTY) { |
|
58 | - $certificates = array_map(function (ICertificate $certificate) { |
|
59 | - return [ |
|
60 | - 'name' => $certificate->getName(), |
|
61 | - 'common_name' => $certificate->getCommonName(), |
|
62 | - 'organization' => $certificate->getOrganization(), |
|
63 | - 'expire' => $certificate->getExpireDate()->format(\DateTime::ATOM), |
|
64 | - 'issuer' => $certificate->getIssuerName(), |
|
65 | - 'issuer_organization' => $certificate->getIssuerOrganization(), |
|
66 | - 'issue_date' => $certificate->getIssueDate()->format(\DateTime::ATOM) |
|
67 | - ]; |
|
68 | - }, $this->certificateManager->listCertificates()); |
|
69 | - if ($outputType === self::OUTPUT_FORMAT_JSON) { |
|
70 | - $output->writeln(json_encode(array_values($certificates))); |
|
71 | - } else { |
|
72 | - $output->writeln(json_encode(array_values($certificates), JSON_PRETTY_PRINT)); |
|
73 | - } |
|
74 | - } else { |
|
75 | - $table = new Table($output); |
|
76 | - $table->setHeaders([ |
|
77 | - 'File Name', |
|
78 | - 'Common Name', |
|
79 | - 'Organization', |
|
80 | - 'Valid Until', |
|
81 | - 'Issued By' |
|
82 | - ]); |
|
55 | + protected function execute(InputInterface $input, OutputInterface $output) { |
|
56 | + $outputType = $input->getOption('output'); |
|
57 | + if ($outputType === self::OUTPUT_FORMAT_JSON || $outputType === self::OUTPUT_FORMAT_JSON_PRETTY) { |
|
58 | + $certificates = array_map(function (ICertificate $certificate) { |
|
59 | + return [ |
|
60 | + 'name' => $certificate->getName(), |
|
61 | + 'common_name' => $certificate->getCommonName(), |
|
62 | + 'organization' => $certificate->getOrganization(), |
|
63 | + 'expire' => $certificate->getExpireDate()->format(\DateTime::ATOM), |
|
64 | + 'issuer' => $certificate->getIssuerName(), |
|
65 | + 'issuer_organization' => $certificate->getIssuerOrganization(), |
|
66 | + 'issue_date' => $certificate->getIssueDate()->format(\DateTime::ATOM) |
|
67 | + ]; |
|
68 | + }, $this->certificateManager->listCertificates()); |
|
69 | + if ($outputType === self::OUTPUT_FORMAT_JSON) { |
|
70 | + $output->writeln(json_encode(array_values($certificates))); |
|
71 | + } else { |
|
72 | + $output->writeln(json_encode(array_values($certificates), JSON_PRETTY_PRINT)); |
|
73 | + } |
|
74 | + } else { |
|
75 | + $table = new Table($output); |
|
76 | + $table->setHeaders([ |
|
77 | + 'File Name', |
|
78 | + 'Common Name', |
|
79 | + 'Organization', |
|
80 | + 'Valid Until', |
|
81 | + 'Issued By' |
|
82 | + ]); |
|
83 | 83 | |
84 | - $rows = array_map(function (ICertificate $certificate) { |
|
85 | - return [ |
|
86 | - $certificate->getName(), |
|
87 | - $certificate->getCommonName(), |
|
88 | - $certificate->getOrganization(), |
|
89 | - $this->l->l('date', $certificate->getExpireDate()), |
|
90 | - $certificate->getIssuerName() |
|
91 | - ]; |
|
92 | - }, $this->certificateManager->listCertificates()); |
|
93 | - $table->setRows($rows); |
|
94 | - $table->render(); |
|
95 | - } |
|
96 | - } |
|
84 | + $rows = array_map(function (ICertificate $certificate) { |
|
85 | + return [ |
|
86 | + $certificate->getName(), |
|
87 | + $certificate->getCommonName(), |
|
88 | + $certificate->getOrganization(), |
|
89 | + $this->l->l('date', $certificate->getExpireDate()), |
|
90 | + $certificate->getIssuerName() |
|
91 | + ]; |
|
92 | + }, $this->certificateManager->listCertificates()); |
|
93 | + $table->setRows($rows); |
|
94 | + $table->render(); |
|
95 | + } |
|
96 | + } |
|
97 | 97 | } |
@@ -55,7 +55,7 @@ discard block |
||
55 | 55 | protected function execute(InputInterface $input, OutputInterface $output) { |
56 | 56 | $outputType = $input->getOption('output'); |
57 | 57 | if ($outputType === self::OUTPUT_FORMAT_JSON || $outputType === self::OUTPUT_FORMAT_JSON_PRETTY) { |
58 | - $certificates = array_map(function (ICertificate $certificate) { |
|
58 | + $certificates = array_map(function(ICertificate $certificate) { |
|
59 | 59 | return [ |
60 | 60 | 'name' => $certificate->getName(), |
61 | 61 | 'common_name' => $certificate->getCommonName(), |
@@ -81,7 +81,7 @@ discard block |
||
81 | 81 | 'Issued By' |
82 | 82 | ]); |
83 | 83 | |
84 | - $rows = array_map(function (ICertificate $certificate) { |
|
84 | + $rows = array_map(function(ICertificate $certificate) { |
|
85 | 85 | return [ |
86 | 86 | $certificate->getName(), |
87 | 87 | $certificate->getCommonName(), |
@@ -33,36 +33,36 @@ |
||
33 | 33 | |
34 | 34 | class ImportCertificate extends Base { |
35 | 35 | |
36 | - /** @var ICertificateManager */ |
|
37 | - protected $certificateManager; |
|
36 | + /** @var ICertificateManager */ |
|
37 | + protected $certificateManager; |
|
38 | 38 | |
39 | - public function __construct(ICertificateManager $certificateManager) { |
|
40 | - $this->certificateManager = $certificateManager; |
|
41 | - parent::__construct(); |
|
42 | - } |
|
39 | + public function __construct(ICertificateManager $certificateManager) { |
|
40 | + $this->certificateManager = $certificateManager; |
|
41 | + parent::__construct(); |
|
42 | + } |
|
43 | 43 | |
44 | - protected function configure() { |
|
45 | - $this |
|
46 | - ->setName('security:certificates:import') |
|
47 | - ->setDescription('import trusted certificate') |
|
48 | - ->addArgument( |
|
49 | - 'path', |
|
50 | - InputArgument::REQUIRED, |
|
51 | - 'path to the certificate to import' |
|
52 | - ); |
|
53 | - } |
|
44 | + protected function configure() { |
|
45 | + $this |
|
46 | + ->setName('security:certificates:import') |
|
47 | + ->setDescription('import trusted certificate') |
|
48 | + ->addArgument( |
|
49 | + 'path', |
|
50 | + InputArgument::REQUIRED, |
|
51 | + 'path to the certificate to import' |
|
52 | + ); |
|
53 | + } |
|
54 | 54 | |
55 | - protected function execute(InputInterface $input, OutputInterface $output) { |
|
56 | - $path = $input->getArgument('path'); |
|
55 | + protected function execute(InputInterface $input, OutputInterface $output) { |
|
56 | + $path = $input->getArgument('path'); |
|
57 | 57 | |
58 | - if (!file_exists($path)) { |
|
59 | - $output->writeln('<error>certificate not found</error>'); |
|
60 | - return; |
|
61 | - } |
|
58 | + if (!file_exists($path)) { |
|
59 | + $output->writeln('<error>certificate not found</error>'); |
|
60 | + return; |
|
61 | + } |
|
62 | 62 | |
63 | - $certData = file_get_contents($path); |
|
64 | - $name = basename($path); |
|
63 | + $certData = file_get_contents($path); |
|
64 | + $name = basename($path); |
|
65 | 65 | |
66 | - $this->certificateManager->addCertificate($certData, $name); |
|
67 | - } |
|
66 | + $this->certificateManager->addCertificate($certData, $name); |
|
67 | + } |
|
68 | 68 | } |