From 13660bbc63ac246bbcc74dfe9165c9568a6a4a03 Mon Sep 17 00:00:00 2001 From: Nikolas Evers Date: Fri, 14 Aug 2026 13:26:31 +0200 Subject: [PATCH 1/7] ci: verify extension against lowest dependencies --- .github/workflows/php.yaml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/.github/workflows/php.yaml b/.github/workflows/php.yaml index b03e4f0e2..3abf8d291 100644 --- a/.github/workflows/php.yaml +++ b/.github/workflows/php.yaml @@ -25,3 +25,22 @@ jobs: uses: ./.github/workflows/action-phpstan.yml with: extension_name: ${{ github.event.repository.name }} + + extension_verifier: + name: Extension Verifier (lowest) + runs-on: ubuntu-latest + steps: + - name: Checkout SwagMigrationAssistant + uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + + - name: Remove PHPStan config + run: rm phpstan.neon.dist + + - name: Allow composer to resolve advisory-affected releases + run: composer config policy.advisories.block false + + - name: Run verifier + uses: shopware/github-actions/extension-verifier@main + with: + action: check + check-against: lowest From e7b7e7bfba52c6343a72326e385a4ffcae9395de Mon Sep 17 00:00:00 2001 From: Nikolas Evers Date: Fri, 14 Aug 2026 13:51:37 +0200 Subject: [PATCH 2/7] fix: dbal compatibility of attribute reader --- CHANGELOG.md | 1 + CHANGELOG_de-DE.md | 1 + phpstan.neon.dist | 3 +++ src/Profile/Shopware/Gateway/Local/Reader/AttributeReader.php | 4 ++-- 4 files changed, 7 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 875df68e6..56d8fadfe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ - #17832 - Fixed attribute migration so custom fields with an empty label no longer abort the run. The reader now keeps the `column_name` in the attribute configuration. - #12748 - Fixed order migration so `product.sales` is recalculated from persisted order line items after migrated orders are written. Cancelled orders are excluded from the sales calculation. +- Fixed attribute migration on installations that resolve Doctrine DBAL 4.2, where reading attributes through the Shopware local gateway aborted the run. # 18.0.0 diff --git a/CHANGELOG_de-DE.md b/CHANGELOG_de-DE.md index 0b917fccc..7156fae3b 100644 --- a/CHANGELOG_de-DE.md +++ b/CHANGELOG_de-DE.md @@ -2,6 +2,7 @@ - #17832 - Die Attribut-Migration wurde korrigiert, sodass Zusatzfelder mit leerem Label die Migration nicht mehr abbrechen. Der Reader behält nun den `column_name` in der Attributkonfiguration. - #12748 - Die Migration von Bestellungen wurde korrigiert, sodass `product.sales` nach dem Schreiben migrierter Bestellungen anhand der persistierten Bestellpositionen neu berechnet wird. Stornierte Bestellungen werden dabei nicht berücksichtigt. +- Die Attribut-Migration wurde für Installationen korrigiert, die Doctrine DBAL 4.2 auflösen. Dort brach das Lesen der Attribute über das lokale Shopware-Gateway die Migration ab. # 18.0.0 diff --git a/phpstan.neon.dist b/phpstan.neon.dist index 47c7c4755..5455f057a 100644 --- a/phpstan.neon.dist +++ b/phpstan.neon.dist @@ -48,6 +48,9 @@ parameters: - message: '#Call to deprecated method listTableForeignKeys\(\) of class Doctrine\\DBAL\\Schema\\AbstractSchemaManager#' paths: - src/Profile/Shopware/Gateway/Local/Reader/AttributeReader.php + - message: '#Call to deprecated method getLocalColumns\(\) of class Doctrine\\DBAL\\Schema\\ForeignKeyConstraint#' + paths: + - src/Profile/Shopware/Gateway/Local/Reader/AttributeReader.php # TODO: The MainOrContainer type cannot fully express its state after nested array mutations - identifier: parameterByRef.type diff --git a/src/Profile/Shopware/Gateway/Local/Reader/AttributeReader.php b/src/Profile/Shopware/Gateway/Local/Reader/AttributeReader.php index f17bbf89b..77309a7c1 100644 --- a/src/Profile/Shopware/Gateway/Local/Reader/AttributeReader.php +++ b/src/Profile/Shopware/Gateway/Local/Reader/AttributeReader.php @@ -9,7 +9,6 @@ use Doctrine\DBAL\Schema\Column; use Doctrine\DBAL\Schema\ForeignKeyConstraint; -use Doctrine\DBAL\Schema\Name\UnqualifiedName; use Doctrine\DBAL\Types\AsciiStringType; use Doctrine\DBAL\Types\BigIntType; use Doctrine\DBAL\Types\BinaryType; @@ -192,7 +191,8 @@ private function cleanupColumns(array $columns, array $foreignKeys): array $fks = []; foreach ($foreignKeys as $foreignKey) { - $fks[] = array_map(static fn (UnqualifiedName $name) => $name->toString(), $foreignKey->getReferencingColumnNames()); + // getLocalColumns() is deprecated, but getReferencingColumnNames() needs DBAL 4.3+ (Shopware 6.7.0/6.7.1 can lock DBAL 4.2) + $fks[] = $foreignKey->getLocalColumns(); } if ($fks !== []) { From af94cfc1fe28e029fb563c1da35611257807bc53 Mon Sep 17 00:00:00 2001 From: Nikolas Evers Date: Fri, 14 Aug 2026 14:44:30 +0200 Subject: [PATCH 3/7] ci: temporarily point verifier at exclude branch --- .github/workflows/php.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/php.yaml b/.github/workflows/php.yaml index 3abf8d291..a6612bfd3 100644 --- a/.github/workflows/php.yaml +++ b/.github/workflows/php.yaml @@ -40,7 +40,7 @@ jobs: run: composer config policy.advisories.block false - name: Run verifier - uses: shopware/github-actions/extension-verifier@main + uses: shopware/github-actions/extension-verifier@extension-verifier-exclude with: action: check check-against: lowest From 642f6c3f6baab432efff37f989f13001473d5faf Mon Sep 17 00:00:00 2001 From: Nikolas Evers Date: Fri, 14 Aug 2026 14:46:52 +0200 Subject: [PATCH 4/7] ci: exclude stylelint from verifier check --- .github/workflows/php.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/php.yaml b/.github/workflows/php.yaml index a6612bfd3..123b96145 100644 --- a/.github/workflows/php.yaml +++ b/.github/workflows/php.yaml @@ -44,3 +44,4 @@ jobs: with: action: check check-against: lowest + exclude: stylelint From 0f67d121503d04464d233a95cc5c6a47e7ce368e Mon Sep 17 00:00:00 2001 From: Nikolas Evers Date: Fri, 14 Aug 2026 15:22:30 +0200 Subject: [PATCH 5/7] chore: suggest shopware/storefront dependency --- composer.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/composer.json b/composer.json index b64699e06..11cce2021 100644 --- a/composer.json +++ b/composer.json @@ -12,6 +12,9 @@ "require": { "shopware/core": "~6.7" }, + "suggest": { + "shopware/storefront": "Required for migrating themes and their sales channel assignments" + }, "extra": { "shopware-plugin-class": "SwagMigrationAssistant\\SwagMigrationAssistant", "plugin-icon": "src/Resources/config/plugin.png", From 0e5100aeee108eb77cf449b86b919bfca31741aa Mon Sep 17 00:00:00 2001 From: Nikolas Evers Date: Fri, 14 Aug 2026 15:24:23 +0200 Subject: [PATCH 6/7] ci: ignore symfony di helpers in extension verifier --- .shopware-extension.yml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 .shopware-extension.yml diff --git a/.shopware-extension.yml b/.shopware-extension.yml new file mode 100644 index 000000000..3627338f5 --- /dev/null +++ b/.shopware-extension.yml @@ -0,0 +1,8 @@ +# yaml-language-server: $schema=https://shopware.github.io/shopware-cli/shopware-extension-schema.json +compatibility_date: '2026-08-14' + +validation: + ignore: + # The verifier's PHPStan cannot see functions defined in vendor PSR-4 files, these resolve at runtime. + - message: 'Function service not found' + - message: 'Function tagged_iterator not found' From 3740ff493c651ea3cf351bb561b93bf5c55d6c23 Mon Sep 17 00:00:00 2001 From: Nikolas Evers Date: Mon, 17 Aug 2026 10:26:54 +0200 Subject: [PATCH 7/7] chore: use main action branch --- .github/workflows/php.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/php.yaml b/.github/workflows/php.yaml index 123b96145..de63ad92e 100644 --- a/.github/workflows/php.yaml +++ b/.github/workflows/php.yaml @@ -40,7 +40,7 @@ jobs: run: composer config policy.advisories.block false - name: Run verifier - uses: shopware/github-actions/extension-verifier@extension-verifier-exclude + uses: shopware/github-actions/extension-verifier@main with: action: check check-against: lowest