updateDatabaseSchemaForAllPackages(); foreach ($packagesToSetUp as $packageKey => $package) { $this->extensionConfiguration->synchronizeExtConfTemplateWithLocalConfiguration($packageKey); $event = $this->eventDispatcher->dispatch( new PackageInitializationEvent( extensionKey: $packageKey, package: $package, packageActivated: $packageActivated, container: $container, emitter: $emitter, ), ); if ($event->hasStorageEntry(CheckForImportRequirements::class)) { $messages[] = new FlashMessage( $event->getStorageEntry(CheckForImportRequirements::class)->getResult()['exception']?->getMessage() ?? '', '', ContextualFeedbackSeverity::WARNING ); } } return $messages; } private function updateDatabaseSchemaForAllPackages(): void { $sqlStatements = []; $sqlStatements[] = $this->sqlReader->getTablesDefinitionString(); $sqlStatements = $this->sqlReader->getCreateTableStatementArray(implode(LF . LF, array_filter($sqlStatements))); $updateStatements = $this->schemaMigrator->getUpdateSuggestions($sqlStatements); $updateStatements = array_merge_recursive(...array_values($updateStatements)); $selectedStatements = []; foreach (['add', 'change', 'create_table', 'change_table'] as $action) { if (empty($updateStatements[$action])) { continue; } $statements = array_combine(array_keys($updateStatements[$action]), array_fill(0, count($updateStatements[$action]), true)); $selectedStatements = array_merge( $selectedStatements, $statements ); } $this->schemaMigrator->migrate($sqlStatements, $selectedStatements); } }