FriendsOfREDAXO / yform_usability

Ergänzt YForm um nützliche Funktionen wie Drag & Drop und Status On/Off.
MIT License
42 stars 3 forks source link

Call to undefined method Model\News::addQueryDefaultFilters() #130

Closed tbaddade closed 1 year ago

tbaddade commented 1 year ago

Description / Beschreibung

Der Fehler passiert im Frontend und Backend. Die Klasse Model\News liegt im project AddOn. Weshalb sich jetzt yform_usabiliy da einklinkt, bleibt mir ein Rätsel.

Affected versions / Verwendete Versionen

REDAXO: 5.14.2 PHP: 7.4.29 AddOns:

Packages
yform 4.0.4
url 2.1.0
yform_usability 2.0.7

Did it whoops? / Whoops erhalten?

Error: Call to undefined method Model\News::addQueryDefaultFilters() File: src/addons/yform_usability/lib/Extensions.php Line: 449

Stacktrace | Function | File | Line | | -------------------------------------------- | ----------------------------------------------------------------- | -------- | | yform\usability\Extensions::ext__urlQuery | src/core/lib/extension.php | 52 | | rex_extension::{closure} | src/core/lib/util/timer.php | 57 | | rex_timer::measure | src/core/lib/extension.php | 63 | | rex_extension::registerPoint | src/addons/url/lib/Url/Profile.php | 680 | | Url\Profile->buildQuery | src/addons/url/lib/Url/Profile.php | 597 | | Url\Profile->getDataset | src/addons/url/lib/Url/Profile.php | 282 | | Url\Profile->buildUrlsByDatasetId | src/addons/url/lib/Url/UrlManager.php | 365 | | Url\UrlManager::getRewriteUrl | src/addons/url/boot.php | 79 | | rex_package->{closure} | src/core/lib/extension.php | 52 | | rex_extension::{closure} | src/core/lib/util/timer.php | 57 | | rex_timer::measure | src/core/lib/extension.php | 63 | | rex_extension::registerPoint | src/addons/structure/functions/function_rex_url.php | 39 | | rex_getUrl | src/addons/project/lib/Model/News.php | 212 | | Model\News->getUrl | src/addons/project/lib/View/News.php | 47 | | View\News::getTeaser | src/addons/project/lib/View/News.php | 74 | | View\News::getLastList | rex:///module/7/output | 46 | | require | var/cache/addons/structure/1.1.content | 472 | | require | src/addons/structure/plugins/content/lib/article_content.php | 123 | | rex_article_content->getArticle | src/addons/project/lib/Page.php | 69 | | Project\Page->getContent | src/addons/project/lib/Page.php | 62 | | Project\Page::get | rex:///template/1 | 10 | | require | src/addons/structure/plugins/content/lib/article_content_base.php | 460 | | rex_article_content_base->{closure} | src/core/lib/util/timer.php | 57 | | rex_timer::measure | src/addons/structure/plugins/content/lib/article_content_base.php | 461 | | rex_article_content_base->getArticleTemplate | src/addons/structure/plugins/content/boot.php | 60 | | rex_package::{closure} | src/core/lib/extension.php | 52 | | rex_extension::{closure} | src/core/lib/util/timer.php | 57 | | rex_timer::measure | src/core/lib/extension.php | 63 | | rex_extension::registerPoint | src/core/frontend.php | 26 | | require | src/core/boot.php | 143 | | require | public/index.php | 12 |
alxndr-w commented 1 year ago

Hab das auch über mein Add-on "neues". /cc @iriswerner

eaCe commented 1 year ago

Ich wundere mich darüber, dass scheinbar der EP in Usability vor dem EP im URL Addon eingebaut wurde. Übersehe ich hier etwas? grafik grafik

tbaddade commented 1 year ago

Ich wundere mich darüber, dass scheinbar der EP in Usability vor dem EP im URL Addon eingebaut wurde. Übersehe ich hier etwas?

Kreativ hat einen eigenen URL-Fork. Ich vermute, dass ich irgendwann diese Änderung nachgezogen hatte und es jetzt deshalb zu diesem Konflikt kommt.

palber commented 1 year ago

Wir sind gerade dabei unseren Fork des URL-Addon wieder rückzubauen.

Zu diesem Thema: Wenn ich das richtig gesehen habe, hängt sich yform_usability hier in die URL-Addon Logik rein, sodass es von einem Profil nur URLs generiert, wo status = 1 ist.

