aboutsummaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorCôme Chilliet <come.chilliet@nextcloud.com>2024-01-04 11:12:03 +0100
committerCôme Chilliet <91878298+come-nc@users.noreply.github.com>2024-01-04 11:51:33 +0100
commit6d0f0fc01b15f1a8812582cca13ac9bf75024672 (patch)
tree230608f7a0429a43abfaf21e196126c299b7b68d /apps
parent11124c72e6d727212ae52beb0feeeff4c13471ba (diff)
downloadnextcloud-server-6d0f0fc01b15f1a8812582cca13ac9bf75024672.tar.gz
nextcloud-server-6d0f0fc01b15f1a8812582cca13ac9bf75024672.zip
Fix upgrade of user_ldap when oc_group_members contains duplicated uids
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
Diffstat (limited to 'apps')
-rw-r--r--apps/user_ldap/lib/Migration/Version1190Date20230706134108.php18
1 files changed, 13 insertions, 5 deletions
diff --git a/apps/user_ldap/lib/Migration/Version1190Date20230706134108.php b/apps/user_ldap/lib/Migration/Version1190Date20230706134108.php
index 3f554f56e64..71fdb536b1a 100644
--- a/apps/user_ldap/lib/Migration/Version1190Date20230706134108.php
+++ b/apps/user_ldap/lib/Migration/Version1190Date20230706134108.php
@@ -99,13 +99,21 @@ class Version1190Date20230706134108 extends SimpleMigrationStep {
$result = $query->executeQuery();
while ($row = $result->fetch()) {
$knownUsers = unserialize($row['owncloudusers']);
+ $knownUsers = array_unique($knownUsers);
foreach ($knownUsers as $knownUser) {
- $insert
- ->setParameter('groupid', $row['owncloudname'])
- ->setParameter('userid', $knownUser)
- ;
+ try {
+ $insert
+ ->setParameter('groupid', $row['owncloudname'])
+ ->setParameter('userid', $knownUser)
+ ;
- $insert->executeStatement();
+ $insert->executeStatement();
+ } catch (\OCP\DB\Exception $e) {
+ /*
+ * If it fails on unique constaint violation it may just be left over value from previous half-migration
+ * If it fails on something else, ignore as well, data will be filled by background job later anyway
+ */
+ }
}
}
$result->closeCursor();