Kein Link bei Suchergebnissen

Problem: phpBB3 setzt bei den Listings zu Suchergebnissen auf einen gesetzten Post-Titel. Dieser Post-Titel wird als Link formuliert, über den man direkt zum gezeigten Suchtreffer gelangt. Beim alten phpBB2 blieb der Post-Titel beim Antworten aber standardmäßig unbesetzt. Vollzieht man nun ein Upgrade auf phpBB3, bleiben diese leeren Felder bestehen. Eine Suche liefert zwar noch immer die entsprechenden Posts als Treffer, jedoch ohne auf den ersten Blick direkten Link zu diesen.

Abhilfe kann unten gelistetes kleines Script schaffen. Es selektiert in einem ersten Zug alle Posts bzw. die zugehörigen Topic ID's derselben, zu denen es ein leeres Titelfeld gibt. Für jeden einzelnen gefundenen Eintrag wird nun vom zugehörigen topic der Titel geladen. Dieser Titel wird nun mit einem vorangesetzten „Re: “ in das Titelfeld des Posts gesetzt. Fertig.

<?php
mysql_connect("localhost","phpbbuser","phpbbpasswort");
mysql_select_db("phpbbdatenbank");
 
$sql = "SELECT p.post_id, p.topic_id, p.forum_id, t.topic_title FROM phpbb3_posts p, phpbb3_topics t WHERE p.post_subject= AND t.topic_id=p.topic_id AND t.forum_id=p.forum_id";
$query = mysql_query($sql);
while ($entry = mysql_fetch_array($query)) {
  $sql2 = "UPDATE phpbb3_posts SET post_subject='Re: ".str_replace("'","\'",$entry['topic_title'])."' WHERE post_id='".$entry['post_id']."'";
  mysql_query($sql2);
}
?>

Achtung: Das Skript erhebt weder Anspruch auf Vollständigkeit noch Fehlerfreiheit. Es ist also in jedem Fall ratsam, vorher ein Backup der phpBB-Datenbank zu erstellen!

Das Skript wurde auch nicht auf Performance optimiert. Im eingesetzten Fall wurden aber knapp 40.000 posts in deutlich weniger als einer Minute abgehandelt. Daher war Performance kein Kriterium für den Code.