Finde diese Logik etwas fragwürdig? Was ist wenn die Tabelle kein Feld "status" hat? Zudem hat diese ja eig. gar nichts mit yform zu tun und wäre in diesem Addon somit Inhaltlich auch nicht richtig verordnet?

Ich denke, man sollte sich hier nicht mehr in diesen EP reinhängen. Somit in der Extension-Klasse die Zeile 20 rausnehmen, sowie auch die komplette ext__urlQuery Methode.

Ist dann natürlich bzgl. backward compatibility nicht so schön, falls sich hier jemand auf diese Logik verlassen hat und im URL-Profil nicht zusätzlich manuell abprüft. Kann dann bei Updates dazuführen, dass ungewollt URLs erzeugt werden ...

tbaddade commented 1 year ago

@palber Was genau wolltet ihr an der Stelle bezwecken? Vielleicht ist das ja durchaus sinnvoll und man müsste es nur umbauen.

palber commented 1 year ago

@tbaddade Unser Intention war es hier, per Default dem URL-Profil mitzugeben, dass nur für Datensätze mit status = 1 URLs generiert werden sollen. Dies deshalb, da immer mal wieder vergessen wurde im URL-Profil die entsprechende Restriction zu hinterlegen.

Dies aber über yform_usability "hardcoded" zu lösen finde ich den falschen Ansatz. Wenn die Logik gewünscht ist, kann man sicher Projekt-Spezifisch ja über den EP reinhängen, aber aus yform_usability würde ich dies rausnehmen!

Bleibt nur die Problematik bzgl. Backward compatibility. Außer das man im Changelog aktiv drauf hinweist, dass dies ein "breaking change" ist, wüsste ich auf die schnelle keinen anderen Ansatz.

tbaddade commented 1 year ago

Danke für die Erklärung

Bleibt nur die Problematik bzgl. Backward compatibility. Außer das man im Changelog aktiv drauf hinweist, dass dies ein "breaking change" ist, wüsste ich auf die schnelle keinen anderen Ansatz.

Version anheben im Changelog darauf hinweisen und ab in den Installer.

alxndr-w commented 1 year ago

Hier bei mir auch.

Error: Call to undefined method event_category::addQueryDefaultFilters() File: src\addons\yform_usability\lib\Extensions.php Line: 449

