Inline Images not shown
Quote from StephanK on May 8, 2019, 3:53 pmMight be coincidence, but right around upgrading to 14.4 all inline images have gone. Not sure I can explain this properly, but i’ll try:
Alot of my users are using Windows Snipping tool to insert images via Copy&Paste into the editor field. This used to work just fine. You can see the image in the editor (and in the database) but not in the posted reply (see Picture 2). If I edit that message, the image returns in the editor (see Picture 1) but disappears again once posted.
Anybody got a clue what might be going on there?
Picture 1: Post as seen in the editor
Picture 2: Posted result
Picture 3: contents of the posts entry in wp_forum_posts (excerpt)
Might be coincidence, but right around upgrading to 14.4 all inline images have gone. Not sure I can explain this properly, but i’ll try:
Alot of my users are using Windows Snipping tool to insert images via Copy&Paste into the editor field. This used to work just fine. You can see the image in the editor (and in the database) but not in the posted reply (see Picture 2). If I edit that message, the image returns in the editor (see Picture 1) but disappears again once posted.
Anybody got a clue what might be going on there?
Picture 1: Post as seen in the editor
Picture 2: Posted result
Picture 3: contents of the posts entry in wp_forum_posts (excerpt)
Quote from Asgaros on May 8, 2019, 5:29 pmHallo @stephank
Seit dem v1.14.4 läuft eine zusätzliche Sanitizing-Funktion über benutzergenerierte Inhalte (Foren-Beiträge), welche verhindert, dass eingebettete Scripte und sonstiger potentieller Schadcode ausgeführt wird. Diese Arbeit erledigt die wp_kses()-Funktion von WordPress:
https://codex.wordpress.org/Function_Reference/wp_kses
Darunter fallen leider auch kodierte Daten, die im base64-Format in der Datenbank gespeichert wurden. Dies ist zwingend nötig, da es sich bei diesen kodierten Daten nicht zwangsläufig um ein Bild handeln muss.
Davon abgesehen sollte es eigentlich auch gar nicht möglich sein, über den WordPress-Editor Grafiken und andere Dinge direkt im base64-Format hineinzukopieren, da diese Daten unweigerlich als Plain-Text (und nicht als hochgeladene Datei) in der Datenbank landen. In Chrome funktioniert das zumindest standardmäßig nicht und von WordPress aus war dies wohl auch nie offiziell so vorgesehen. Davon abgesehen ist die Speicherung als Plain-Text besonders problematisch, wenn jemand mehrere Megabyte große Bilder in einen Beitrag einfügt und diese dann in Textform direkt in der Datenbank landen. Gerade bei Suchoperationen bremst dies die Datenbank enorm aus.
Von daher wäre es im moment das beste, wenn die Benutzer die Grafiken entweder über die Upload-Funktion als Anhang hochladen oder diese über eine URL in den Beitrag einbetten.
Zusätzliche Verbesserungen am Upload-System plane ich ebenso für zukünftige Updates, so dass hochgeladene Dateien besser innerhalb von Beiträgen positioniert werden können.
Hallo @stephank
Seit dem v1.14.4 läuft eine zusätzliche Sanitizing-Funktion über benutzergenerierte Inhalte (Foren-Beiträge), welche verhindert, dass eingebettete Scripte und sonstiger potentieller Schadcode ausgeführt wird. Diese Arbeit erledigt die wp_kses()-Funktion von WordPress:
https://codex.wordpress.org/Function_Reference/wp_kses
Darunter fallen leider auch kodierte Daten, die im base64-Format in der Datenbank gespeichert wurden. Dies ist zwingend nötig, da es sich bei diesen kodierten Daten nicht zwangsläufig um ein Bild handeln muss.
Davon abgesehen sollte es eigentlich auch gar nicht möglich sein, über den WordPress-Editor Grafiken und andere Dinge direkt im base64-Format hineinzukopieren, da diese Daten unweigerlich als Plain-Text (und nicht als hochgeladene Datei) in der Datenbank landen. In Chrome funktioniert das zumindest standardmäßig nicht und von WordPress aus war dies wohl auch nie offiziell so vorgesehen. Davon abgesehen ist die Speicherung als Plain-Text besonders problematisch, wenn jemand mehrere Megabyte große Bilder in einen Beitrag einfügt und diese dann in Textform direkt in der Datenbank landen. Gerade bei Suchoperationen bremst dies die Datenbank enorm aus.
Von daher wäre es im moment das beste, wenn die Benutzer die Grafiken entweder über die Upload-Funktion als Anhang hochladen oder diese über eine URL in den Beitrag einbetten.
Zusätzliche Verbesserungen am Upload-System plane ich ebenso für zukünftige Updates, so dass hochgeladene Dateien besser innerhalb von Beiträgen positioniert werden können.
Quote from StephanK on May 8, 2019, 7:54 pmHmmm… mein Problem ist, ich hab gefühlt tausend Beiträge, die diese Methode genutzt haben, die nun alle ohne Bilder etwas unvollständig sind. Gibts nen schnellen Fix, wie ich das wieder reaktivieren kann, oder bleibt mir nur der Downgrade zu 1.14.3?
Hmmm… mein Problem ist, ich hab gefühlt tausend Beiträge, die diese Methode genutzt haben, die nun alle ohne Bilder etwas unvollständig sind. Gibts nen schnellen Fix, wie ich das wieder reaktivieren kann, oder bleibt mir nur der Downgrade zu 1.14.3?
Quote from Asgaros on May 8, 2019, 8:12 pmHallo @stephank
Um den alten Zustand zu bekommen, müsstest du nur eine einzige Zeile Code ändern. Statt eines Downgrades würde ich dir dies empfehlen, damit du auch auf die anderen Verbesserungen und Fehlerbehebungen nicht verzichten musst.
Zur Anpassung muss die folgende Datei geändert werden:
/wp-content/plugins/asgaros-forum/includes/views/post-element.php
Suche nach der folgenden Zeile:
$post_content = wp_kses($post->text, 'post');Ersetze diese hiermit:
$post_content = $post->text;Danach sollte alles wieder wie gewohnt funktionieren.
Hallo @stephank
Um den alten Zustand zu bekommen, müsstest du nur eine einzige Zeile Code ändern. Statt eines Downgrades würde ich dir dies empfehlen, damit du auch auf die anderen Verbesserungen und Fehlerbehebungen nicht verzichten musst.
Zur Anpassung muss die folgende Datei geändert werden:
/wp-content/plugins/asgaros-forum/includes/views/post-element.php
Suche nach der folgenden Zeile:
$post_content = wp_kses($post->text, 'post');
Ersetze diese hiermit:
$post_content = $post->text;
Danach sollte alles wieder wie gewohnt funktionieren.