Massenausgabe von Topics in Druckansicht

Started by maobe, April 21, 2004, 06:56:43 AM

Previous topic - Next topic

maobe

Hi Folks,

In meinem kleinen schuckeligen Forum haben sich in einem Board namens "Archiv" etwa 1300 Topics mit etwa 30.000 Postings angesammelt.
Dieses Material möchte Ich nicht löschen, sondern als Readonly-HTML-Files zum stöbern und runterladen anbieten ::)
Dazu kommt die Druckansicht eines Topics sehr gelegen, da man diese einfach als HTML abspeichern und dann ggf. auch in PDF umwandeln kann. Allerdings scheitert diese Idee derzeit hauptsächlich an der schieren Masse an Postings die wir auf Halde haben, da man jedes Topic einzeln aufrufen, auf "Print" klicken und das Ergebnis dann auf HD speichern muss...

Jetzt kam der Gedanke auf diesen Prozess zu automatisieren! ---> Wie kann man die Printansicht des SMF so ansprechen, das sie die Topics eines bestimmten Boards Serverseitig als HTML extrahiert und abspeichert?

Oder:

Das die Topics in der Printversion ähnlich wie das SQL-Dump der Boardwartung einfach zum DL angeboten werden ::)


"Ich weiß nicht ob es besser wird, wenn es anders wird. Ich weiß nur, dass es anders werden muss, damit es besser werden kann."

www.phantastischewelten.de

Christian Land

Dazu müsste man ein Script basteln.... ist ziemlich simpel... DB Abfragen welche Threads im Archiv liegen, entsprechende Seite (http://www.deine.tld/community/index.php?action=printpage;topic=threadid.0) über das Script aufrufen und das Ergebnis speichern... bleibt die Frage: was zahlst Du? ;D ;D ;D

Christian Land

<?php

$boardID = 1;
$target = './archive/'; // Zielpfad
$archiveURL = 'http://localhost/smf/archive/'; // URL des Zielpfades

//

include_once('Settings.php');

$db_connection = @mysql_connect($db_server, $db_user, $db_passwd) or db_fatal_error();
@mysql_select_db($db_name, $db_connection) or db_fatal_error();

$sqlquery = '
SELECT
t.ID_TOPIC,
m.subject
FROM
'
.$db_prefix.'topics AS t
LEFT JOIN
'
.$db_prefix.'messages AS m
ON
(m.ID_MSG = t.ID_FIRST_MSG)
WHERE
(t.ID_BOARD = '
.$boardID.')
ORDER BY
t.ID_TOPIC
'
;

$result = mysql_query($sqlquery);

if ($result)
{
if (mysql_num_rows($result)>0)
{

$resultset = array();

while ($data = mysql_fetch_assoc($result))
{

$furl = $boardurl.'/index.php?action=printpage;topic='.$data['ID_TOPIC'].'.0';
$dummy = @file($furl);
$filename = $target . 'archive_' . $data['ID_TOPIC'] . '.html';

$resultset[] = array ( 'ID' => $data['ID_TOPIC'], 'TITLE' => $data['subject'] );

if (!$handle = fopen($filename, "w"))
die('Fehler beim Dateizugriff');

if (!fwrite($handle, implode('',$dummy)))
die('Fehler beim Schreiben in die Datei');

fclose($handle);
}

foreach ($resultset as $curentry)
{
echo '<a href="'.$archiveURL.'archive_'.$curentry['ID'].'.html">'.htmlspecialchars($curentry['TITLE']).'</a><br />'."\n";
}

}
else
die('Nix gefunden...');
}

?>

maobe

uiiiiiii :o coooool 8) ich werds antesten und berichten :)


"Ich weiß nicht ob es besser wird, wenn es anders wird. Ich weiß nur, dass es anders werden muss, damit es besser werden kann."

www.phantastischewelten.de

maobe

*FANFARENUNDTROMPETEN* :D :D :D

Hiermit bestätige Ich hochoffiziell das diese kleine feine Script da oben wunderherrlich funktioniert!!!  Ein Sternchen für Snowcrash bitte! :D :D :D


"Ich weiß nicht ob es besser wird, wenn es anders wird. Ich weiß nur, dass es anders werden muss, damit es besser werden kann."

www.phantastischewelten.de

maobe

How to:

1.  Datei im Anhang runterladen

2.  Auf eurem Webspace ein Verzeichnis "archive" anlegen und die Dateirechte auf 777 setzen, damit das Script auch ins Verzeichnis reinschreiben kann

3. folgende Zeilen anpassen:


$boardID = 1;
$target = './archive/'; // Zielpfad
$archiveURL = 'http://localhost/smf/archive/'; // URL des Zielpfades


$boardID => die ID des Boards dessen Topics in der Druckansicht extrahiert werden sollen
$target => einfach so lassen ;)
$archiveURL = die http-adresse zum Verzeichnis "archiv"

4. archive.php auf euren Webspace hochladen, am besten in das Verzeichnis in dem die index.php eures SMF's liegt

5. http://euredomain/archive.php im browser aufrufen und "abschicken"

6. ... warten bis der server fertig ist ...

7. Das Script gibt als Ergebnis eine Linkliste der Themen aus die extrahiert wurden. Diese könnt ihr z.b. als index.html abspeichern und als Startseite im Verzeichnis "archive" verwenden :)

Anmerkung: die Druckansicht die durch das Script erzeugt wird, enthält UBB-Tags im klartext, d.h. Links in den Posts werden nicht in einen href gepackt sondern werden als normaler Text ausgegeben und müssen sofern erwünscht z.B. mit einem HTML-Editor funktionsfähig gemacht werden.

thats all!

Grosses Danke an: SnowCrash 8)



"Ich weiß nicht ob es besser wird, wenn es anders wird. Ich weiß nur, dass es anders werden muss, damit es besser werden kann."

www.phantastischewelten.de

xonom

gut gemacht!! muss sagen die idee ist spitze und die umsetzung auch!! hier fehlt ein daumen hoch smilie! ;D ;)

Christian Land

Quote from: maobe on April 22, 2004, 01:04:19 PM
*FANFARENUNDTROMPETEN* :D :D :D

Hiermit bestätige Ich hochoffiziell das diese kleine feine Script da oben wunderherrlich funktioniert!!!  Ein Sternchen für Snowcrash bitte! :D :D :D

Gabs nicht ne Userin mit Namen "Sternchen" ? ;D Ne, mal ernsthaft... kein Thema... bei so einem simplen Problem dauert das tippen des Sources länger als das überlegen wie man es löst *g*

Sternchen

#8
Ich hörte meinen Namen :D da bin ich  :)
Klasse Arbeit SnowCrash

Gruss Sternchen

P.S. So schnell bin ich aber nicht zu haben (bzw. zu vergeben)  ;)
Give my a little smile

Daniel D.

Quote from: Sternchen on April 23, 2004, 03:54:23 AM
P.S. So schnell bin ich aber nicht zu haben (bzw. zu vergeben)  ;)
Hmm, wollte schon loslegen... ;D :P

Christian Land

Mach Dir keine Hoffnungen, Daniel... ich kann besser PHP als Du ;D *lachend versteck*

Daniel D.

Quote from: SnowCrash on April 27, 2004, 11:11:59 AM
Mach Dir keine Hoffnungen, Daniel... ich kann besser PHP als Du ;D *lachend versteck*
Stimmt, aber Du hast es nicht ganz verstanden... ;)

Advertisement: