fix(imagor): strip query string from logo URL embedded in watermark filter #39

Merged
csaeum merged 1 commit from fix/imagor-logo-url-query-string into main 2026-08-09 17:09:54 +00:00
Owner

Closes #38.

Root Cause

Ein rohes ? mitten im watermark()-Filter-Argument (Logo-URL mit ?ts=...) wird von allem, was den generierten String als reguläre URL behandelt (Browser, Lazy-Load-JS, Twig), als Beginn der Query-String der äußeren Ressource gelesen — Standard-URL-Semantik nach RFC 3986, kein Bug einer Zwischenschicht. Alles danach (restliche Filter, Bildpfad) rutscht aus dem Pfad und kommt nie bei imagor an. Nach Aktivierung von remote_thumbnails liefen dadurch alle Thumbnails mit gesetztem ai_type komplett ins Leere (auch im Admin).

War vermutlich schon die eigentliche Ursache des ursprünglichen Issues #32 (dort ebenfalls mit ?ts=... in der verschachtelten URL).

Fix

ImagorUrlBuilder::normalizeEmbeddedFilterUrl() entfernt die Query-String der Logo-URL, bevor sie ins watermark()-Filter-Argument eingesetzt wird. Die äußere Bild-URL am Pfadende ist davon nicht betroffen.

Testplan

  • 57/57 Unit-Tests grün in DDEV
  • php -l
  • Live-Test nach Deploy: Bilder laden wieder (Admin + Storefront), Wasserzeichen erscheint
Closes #38. ## Root Cause Ein rohes `?` mitten im `watermark()`-Filter-Argument (Logo-URL mit `?ts=...`) wird von allem, was den generierten String als reguläre URL behandelt (Browser, Lazy-Load-JS, Twig), als Beginn der Query-String der äußeren Ressource gelesen — Standard-URL-Semantik nach RFC 3986, kein Bug einer Zwischenschicht. Alles danach (restliche Filter, Bildpfad) rutscht aus dem Pfad und kommt nie bei imagor an. Nach Aktivierung von `remote_thumbnails` liefen dadurch alle Thumbnails mit gesetztem `ai_type` komplett ins Leere (auch im Admin). War vermutlich schon die eigentliche Ursache des ursprünglichen Issues #32 (dort ebenfalls mit `?ts=...` in der verschachtelten URL). ## Fix `ImagorUrlBuilder::normalizeEmbeddedFilterUrl()` entfernt die Query-String der Logo-URL, bevor sie ins `watermark()`-Filter-Argument eingesetzt wird. Die äußere Bild-URL am Pfadende ist davon nicht betroffen. ## Testplan - [x] 57/57 Unit-Tests grün in DDEV - [x] `php -l` - [ ] Live-Test nach Deploy: Bilder laden wieder (Admin + Storefront), Wasserzeichen erscheint
A raw "?" inside the watermark() filter argument is read as the start of
the OUTER URL's query string by anything that treats the generated string
as a regular URL (browser, lazy-load JS, Twig) - standard URL semantics,
not a bug in an intermediate layer. Everything after it falls out of the
path and never reaches imagor, breaking image loading entirely once
remote_thumbnails routes all thumbnails through the watermark filter.
csaeum merged commit c763427028 into main 2026-08-09 17:09:54 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
SW-Plugins/wsc_swplugin_aiseotools!39
No description provided.