fix(external_thumbnail): Service-Erkennung auf unterstützte Dienste beschränken - #498
Merged
skerbis merged 1 commit intoAug 13, 2026
Conversation
…beschraenken Das Regex zur Service-Erkennung aus dem Dateinamen traf jede .jpg-Datei mit mindestens zwei Unterstrichen im Namen, nicht nur die virtuellen Namen im Schema service_videoid_hash.jpg. Der erste Namensteil wurde dadurch als Service interpretiert und loeste eine rex_exception aus. Das Muster wird jetzt aus den Keys von self::SERVICES aufgebaut, damit kuenftige Dienste automatisch mitgezogen werden. Bei unbekanntem Service wird still das Fallback-Bild erzeugt statt zu werfen - konsistent mit dem Verhalten bei fehlenden Parametern, und der catch landete ohnehin beim selben Fallback. Die isset-Pruefung bleibt als Absicherung des Parameter-Pfads erhalten.
Member
|
danke |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
lib/effect_external_thumbnail.php:37ermittelt den Video-Service aus dem Dateinamen, trifft dabei aber jede.jpg-Datei mit mindestens zwei Unterstrichen im Namen – nicht nur die virtuellen Namen im Schemaservice_videoid_hash.jpg. Der erste Namensteil wird als Service interpretiert, Zeile 52 wirft dannrex_exception: External thumbnail effect: Unsupported service "...".Relevant wird das im Zusammenspiel mit
cache_warmup:install.php:182-216legt den Medientypconsent_manager_thumbnailmit diesem Effect an, und cache_warmup rendert jedes Bild durch jeden Typ ausrex_media_manager_type. Pro betroffenem Bild entsteht dadurch ein Log-Eintrag und über dencatch(Zeile 111-115) ein graues 480×360-Platzhalterbild, das der Media Manager anschließend als reguläre Cache-Datei ablegt.Trifft ein Dateiname zufällig auf
youtube_odervimeo_, wird statt der Exception ein echter HTTP-Request an den externen Dienst abgesetzt – ebenfalls einmal pro Bild.Änderung
self::SERVICES. Das Muster wird dynamisch aufgebaut, damit ein künftig ergänzter Dienst automatisch mitgezogen wird und die Konstante die einzige Quelle der Wahrheit bleibt.throwbei unbekanntem Service entfällt zugunsten des Fallback-Bilds. Das ist konsistent mit dem Verhalten bei fehlenden Parametern (Zeile 45-48), wo bereits still aufcreateFallbackImage()gegangen wird; dercatchlandete ohnehin beim selben Fallback, der Log-Eintrag hatte also keinen diagnostischen Wert.isset-Prüfung bleibt erhalten: sie sichert weiterhin den Parameter-Pfad ($this->params['service']) ab, wo weiterhin ein beliebiger Wert ankommen kann.Verhalten vorher / nachher
youtube_<id>_<hash>.jpgvimeo_<id>_<hash>.jpgfoo_bar_baz.jpgfoo→ Exceptionfoo_bar_baz_qux.jpgfoo→ Exceptionyoutubex_bar_baz.jpgyoutubex→ Exceptionmy_youtube_clip.jpgmy→ ExceptionDie beiden echten Anwendungsfälle verhalten sich unverändert, alle anderen Namen fallen still durch.
Workaround für Betroffene bis zum Release
Umgebung
Gefunden mit consent_manager 5.8.3, cache_warmup 4.0.0, media_manager 2.18.3, REDAXO 5.21.4.
Den CHANGELOG habe ich bewusst nicht angefasst, da die Versionsnummer des nächsten Releases bei euch liegt – sagt gern Bescheid, dann ergänze ich einen Eintrag.