tbaddade / redaxo_url

REDAXO 5 AddOn zur URL-Generierung für eigene AddOns (ehemals Url Control, ehemals Frau Schultze)
MIT License
46 stars 22 forks source link

Whoops wenn Artikel über $article_content->getArticleTemplate() ausgelesen wird #246

Closed TobiasKrais closed 1 year ago

TobiasKrais commented 2 years ago

Wird ein Artikel über $article_content->getArticleTemplate() ausgelesen und in dem Template die Funktion $urlSeo->getTags() aufgerufen, kommt es zum nachfolgenden Whoops. Das Szenario tritt beim Versand im MultiNewsletter auf.

Error: Call to a member function getTitleTag() on null File: redaxo/src/addons/url/lib/Url/Seo.php Line: 37

Stacktrace | Function | File | Line | | -------------------------------------------- | ------------------------------------------------------------------------ | -------- | | Url\Seo->getTags | redaxo/src/addons/d2u_helper/lib/d2u_addon_frontend_helper.php | 203 | | d2u_addon_frontend_helper::getMetaTags | rex:///template/9 | 10 | | require | redaxo/src/addons/structure/plugins/content/lib/article_content_base.php | 482 | | rex_article_content_base->{closure} | redaxo/src/core/lib/util/timer.php | 57 | | rex_timer::measure | redaxo/src/addons/structure/plugins/content/lib/article_content_base.php | 483 | | rex_article_content_base->getArticleTemplate | redaxo/src/addons/multinewsletter/lib/newsletter.php | 309 | | MultinewsletterNewsletter->readArticle | redaxo/src/addons/multinewsletter/lib/newsletter.php | 146 | | MultinewsletterNewsletter::factory | redaxo/src/addons/multinewsletter/pages/newsletter.php | 237 | | require | redaxo/src/core/lib/packages/package.php | 285 | | rex_package->includeFile | redaxo/src/core/lib/be/controller.php | 485 | | rex_be_controller::{closure} | redaxo/src/core/lib/util/timer.php | 57 | | rex_timer::measure | redaxo/src/core/lib/be/controller.php | 486 | | rex_be_controller::includePath | redaxo/src/core/lib/be/controller.php | 432 | | rex_be_controller::includeCurrentPageSubPath | redaxo/src/addons/multinewsletter/pages/index.php | 29 | | require | redaxo/src/core/lib/packages/package.php | 285 | | rex_package->includeFile | redaxo/src/core/lib/be/controller.php | 485 | | rex_be_controller::{closure} | redaxo/src/core/lib/util/timer.php | 57 | | rex_timer::measure | redaxo/src/core/lib/be/controller.php | 486 | | rex_be_controller::includePath | redaxo/src/core/lib/be/controller.php | 415 | | rex_be_controller::includeCurrentPage | redaxo/src/core/backend.php | 238 | | require | redaxo/src/core/boot.php | 143 | | require | redaxo/index.php | 9 |
System report (REDAXO 5.13.2, PHP 8.0.13, MariaDB 10.5.11) | REDAXO | | | ------------: | :--------- | | Version | 5.13.2 | | PHP | | | ------------: | :--------- | | Version | 8.0.13 | | OPcache | no | | Xdebug | no | | Database | | | ------------: | :-------------- | | Version | MariaDB 10.5.11 | | Character set | utf8 | | Server | | | ------------: | :--------- | | OS | Linux | | SAPI | fpm-fcgi | | Webserver | Apache | | Request | | | ------------: | :----------- | | Browser | Firefox/96.0 | | Protocol | HTTP/2.0 | | HTTPS | yes | | Packages | | | ----------------------: | :------------ | | backup | 2.8.0 | | be_branding | 1.7 | | be_style | 3.0.1 | | be_style/customizer | 3.0.1 | | be_style/redaxo | 3.0.1 | | cookie_consent | 3.0.0-beta3 | | cronjob | 2.8.2 | | d2u_courses | 3.2.2 | | d2u_courses/kufer_sync | 3.2.2 | | d2u_courses/locations | 3.2.2 | | d2u_helper | 1.8.9 | | d2u_jobs | 1.2.1 | | d2u_linkbox | 1.2.4 | | d2u_news | 1.1.3 | | emailobfuscator | 3.0.0 | | install | 2.9.3 | | media_manager | 2.12.1 | | mediapool | 2.11.2 | | metainfo | 2.8.4 | | multinewsletter | 3.2.8 | | osmproxy | 1.6.0 | | phpmailer | 2.11.1 | | plyr | 3.15.3 | | project | dev | | search_it | 6.9.0 | | search_it/autocomplete | 6.9.0 | | search_it/documentation | 6.9.0 | | search_it/plaintext | 6.9.0 | | search_it/stats | 6.9.0 | | sprog | 1.3.0 | | statistics | 2.0.0-beta.15 | | structure | 2.13.2 | | structure/content | 2.13.2 | | tinymce4 | 1.2.1 | | uploader | 2.3.0 | | url | 2.0.1 | | users | 2.8.2 | | ycom | 4.0.6 | | ycom/auth | 4.0.6 | | ycom/group | 4.0.6 | | ycom/media_auth | 4.0.6 | | yform | 3.4.2 | | yform/docs | 3.3.1 | | yform/email | 3.4.2 | | yform/manager | 3.4.2 | | yform_spam_protection | 1.2.1 | | yrewrite | 2.8.3 |
tbaddade commented 2 years ago

Das ist nicht gut geschrieben in der Class. Die Class geht derzeit vom Frontend aus. Dein Newsletter wird aber vermutlich aus dem Backend verschickt und damit bleiben die Properties null.

Als schnelle Lösung könntest du hier auf rex::isFrontend() prüfen.

TobiasKrais commented 2 years ago

Ah, OK. Kann ich die Klasse auch manuell im Backend initialisieren? Vielleicht sollten wir den Titel des Issues auf "Rewriter im Backend initialisieren" ändern.

tbaddade commented 2 years ago

Kann ich die Klasse auch manuell im Backend initialisieren?

Eine Variante wäre, wenn du eine Subclass für dich schreibst. Ob du dann die tatsächlichen Tags bekommst die du erwartest, müsste noch geprüft werden.

Eine andere Variante, wenn du in deinem Template auf den Aufruf der Metatags im Newsletter verzichtest.

TobiasKrais commented 2 years ago

Ich werde den Aufruf im D2U Helper Addon erst mal auf isFrontend() einschränken.

tbaddade commented 1 year ago

Das sollte mit diesem Commit d4e45c50a1ba5b1c4b6a79f5426d7b281feedb62 erledigt sein.