Seite 1 von 1

Alten html Content ( Tabellen) "retten"

Verfasst: 12.10.2007 13:44
von rasch4u
Hallo Gemeinde,
ich bin gerade dabei Altpostings zu recyceln. Es handelt sich dabei in erster Linie dabei um die Darstellung von talbellenartigem Inhalt.
Es klappt schon ganz gut. Ich brauche aber noch etwas Unterstützung bei der "automatischen Aktivierung" meiner selbstgebastelten BB-Codes.

In meiner Naivität stelle ich mir das so vor.

Erstmal betroffenen Beiträge in der mysql DB ermitteln.
z.B. mit:

Code: Alles auswählen

select poster_id, post_id , post_subject from phpbb_posts where  post_text like "%&lt table%";
Dann ein Paar BB Codes Definieren:
z.B.

Code: Alles auswählen

[align={TEXT1}]{TEXT}[/align]
<div style="text-align:{TEXT1};">{TEXT}</div>

[bgcolor={COLOR}]{TEXT}[/bgcolor]
<span style="background-color: {COLOR};">{TEXT}</span>

[table={TEXT1}]{TEXT2}[/table]
<table  {TEXT1}> {TEXT2} </table>

[td]{TEXT}[/td]
<td>{TEXT}</td>

[td={TEXT}]{TEXT1}[/td]
<td {TEXT}> {TEXT1} </td>

[tr]{TEXT}[/tr]
<tr>{TEXT}</tr>
Dann die betroffenen Texte aus der mysql DB runterladen.

Code: Alles auswählen

tee posts.out
select post_id , post_text from phpbb_posts where post_text like "%&lt table%";
Dann mit einem kleinen script die html Inhalte in die definierten BB codes umsetzen und dabei die Hex Extension nicht vergessen.

Code: Alles auswählen

mk_bbcodes.pl posts.out
mk_bbcodes.pl.txt
( So ich hab das Teil erstmal bei mir abgelegt (Versuch macht Kluch) )

Die einzelnen Beiträge werden dabei in Textdateien mit dem Namen der post_id abgelegt ( z.B. 1234.sql ... )
Das sieht dann ungefähr so aus:

Code: Alles auswählen

update phpbb_posts 
set post_text = ' Sehr geehrte Damen und Herren,
here steht dann der weitere Text
...
[table=border="4" width=60% height=100:9bbd8]
[tr:9bbd8][td:9bbd8][b:9bbd8]letzte Faktura in .... [/b:9bbd8][/td:9bbd8]
[td:9bbd8]Dienstag, 10. Juli spätabends[/td:9bbd8]
[/tr:9bbd8]
[tr:9bbd8][td:9bbd8][b:9bbd8]Abgrenzungsmeldung bis[/b:9bbd8][/td:9bbd8]
[td:9bbd8]Mittwoch, 11. Juli 13 Uhr[/td:9bbd8]
[/tr:9bbd8]
/table:9bbd8]
...
...
 ' where post_id = 3306 ;
Zum Testen ist es praktisch wenn man die Posts einzeln in der Datei hat.
Zum endgültigen Hochladen kann man die Einzelteile mit

Code: Alles auswählen

cat [0-9]*.sql >> updat.sql 
Wieder zusammenkleben
Die Umgesetzten Postings wieder unter mysql in die sql DB laden.

Code: Alles auswählen

source updat.sql
So nun zu meinem Problem:
Da die neuen BB codes leider erst nach der händischen Aktualisierung über die Maske korrekt interpretiert werden müsste man jeden betroffenen Beitrag im Browser anfasen.
Das ist schonmal nicht schlecht, aber wenn man viele Postings hat ist das natürlich doof

Hat hier jemand ne Idee für mich was ich ausser dem Update von PHPBB_post.posts_text noch tun muss das meine Veränderungen direkt interpretiert werden ??

Danke im Vorraus

gRuss Ralf

PS Verwendete Version:
3.0.RC5 mit mysql

Verfasst: 12.10.2007 15:10
von Pyramide
Ich konnte dir zwar nicht ganz folgen, warum genau du dieses hin- und her ex- und importieren der Daten machst, aber "jeden Beitrag einmal anfassen" kann man recht einfach automatisieren. Pseudocode:

Code: Alles auswählen

$result = sql_query("SELECT post_id, bbcode_id, bbcode_options FROM POSTS_TABLE WHERE post_text LIKE '%[table%'");
while($row = sql_fetchrow($result))
{
  generate_text_for_edit($row['post_text'], ...);
  generate_text_for_storage($row['post_text', ...);
  $sql = "UPDATE POSTS_TABLE SET post_text=" . sql_escape($row['post_text']) . " WHERE post_id=$row[post_id]";
  sql_query($sql);
}
Wie man die generate_text_for_xxx Funktionen benutzt steht im Olympuswiki.

Verfasst: 12.10.2007 17:22
von rasch4u
Pyramide hat geschrieben:Ich konnte dir zwar nicht ganz folgen, warum genau du dieses hin- und her ex- und importieren der Daten machst, aber "jeden Beitrag einmal anfassen" kann man recht einfach automatisieren. Pseudocode:
Hi Pyramide,
wir haben hier das 3.0 RC5 schon eine Weile produktiv zu laufen. Aus dem 2er Forum haben wir eine menge Postings mit html Tabellen.
Da ich mich sonst normalerweise mehr mit perl Programmierung und informix Datenbanken beschäftige, habe ich halt den Weg genommen, auf dem ich mich am ehesten auskenne.
Deswegen auch der sicher umständliche Export der Daten, die externe Nachbehandlung und das updaten des posts Feldes.
Dabei wird leider die Versorgung der post_checksum und des bbcode_bitfield nicht mit berücksichtigt. :-?
Ich denke nachbauen werd ich das jetzt erstmal nicht.
Na ja wer weiss für was das gut ist. So müssen die User Ihre umgesetzten Beiträge nochmal anfassen/abspeichern und können augisch nochmal das Ergebnis verifizieren :wink:

PS
Ein schönes Wiki habt Ihr da im Olympuswiki. Sehr Informativ.

gRuss Ralf