Textformatierung entfernen

Hier können Probleme und alles andere in Deutscher Sprache gelöst werden.
Post Reply
konus
Regular
Posts: 334
Joined: Mon Jun 16, 2008 1:57 pm
Location: Dresden, Germany
Contact:

Textformatierung entfernen

Post by konus »

Hallo,
ich möchte die Textile-Textformatierung aus meinen Blogeinträgen entfernen und durch den entsprechenden html-code ersetzen.

Soweit ich verstanden habe, legt das Plugin "Erweiterte Eigenschaften von Artikeln" (serendipity_event_entryproperties) beim Cachen von jedem Eintrag (body und extended) einen Datenbankeintrag in der Tabelle "serendipity_entryproperties" an (ep_cache_body und wenn vorhanden ep_cache_extended).

Ich vermute mal, dass der Zauber in der serendipity_event_entryproperties.php ab Zeile 152 passiert

Code: Select all

   function updateCache(&$entry) {
        global $serendipity;

        serendipity_db_query("DELETE FROM {$serendipity['dbPrefix']}entryproperties WHERE entryid = " . (int)$entry['id'] . " AND property LIKE 'ep_cache_%'");
        $addData = array('from' => 'serendipity_event_entryproperties:updateCache');
        serendipity_plugin_api::hook_event('frontend_display', $entry, $addData);
        serendipity_db_query("INSERT INTO {$serendipity['dbPrefix']}entryproperties (entryid, property, value) VALUES (" . (int)$entry['id'] . ", 'ep_cache_body', '" . serendipity_db_escape_string($entry['body']) . "')");
        serendipity_db_query("INSERT INTO {$serendipity['dbPrefix']}entryproperties (entryid, property, value) VALUES (" . (int)$entry['id'] . ", 'ep_cache_extended', '" . serendipity_db_escape_string($entry['extended']) . "')");
    }
Die Frage an Euch ist nun, ob mir jemand dabei helfen kann, den Plugin-Code so zu modifizieren, dass er beim cachen das cache-Ziel ändert und direkt in die Tabelle serendipity_entries zurück schreibt?

Gruß Konrad
onli
Regular
Posts: 2825
Joined: Tue Sep 09, 2008 10:04 pm
Contact:

Re: Textformatierung entfernen

Post by onli »

Das klingt nicht wie eine gute Idee. Wenn du generell von Textile weg willst, wäre es wahrscheinlich besser, einmalig gecachte Einträge zurückzuschreiben. Oder?
konus
Regular
Posts: 334
Joined: Mon Jun 16, 2008 1:57 pm
Location: Dresden, Germany
Contact:

Re: Textformatierung entfernen

Post by konus »

Ja ich will generell von Textile weg. Die Idee war, das modifizierte Plugin einmalig zu starten, manuell alle Einträge neu zu chachen und dabei die Einträge mit der zu cachenden Version zu überschreiben. Danach sollte es natürlich wieder deaktiviert werden.

Vermutlich könnte "man" das auch mit reinem SQL machen, aber das überfordert mich gewaltig. In der einen Tabelle habe ich pro Zeile Id, body und extended, in der anderen Tabelle habe ich je eine Zeile mit Id, Art (ep_cache_body oder ep_cache_extended) und Inhalt.
onli
Regular
Posts: 2825
Joined: Tue Sep 09, 2008 10:04 pm
Contact:

Re: Textformatierung entfernen

Post by onli »

Oh, hm. Ich habe gerade versucht, dir einen SQL-Query zu schreiben, aber da man die ganzen IDs durchgehen muss bin ich gerade selbst nicht sicher, wie man das am besten macht. Welche Datenbank nutzt du denn?

Der Code auf PHP wäre in etwa:

Code: Select all

function updateCache(&$entry) {
        global $serendipity;

        serendipity_db_query("DELETE FROM {$serendipity['dbPrefix']}entryproperties WHERE entryid = " . (int)$entry['id'] . " AND property LIKE 'ep_cache_%'");
        $addData = array('from' => 'serendipity_event_entryproperties:updateCache');
        serendipity_plugin_api::hook_event('frontend_display', $entry, $addData);
        serendipity_db_query("UPDATE {$serendipity['dbPrefix']}entries SET body = '". serendipity_db_escape_string($entry['body']) ."' WHERE  id = " . (int)$entry['id']);
         serendipity_db_query("UPDATE {$serendipity['dbPrefix']}entries SET extended = '". serendipity_db_escape_string($entry['extended']) ."' WHERE  id = " . (int)$entry['id']);
Problem wird sein, diesen Code vorher vernünftig zu testen.
konus
Regular
Posts: 334
Joined: Mon Jun 16, 2008 1:57 pm
Location: Dresden, Germany
Contact:

Re: Textformatierung entfernen

Post by konus »

Vielen Dank für deine Mühe. Ich verwende eine MySQL Datenbank.
Zum Testen habe ich mir eine Kopie meiner Liveinstallation angelegt. Die Datenbank kann man ja sichern und bei Bedarf zurück spielen. Muss nur mal sehen, wie man das Ergebnis kontrolliert, es sind 650 Artikel.
konus
Regular
Posts: 334
Joined: Mon Jun 16, 2008 1:57 pm
Location: Dresden, Germany
Contact:

Re: Textformatierung entfernen

Post by konus »

So ich denke, ich kann Erfolg vermelden.
Mit dem Verfahren lässt sich sehr gut das Ergebnis eines Markup-Plugins dauerhaft in die Datenbank schreiben, sodass im Anschluss danran das Markup-Plugin problemlos entfernt werden kann.

Damit die Umwandlung nur das eine Markup-Plugins betrifft, müssen natürlich alle anderen Textumwandlungen (ich hatte noch Textformatierung: Smilies , Markup: Auto-Titel sowie Lightbox/Thickbox JS/Graybox aktiv) temporär stillgelegt werden.

Vielen Dank für die schnelle Hilfe!
Post Reply