summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/accessibility/css/style.scss10
-rw-r--r--apps/accessibility/l10n/lv.js6
-rw-r--r--apps/accessibility/l10n/lv.json6
-rw-r--r--apps/files/lib/Search/FilesSearchProvider.php11
-rw-r--r--apps/user_ldap/composer/composer/autoload_classmap.php4
-rw-r--r--apps/user_ldap/composer/composer/autoload_static.php4
-rw-r--r--apps/user_ldap/lib/Migration/GroupMappingMigration.php69
-rw-r--r--apps/user_ldap/lib/Migration/Version1130Date20211102154716.php49
-rw-r--r--apps/user_ldap/lib/Migration/Version1130Date20220110154717.php77
-rw-r--r--apps/user_ldap/lib/Migration/Version1130Date20220110154718.php99
-rw-r--r--apps/user_ldap/lib/Migration/Version1130Date20220110154719.php56
11 files changed, 360 insertions, 31 deletions
diff --git a/apps/accessibility/css/style.scss b/apps/accessibility/css/style.scss
index b00aa5d06fe..9dd2e428d80 100644
--- a/apps/accessibility/css/style.scss
+++ b/apps/accessibility/css/style.scss
@@ -61,3 +61,13 @@
}
}
}
+
+@media (max-width: ($breakpoint-mobile / 2)) {
+ .app-settings #accessibility .preview-list .preview {
+ display: unset;
+
+ .preview-image {
+ height: 150px;
+ }
+ }
+}
diff --git a/apps/accessibility/l10n/lv.js b/apps/accessibility/l10n/lv.js
index 00888b2e764..f0333910f2f 100644
--- a/apps/accessibility/l10n/lv.js
+++ b/apps/accessibility/l10n/lv.js
@@ -1,16 +1,18 @@
OC.L10N.register(
"accessibility",
{
- "Dark theme" : "Tumšs motīvs",
+ "Dark theme" : "Tumšais motīvs",
"Enable dark theme" : "Iespējot tumšo motīvu",
"A dark theme to ease your eyes by reducing the overall luminosity and brightness. It is still under development, so please report any issues you may find." : "Tumšais motīvs atslogo Tavas acis samazinot kopējo atspīdumu un spilgtumu. Tas joprojām atrodas izstrādes režīmā, tādēļ dod ziņu par jebkurām atrastajām problēmām.",
"High contrast mode" : "Augsta kontrasta režīms",
"Enable high contrast mode" : "Iespējot augsta kontrasta režīmu",
"A high contrast mode to ease your navigation. Visual quality will be reduced but clarity will be increased." : "Augsta kontrasta režīms atvieglo navigāciju. Vizuālā kvalitāte tiks samazināta, bet skaidrība paaugstināsies.",
"Dyslexia font" : "Dislektisks fonts",
+ "Enable dyslexia font" : "Iespējot disleksijas fontu",
"OpenDyslexic is a free typeface/font designed to mitigate some of the common reading errors caused by dyslexia." : "OpenDyslexic ir bezmaksas fonts, kas veidots, lai mazinātu tipiskākos lasīšanas traucējumus, ko izraisa disleksija.",
"Accessibility" : "Pieejamība",
"Accessibility options for nextcloud" : "nextcloud Pieejamības uzstādījumi",
- "Provides multiple accessibilities options to ease your use of Nextcloud" : "Piedāvā vairākus pieejamības uzstādījumus, kas atvieglo Nextcloud lietošanu."
+ "Provides multiple accessibilities options to ease your use of Nextcloud" : "Piedāvā vairākus pieejamības uzstādījumus, kas atvieglo Nextcloud lietošanu.",
+ "Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "Universāla pieejamība mums ir ļoti svarīga. Mēs sekojam tīmekļa standartiem un panākam ka visu var lietot arī bez datorpeles, un palīgprogrammatūras, kā ekrāna lasītāja. Mēs mērķējam uz būšanu piekāpīgi ar {vadlīnijām}Tīmekļa satura pieejamības vadlīnijas{piesaistīts} 2.1 uz AA līmeņa, ar augsta kontrasta režīmu pat AAA līmenī"
},
"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);");
diff --git a/apps/accessibility/l10n/lv.json b/apps/accessibility/l10n/lv.json
index fe58da5e39a..48ef6cc3cca 100644
--- a/apps/accessibility/l10n/lv.json
+++ b/apps/accessibility/l10n/lv.json
@@ -1,14 +1,16 @@
{ "translations": {
- "Dark theme" : "Tumšs motīvs",
+ "Dark theme" : "Tumšais motīvs",
"Enable dark theme" : "Iespējot tumšo motīvu",
"A dark theme to ease your eyes by reducing the overall luminosity and brightness. It is still under development, so please report any issues you may find." : "Tumšais motīvs atslogo Tavas acis samazinot kopējo atspīdumu un spilgtumu. Tas joprojām atrodas izstrādes režīmā, tādēļ dod ziņu par jebkurām atrastajām problēmām.",
"High contrast mode" : "Augsta kontrasta režīms",
"Enable high contrast mode" : "Iespējot augsta kontrasta režīmu",
"A high contrast mode to ease your navigation. Visual quality will be reduced but clarity will be increased." : "Augsta kontrasta režīms atvieglo navigāciju. Vizuālā kvalitāte tiks samazināta, bet skaidrība paaugstināsies.",
"Dyslexia font" : "Dislektisks fonts",
+ "Enable dyslexia font" : "Iespējot disleksijas fontu",
"OpenDyslexic is a free typeface/font designed to mitigate some of the common reading errors caused by dyslexia." : "OpenDyslexic ir bezmaksas fonts, kas veidots, lai mazinātu tipiskākos lasīšanas traucējumus, ko izraisa disleksija.",
"Accessibility" : "Pieejamība",
"Accessibility options for nextcloud" : "nextcloud Pieejamības uzstādījumi",
- "Provides multiple accessibilities options to ease your use of Nextcloud" : "Piedāvā vairākus pieejamības uzstādījumus, kas atvieglo Nextcloud lietošanu."
+ "Provides multiple accessibilities options to ease your use of Nextcloud" : "Piedāvā vairākus pieejamības uzstādījumus, kas atvieglo Nextcloud lietošanu.",
+ "Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "Universāla pieejamība mums ir ļoti svarīga. Mēs sekojam tīmekļa standartiem un panākam ka visu var lietot arī bez datorpeles, un palīgprogrammatūras, kā ekrāna lasītāja. Mēs mērķējam uz būšanu piekāpīgi ar {vadlīnijām}Tīmekļa satura pieejamības vadlīnijas{piesaistīts} 2.1 uz AA līmeņa, ar augsta kontrasta režīmu pat AAA līmenī"
},"pluralForm" :"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);"
} \ No newline at end of file
diff --git a/apps/files/lib/Search/FilesSearchProvider.php b/apps/files/lib/Search/FilesSearchProvider.php
index 2361b8a2d07..ba2d4bafa30 100644
--- a/apps/files/lib/Search/FilesSearchProvider.php
+++ b/apps/files/lib/Search/FilesSearchProvider.php
@@ -118,13 +118,12 @@ class FilesSearchProvider implements IProvider {
// Generate thumbnail url
$thumbnailUrl = $this->urlGenerator->linkToRouteAbsolute('core.Preview.getPreviewByFileId', ['x' => 32, 'y' => 32, 'fileId' => $result->getId()]);
$path = $userFolder->getRelativePath($result->getPath());
+
+ // Use shortened link to centralize the various
+ // files/folder url redirection in files.View.showFile
$link = $this->urlGenerator->linkToRoute(
- 'files.view.index',
- [
- 'dir' => dirname($path),
- 'scrollto' => $result->getName(),
- 'openfile' => $result->getId(),
- ]
+ 'files.View.showFile',
+ ['fileid' => $result->getId()]
);
$searchResultEntry = new SearchResultEntry(
diff --git a/apps/user_ldap/composer/composer/autoload_classmap.php b/apps/user_ldap/composer/composer/autoload_classmap.php
index 186f28db828..ed8d535a6c5 100644
--- a/apps/user_ldap/composer/composer/autoload_classmap.php
+++ b/apps/user_ldap/composer/composer/autoload_classmap.php
@@ -52,6 +52,7 @@ return array(
'OCA\\User_LDAP\\Mapping\\AbstractMapping' => $baseDir . '/../lib/Mapping/AbstractMapping.php',
'OCA\\User_LDAP\\Mapping\\GroupMapping' => $baseDir . '/../lib/Mapping/GroupMapping.php',
'OCA\\User_LDAP\\Mapping\\UserMapping' => $baseDir . '/../lib/Mapping/UserMapping.php',
+ 'OCA\\User_LDAP\\Migration\\GroupMappingMigration' => $baseDir . '/../lib/Migration/GroupMappingMigration.php',
'OCA\\User_LDAP\\Migration\\RemoveRefreshTime' => $baseDir . '/../lib/Migration/RemoveRefreshTime.php',
'OCA\\User_LDAP\\Migration\\SetDefaultProvider' => $baseDir . '/../lib/Migration/SetDefaultProvider.php',
'OCA\\User_LDAP\\Migration\\UUIDFix' => $baseDir . '/../lib/Migration/UUIDFix.php',
@@ -62,6 +63,9 @@ return array(
'OCA\\User_LDAP\\Migration\\Version1010Date20200630192842' => $baseDir . '/../lib/Migration/Version1010Date20200630192842.php',
'OCA\\User_LDAP\\Migration\\Version1120Date20210917155206' => $baseDir . '/../lib/Migration/Version1120Date20210917155206.php',
'OCA\\User_LDAP\\Migration\\Version1130Date20211102154716' => $baseDir . '/../lib/Migration/Version1130Date20211102154716.php',
+ 'OCA\\User_LDAP\\Migration\\Version1130Date20220110154717' => $baseDir . '/../lib/Migration/Version1130Date20220110154717.php',
+ 'OCA\\User_LDAP\\Migration\\Version1130Date20220110154718' => $baseDir . '/../lib/Migration/Version1130Date20220110154718.php',
+ 'OCA\\User_LDAP\\Migration\\Version1130Date20220110154719' => $baseDir . '/../lib/Migration/Version1130Date20220110154719.php',
'OCA\\User_LDAP\\Notification\\Notifier' => $baseDir . '/../lib/Notification/Notifier.php',
'OCA\\User_LDAP\\PagedResults\\IAdapter' => $baseDir . '/../lib/PagedResults/IAdapter.php',
'OCA\\User_LDAP\\PagedResults\\Php73' => $baseDir . '/../lib/PagedResults/Php73.php',
diff --git a/apps/user_ldap/composer/composer/autoload_static.php b/apps/user_ldap/composer/composer/autoload_static.php
index 121439f0239..9ce20914307 100644
--- a/apps/user_ldap/composer/composer/autoload_static.php
+++ b/apps/user_ldap/composer/composer/autoload_static.php
@@ -67,6 +67,7 @@ class ComposerStaticInitUser_LDAP
'OCA\\User_LDAP\\Mapping\\AbstractMapping' => __DIR__ . '/..' . '/../lib/Mapping/AbstractMapping.php',
'OCA\\User_LDAP\\Mapping\\GroupMapping' => __DIR__ . '/..' . '/../lib/Mapping/GroupMapping.php',
'OCA\\User_LDAP\\Mapping\\UserMapping' => __DIR__ . '/..' . '/../lib/Mapping/UserMapping.php',
+ 'OCA\\User_LDAP\\Migration\\GroupMappingMigration' => __DIR__ . '/..' . '/../lib/Migration/GroupMappingMigration.php',
'OCA\\User_LDAP\\Migration\\RemoveRefreshTime' => __DIR__ . '/..' . '/../lib/Migration/RemoveRefreshTime.php',
'OCA\\User_LDAP\\Migration\\SetDefaultProvider' => __DIR__ . '/..' . '/../lib/Migration/SetDefaultProvider.php',
'OCA\\User_LDAP\\Migration\\UUIDFix' => __DIR__ . '/..' . '/../lib/Migration/UUIDFix.php',
@@ -77,6 +78,9 @@ class ComposerStaticInitUser_LDAP
'OCA\\User_LDAP\\Migration\\Version1010Date20200630192842' => __DIR__ . '/..' . '/../lib/Migration/Version1010Date20200630192842.php',
'OCA\\User_LDAP\\Migration\\Version1120Date20210917155206' => __DIR__ . '/..' . '/../lib/Migration/Version1120Date20210917155206.php',
'OCA\\User_LDAP\\Migration\\Version1130Date20211102154716' => __DIR__ . '/..' . '/../lib/Migration/Version1130Date20211102154716.php',
+ 'OCA\\User_LDAP\\Migration\\Version1130Date20220110154717' => __DIR__ . '/..' . '/../lib/Migration/Version1130Date20220110154717.php',
+ 'OCA\\User_LDAP\\Migration\\Version1130Date20220110154718' => __DIR__ . '/..' . '/../lib/Migration/Version1130Date20220110154718.php',
+ 'OCA\\User_LDAP\\Migration\\Version1130Date20220110154719' => __DIR__ . '/..' . '/../lib/Migration/Version1130Date20220110154719.php',
'OCA\\User_LDAP\\Notification\\Notifier' => __DIR__ . '/..' . '/../lib/Notification/Notifier.php',
'OCA\\User_LDAP\\PagedResults\\IAdapter' => __DIR__ . '/..' . '/../lib/PagedResults/IAdapter.php',
'OCA\\User_LDAP\\PagedResults\\Php73' => __DIR__ . '/..' . '/../lib/PagedResults/Php73.php',
diff --git a/apps/user_ldap/lib/Migration/GroupMappingMigration.php b/apps/user_ldap/lib/Migration/GroupMappingMigration.php
new file mode 100644
index 00000000000..f89bebe57d6
--- /dev/null
+++ b/apps/user_ldap/lib/Migration/GroupMappingMigration.php
@@ -0,0 +1,69 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * @copyright Copyright (c) 2020 Joas Schilling <coding@schilljs.com>
+ *
+ * @author Côme Chilliet <come.chilliet@nextcloud.com>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCA\User_LDAP\Migration;
+
+use OCP\IDBConnection;
+use OCP\Migration\SimpleMigrationStep;
+
+abstract class GroupMappingMigration extends SimpleMigrationStep {
+
+ /** @var IDBConnection */
+ private $dbc;
+
+ public function __construct(IDBConnection $dbc) {
+ $this->dbc = $dbc;
+ }
+
+ protected function copyGroupMappingData(string $sourceTable, string $destinationTable): void {
+ $insert = $this->dbc->getQueryBuilder();
+ $insert->insert($destinationTable)
+ ->values([
+ 'ldap_dn' => $insert->createParameter('ldap_dn'),
+ 'owncloud_name' => $insert->createParameter('owncloud_name'),
+ 'directory_uuid' => $insert->createParameter('directory_uuid'),
+ 'ldap_dn_hash' => $insert->createParameter('ldap_dn_hash'),
+ ]);
+
+ $query = $this->dbc->getQueryBuilder();
+ $query->select('*')
+ ->from($sourceTable);
+
+
+ $result = $query->executeQuery();
+ while ($row = $result->fetch()) {
+ $insert
+ ->setParameter('ldap_dn', $row['ldap_dn'])
+ ->setParameter('owncloud_name', $row['owncloud_name'])
+ ->setParameter('directory_uuid', $row['directory_uuid'])
+ ->setParameter('ldap_dn_hash', $row['ldap_dn_hash'])
+ ;
+
+ $insert->executeStatement();
+ }
+ $result->closeCursor();
+ }
+}
diff --git a/apps/user_ldap/lib/Migration/Version1130Date20211102154716.php b/apps/user_ldap/lib/Migration/Version1130Date20211102154716.php
index 82afb4965de..8695f90ca65 100644
--- a/apps/user_ldap/lib/Migration/Version1130Date20211102154716.php
+++ b/apps/user_ldap/lib/Migration/Version1130Date20211102154716.php
@@ -73,11 +73,12 @@ class Version1130Date20211102154716 extends SimpleMigrationStep {
$changeSchema = true;
}
$column = $table->getColumn('ldap_dn');
- if ($column->getLength() < 4096) {
- $column->setLength(4096);
- $changeSchema = true;
- }
if ($tableName === 'ldap_user_mapping') {
+ if ($column->getLength() < 4096) {
+ $column->setLength(4096);
+ $changeSchema = true;
+ }
+
if ($table->hasIndex('ldap_dn_users')) {
$table->dropIndex('ldap_dn_users');
$changeSchema = true;
@@ -91,23 +92,29 @@ class Version1130Date20211102154716 extends SimpleMigrationStep {
$changeSchema = true;
}
} else {
- if ($table->hasIndex('owncloud_name_groups')) {
- $table->dropIndex('owncloud_name_groups');
- $changeSchema = true;
- }
- if (!$table->hasIndex('ldap_group_dn_hashes')) {
- $table->addUniqueIndex(['ldap_dn_hash'], 'ldap_group_dn_hashes');
- $changeSchema = true;
- }
- if (!$table->hasIndex('ldap_group_directory_uuid')) {
- $table->addUniqueIndex(['directory_uuid'], 'ldap_group_directory_uuid');
- $changeSchema = true;
- }
- if (!$table->hasPrimaryKey() || ($table->getPrimaryKeyColumns() !== ['owncloud_name'])) {
- $table->dropPrimaryKey();
- $table->setPrimaryKey(['owncloud_name']);
- $changeSchema = true;
- }
+ // We need to copy the table twice to be able to change primary key, prepare the backup table
+ $table2 = $schema->createTable('ldap_group_mapping_backup');
+ $table2->addColumn('ldap_dn', Types::STRING, [
+ 'notnull' => true,
+ 'length' => 4096,
+ 'default' => '',
+ ]);
+ $table2->addColumn('owncloud_name', Types::STRING, [
+ 'notnull' => true,
+ 'length' => 64,
+ 'default' => '',
+ ]);
+ $table2->addColumn('directory_uuid', Types::STRING, [
+ 'notnull' => true,
+ 'length' => 255,
+ 'default' => '',
+ ]);
+ $table2->addColumn('ldap_dn_hash', Types::STRING, [
+ 'notnull' => false,
+ 'length' => 64,
+ ]);
+ $table2->setPrimaryKey(['owncloud_name'], 'lgm_backup_primary');
+ $changeSchema = true;
}
}
diff --git a/apps/user_ldap/lib/Migration/Version1130Date20220110154717.php b/apps/user_ldap/lib/Migration/Version1130Date20220110154717.php
new file mode 100644
index 00000000000..2ffda4198c1
--- /dev/null
+++ b/apps/user_ldap/lib/Migration/Version1130Date20220110154717.php
@@ -0,0 +1,77 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * @copyright Copyright (c) 2020 Joas Schilling <coding@schilljs.com>
+ *
+ * @author Côme Chilliet <come.chilliet@nextcloud.com>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCA\User_LDAP\Migration;
+
+use Closure;
+use OCP\DB\ISchemaWrapper;
+use OCP\Migration\IOutput;
+
+class Version1130Date20220110154717 extends GroupMappingMigration {
+ public function getName() {
+ return 'Copy ldap_group_mapping data to backup table if needed';
+ }
+
+ /**
+ * @param IOutput $output
+ * @param \Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
+ * @param array $options
+ * @since 13.0.0
+ */
+ public function preSchemaChange(IOutput $output, \Closure $schemaClosure, array $options) {
+ /** @var ISchemaWrapper $schema */
+ $schema = $schemaClosure();
+
+ if (!$schema->hasTable('ldap_group_mapping_backup')) {
+ // Backup table does not exist
+ return;
+ }
+
+ $output->startProgress();
+ $this->copyGroupMappingData('ldap_group_mapping', 'ldap_group_mapping_backup');
+ $output->finishProgress();
+ }
+
+ /**
+ * @param IOutput $output
+ * @param Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
+ * @param array $options
+ * @return null|ISchemaWrapper
+ */
+ public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper {
+ /** @var ISchemaWrapper $schema */
+ $schema = $schemaClosure();
+
+ if (!$schema->hasTable('ldap_group_mapping_backup')) {
+ // Backup table does not exist
+ return null;
+ }
+
+ $schema->dropTable('ldap_group_mapping');
+
+ return $schema;
+ }
+}
diff --git a/apps/user_ldap/lib/Migration/Version1130Date20220110154718.php b/apps/user_ldap/lib/Migration/Version1130Date20220110154718.php
new file mode 100644
index 00000000000..5f146ab06a5
--- /dev/null
+++ b/apps/user_ldap/lib/Migration/Version1130Date20220110154718.php
@@ -0,0 +1,99 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * @copyright Copyright (c) 2020 Joas Schilling <coding@schilljs.com>
+ *
+ * @author Côme Chilliet <come.chilliet@nextcloud.com>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCA\User_LDAP\Migration;
+
+use Closure;
+use OCP\DB\ISchemaWrapper;
+use OCP\DB\Types;
+use OCP\Migration\IOutput;
+
+class Version1130Date20220110154718 extends GroupMappingMigration {
+ public function getName() {
+ return 'Copy ldap_group_mapping data from backup table and if needed';
+ }
+
+ /**
+ * @param IOutput $output
+ * @param Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
+ * @param array $options
+ * @return null|ISchemaWrapper
+ */
+ public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper {
+ /** @var ISchemaWrapper $schema */
+ $schema = $schemaClosure();
+
+ if (!$schema->hasTable('ldap_group_mapping_backup')) {
+ // Backup table does not exist
+ return null;
+ }
+
+ $table = $schema->createTable('ldap_group_mapping');
+ $table->addColumn('ldap_dn', Types::STRING, [
+ 'notnull' => true,
+ 'length' => 4096,
+ 'default' => '',
+ ]);
+ $table->addColumn('owncloud_name', Types::STRING, [
+ 'notnull' => true,
+ 'length' => 64,
+ 'default' => '',
+ ]);
+ $table->addColumn('directory_uuid', Types::STRING, [
+ 'notnull' => true,
+ 'length' => 255,
+ 'default' => '',
+ ]);
+ $table->addColumn('ldap_dn_hash', Types::STRING, [
+ 'notnull' => false,
+ 'length' => 64,
+ ]);
+ $table->setPrimaryKey(['owncloud_name']);
+ $table->addUniqueIndex(['ldap_dn_hash'], 'ldap_group_dn_hashes');
+ $table->addUniqueIndex(['directory_uuid'], 'ldap_group_directory_uuid');
+
+ return $schema;
+ }
+
+ /**
+ * @param IOutput $output
+ * @param Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
+ * @param array $options
+ */
+ public function postSchemaChange(IOutput $output, Closure $schemaClosure, array $options) {
+ /** @var ISchemaWrapper $schema */
+ $schema = $schemaClosure();
+
+ if (!$schema->hasTable('ldap_group_mapping_backup')) {
+ // Backup table does not exist
+ return;
+ }
+
+ $output->startProgress();
+ $this->copyGroupMappingData('ldap_group_mapping_backup', 'ldap_group_mapping');
+ $output->finishProgress();
+ }
+}
diff --git a/apps/user_ldap/lib/Migration/Version1130Date20220110154719.php b/apps/user_ldap/lib/Migration/Version1130Date20220110154719.php
new file mode 100644
index 00000000000..9e9ed38cb70
--- /dev/null
+++ b/apps/user_ldap/lib/Migration/Version1130Date20220110154719.php
@@ -0,0 +1,56 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * @copyright Copyright (c) 2020 Joas Schilling <coding@schilljs.com>
+ *
+ * @author Côme Chilliet <come.chilliet@nextcloud.com>
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+namespace OCA\User_LDAP\Migration;
+
+use Closure;
+use OCP\DB\ISchemaWrapper;
+use OCP\Migration\IOutput;
+use OCP\Migration\SimpleMigrationStep;
+
+class Version1130Date20220110154719 extends SimpleMigrationStep {
+ public function getName() {
+ return 'Drop ldap_group_mapping_backup';
+ }
+
+ /**
+ * @param IOutput $output
+ * @param Closure $schemaClosure The `\Closure` returns a `ISchemaWrapper`
+ * @param array $options
+ * @return null|ISchemaWrapper
+ */
+ public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper {
+ /** @var ISchemaWrapper $schema */
+ $schema = $schemaClosure();
+
+ if ($schema->hasTable('ldap_group_mapping_backup')) {
+ $schema->dropTable('ldap_group_mapping_backup');
+ return $schema;
+ }
+
+ return null;
+ }
+}