aboutsummaryrefslogtreecommitdiffstats
path: root/apps/dav/lib/Migration
diff options
context:
space:
mode:
Diffstat (limited to 'apps/dav/lib/Migration')
-rw-r--r--apps/dav/lib/Migration/Version1027Date20230504122946.php21
1 files changed, 14 insertions, 7 deletions
diff --git a/apps/dav/lib/Migration/Version1027Date20230504122946.php b/apps/dav/lib/Migration/Version1027Date20230504122946.php
index be3d19e8a80..998be8111ca 100644
--- a/apps/dav/lib/Migration/Version1027Date20230504122946.php
+++ b/apps/dav/lib/Migration/Version1027Date20230504122946.php
@@ -29,6 +29,8 @@ namespace OCA\DAV\Migration;
use Closure;
use OCA\DAV\CardDAV\SyncService;
use OCP\DB\ISchemaWrapper;
+use OCP\IConfig;
+use OCP\IUserManager;
use OCP\Migration\IOutput;
use OCP\Migration\SimpleMigrationStep;
use Psr\Container\ContainerExceptionInterface;
@@ -37,22 +39,27 @@ use Psr\Log\LoggerInterface;
use Throwable;
class Version1027Date20230504122946 extends SimpleMigrationStep {
- private SyncService $syncService;
- private LoggerInterface $logger;
-
- public function __construct(SyncService $syncService, LoggerInterface $logger) {
- $this->syncService = $syncService;
- $this->logger = $logger;
- }
+ public function __construct(private SyncService $syncService,
+ private LoggerInterface $logger,
+ private IUserManager $userManager,
+ private IConfig $config) {}
/**
* @param IOutput $output
* @param Closure(): ISchemaWrapper $schemaClosure
* @param array $options
*/
public function postSchemaChange(IOutput $output, Closure $schemaClosure, array $options): void {
+ if($this->userManager->countUsers() > 1000) {
+ $this->config->setAppValue('dav', 'needs_system_address_book_sync', 'yes');
+ $output->info('Could not sync system address books during update - too many user records have been found. Please call occ dav:sync-system-addressbook manually.');
+ return;
+ }
+
try {
$this->syncService->syncInstance();
+ $this->config->setAppValue('dav', 'needs_system_address_book_sync', 'no');
} catch (Throwable $e) {
+ $this->config->setAppValue('dav', 'needs_system_address_book_sync', 'yes');
$this->logger->error('Could not sync system address books during update', [
'exception' => $e,
]);