Stacktrace | Function | File | Line | | -------------------------------------------- | ----------------------------------------------------------------- | -------- | | yform\usability\Extensions::ext__urlQuery | src\core\lib\extension.php | 52 | | rex_extension::{closure} | src\core\lib\util\timer.php | 63 | | rex_timer::measure | src\core\lib\extension.php | 63 | | rex_extension::registerPoint | src\addons\url\lib\Url\Profile.php | 680 | | Url\Profile->buildQuery | src\addons\url\lib\Url\Profile.php | 597 | | Url\Profile->getDataset | src\addons\url\lib\Url\Profile.php | 282 | | Url\Profile->buildUrlsByDatasetId | src\addons\url\lib\Url\UrlManager.php | 365 | | Url\UrlManager::getRewriteUrl | src\addons\url\boot.php | 79 | | rex_package->{closure} | src\core\lib\extension.php | 52 | | rex_extension::{closure} | src\core\lib\util\timer.php | 63 | | rex_timer::measure | src\core\lib\extension.php | 63 | | rex_extension::registerPoint | src\addons\structure\functions\function_rex_url.php | 39 | | rex_getUrl | src\addons\events\lib\event_category.php | 27 | | event_category->getUrl | src\addons\msg\fragments\msg_register-list.php | 38 | | require | src\core\lib\fragment.php | 121 | | rex_fragment->{closure} | src\core\lib\util\timer.php | 63 | | rex_timer::measure | src\core\lib\fragment.php | 124 | | rex_fragment->parse | src\addons\plus_bs5\lib\bs5_fragment.php | 10 | | bs5_fragment->parse | rex:\\module\output | 24 | | require | var\cache\addons\structure.1.content | 94 | | require | src\addons\structure\plugins\content\lib\article_content.php | 123 | | rex_article_content->getArticle | rex:\\template | 8 | | require | src\addons\structure\plugins\content\lib\article_content_base.php | 460 | | rex_article_content_base->{closure} | src\core\lib\util\timer.php | 63 | | rex_timer::measure | src\addons\structure\plugins\content\lib\article_content_base.php | 461 | | rex_article_content_base->getArticleTemplate | src\addons\structure\plugins\content\boot.php | 60 | | rex_package::{closure} | src\core\lib\extension.php | 52 | | rex_extension::{closure} | src\core\lib\util\timer.php | 63 | | rex_timer::measure | src\core\lib\extension.php | 63 | | rex_extension::registerPoint | src\core\frontend.php | 26 | | require | src\core\boot.php | 143 | | require | public\index.php | 12 |
System report (REDAXO 5.14.2, PHP 8.1.6, MariaDB 10.4.24) | REDAXO | | | ------------: | :--------- | | Version | 5.14.2 | | PHP | | | ------------: | :--------- | | Version | 8.1.6 | | OPcache | yes | | Xdebug | yes | | Database | | | ------------: | :-------------- | | Version | MariaDB 10.4.24 | | Character set | utf8mb4 | | Server | | | ------------: | :------------- | | OS | WINNT | | SAPI | apache2handler | | Webserver | Apache/2.4.53 | | Request | | | ------------: | :--------------- | | Browser | Chrome/110.0.0.0 | | Protocol | HTTP/1.1 | | HTTPS | yes | | Packages | | | -----------------------: | :--------- | | 2click | 0.1.2-dev | | accessdenied | 2.0.2 | | adminer | 1.9.3 | | auto_delete | 1.0-dev | | backup | 2.8.2 | | be_password | 2.0.1 | | be_style | 3.1.1 | | be_style/customizer | 3.1.0 | | be_style/redaxo | 3.1.1 | | be_style_fluent | 4.0.0 | | bloecks | 3.1.1 | | bloecks/cutncopy | 3.1.1 | | bloecks/status | 3.1.1 | | cache_warmup | 4.0.0 | | consent_manager | 4.0.0 | | cronjob | 2.9.0 | | cronjob/article_status | 2.8.1 | | cronjob/optimize_tables | 2.8.1 | | developer | 3.9.2 | | epcqrcode | 1.0.3 | | events | 4.0.0 | | focuspoint | 4.0.3 | | global_settings | 2.8.4 | | install | 2.10.0 | | mailer_profile | 1.0.1 | | maintenance | 2.9.1 | | media_manager | 2.13.2 | | media_manager_responsive | 1.1.1 | | mediapool | 2.12.0 | | metainfo | 2.9.0 | | mform | 7.2.7 | | mform/docs | 1.1 | | msg | dev | | msg_urkunde | dev | | notification | 1.0.0 | | pdfout | 7.0.3 | | phpmailer | 2.11.2 | | plus_bs5 | 0.0.5 | | project | dev | | project_manager | 1.5.0 | | project_manager/client | 1.1.0 | | qanda | 2.0.14 | | quick_navigation | 6.0.2 | | redactor | 2.3.0 | | search_it | 6.9.5 | | search_it/documentation | 6.9.5 | | speed_up | 1.3.1 | | sprog | 1.5.1 | | structure | 2.14.2 | | structure/content | 2.14.2 | | structure/history | 2.14.2 | | url | 2.1.0 | | users | 2.9.1 | | ydeploy | 1.1.1 | | yform | 4.0.4 | | yform/email | 4.0.4 | | yform/manager | 4.0.4 | | yform_field | 2.2.3 | | yform_geo_osm | 1.2.8 | | yform_spam_protection | 2.0.0-beta | | yform_usability | 2.0.7 | | yrewrite | 2.9.1 | | yrewrite_metainfo | 1.0.5 | | zip_install | 1.2 |
alxndr-w commented 1 year ago

@palber

Unser Intention war es hier, per Default dem URL-Profil mitzugeben, dass nur für Datensätze mit status = 1 URLs generiert werden sollen. Dies deshalb, da immer mal wieder vergessen wurde im URL-Profil die entsprechende Restriction zu hinterlegen.

Ich möchte generell auch URLs generieren können, wenn sie den status = 0 haben oder status = 2.

Bleibt nur die Problematik bzgl. Backward compatibility. Außer das man im Changelog aktiv drauf hinweist, dass dies ein "breaking change" ist, wüsste ich auf die schnelle keinen anderen Ansatz.

Es war ein Breaking Change, das einzubauen, denn offenbar gehen ja davon Websites beim Updaten kaputt.

dawolf commented 1 year ago

Ich habe jetzt Zeile 449 in meinem Projekt jetzt mal auskommentiert. Meine URLs werden mit der Einschraenkung status = 1 erstellt. Sonst sollte das keine Nebenwirkungen haben.

https://github.com/FriendsOfREDAXO/yform_usability/blob/f67295d47c650fb9004e48595961a05501b93131/lib/Extensions.php#L449