PN Nachrichten auf den Pc speichern

Du suchst einen bestimmten Mod, weißt aber nicht genau wo bzw. ob er überhaupt existiert? Wenn dir dieser Artikel nicht weiterhilft, kannst du hier den von dir gewünschten/gesuchten Mod beschreiben ...
Falls ein Mod-Autor eine der Anfragen hier aufnimmt um einen neuen Mod zu entwicklen, geht's in phpBB 2.0: Mods in Entwicklung weiter.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Andi-2k3
Mitglied
Beiträge: 4
Registriert: 04.09.2004 10:42

PN Nachrichten auf den Pc speichern

Beitrag von Andi-2k3 »

Hi!
meine frage ist folgende:
gibt es einen mod , der es den usern ermöglicht seine privaten nachrichten auf seinen pc zu speicehrn?
vielen dank
für die wahrscheinlich wie immer schnelle und hilfreichen antowrten!
Mario Siebert
Mitglied
Beiträge: 2295
Registriert: 09.12.2003 15:02
Wohnort: Irgendwo im Nirgendwo

Beitrag von Mario Siebert »

Ka ob der im 2.0.13 noch funzt, hab ihn lange nicht eingebaut:

##############################################################################
## Mod Title: download PM
##
## Mod Version: 1.0
##
## Author: makue <makue@nena.de> - http://www.nena.de
##
## Beschreibung: Erlaubt es, PN's downloaden zu können. Es wird ein
## zusätzlicher Knopf "download" im PN-Bereich erzeugt.
## Das Download-File ist reines Textformat, die PM's
## sind durch eine Trennlinie getrennt.
##
## Installation Level: leicht
## Installation Time: 5 Minuten
##
## Files zum editieren: 4
## + 1 je zusätzliche Sprache (hier deutsch und englisch)
## + 1 je zusätzliches Template (hier nur subSilver)
##
## /prvmsg.php
## /language/lang_english/lang_main.php
## /language/lang_german/lang_main.php
## /templates/subSilver/prvmsgs_body.tpl
##
## zusätzliche Files: keine
##
##############################################################################
##
## Hinweis:
##
## Bei Fehlern, Hinweisen, Wünschen bitte Mail an makue@nena.de
##
## Bevor Änderungen an den Files vorgenommen werden empfiehlt es
## sich, backups der betroffenen Files vorzunehmen. Änderungen
## an der Datenbank sind nicht notwendig.
##
##############################################################################

#
#-----[ ÖFFNE ]------------------------------------------
#

/prvmsg.php

#
#-----[ SUCHE ]---------------------------------------------------------------
#

$delete_all = ( isset($HTTP_POST_VARS['deleteall']) ) ? TRUE : 0;

#
#-----[ DANACH EINFÜGEN ]-----------------------------------------------------
#

$download = ( isset($HTTP_POST_VARS['download']) ) ? TRUE : 0;

#
#-----[ SUCHE ]---------------------------------------------------------------
#

else if ( $save && $mark_list && $folder != 'savebox' && $folder != 'outbox' )

#
#-----[ DAVOR EINFÜGEN ]------------------------------------------------------
#

else if ( $download && $mark_list )
{
if ( !$userdata['session_logged_in'] )
{
$header_location = ( @preg_match('/Microsoft|WebSTAR|Xitami/', getenv('SERVER_SOFTWARE')) ) ? 'Refresh: 0; URL=' : 'Location: ';
header($header_location . append_sid("login.$phpEx?redirect=privmsg.$phpEx&folder=inbox", true));
exit;
}

switch($folder)
{
case 'inbox':
$disp_folder = $lang['Inbox'];
break;

case 'outbox':
$disp_folder = $lang['Outbox'];
break;

case 'sentbox':
$disp_folder = $lang['Sentbox'];
break;

case 'savebox':
$disp_folder = $lang['Savebox'];
break;
}

if (count($mark_list))
{
$i=0;
$pmtext = $lang['Private_Messaging']." (".$board_config['sitename'].")\n";
$user_dateformat = ($userdata['user_dateformat']) ? $userdata['user_dateformat'] : $board_config['default_dateformat'];
$pmtext .= $disp_folder . " (". date($user_dateformat,time()). ")\n";
while($mark_list[$i] != "")
{
$sql = "SELECT pt.privmsgs_text, us.username, us.user_id, pm.privmsgs_date, pm.privmsgs_subject
FROM " . PRIVMSGS_TEXT_TABLE . " pt, " . PRIVMSGS_TABLE . " pm, " . USERS_TABLE . " us
WHERE pt.privmsgs_text_id = " . $mark_list[$i] . " AND pm.privmsgs_id = " . $mark_list[$i] . "
AND us.user_id = pm.privmsgs_from_userid";
if ( $result = $db->sql_query($sql) )
{
$db_row = $db->sql_fetchrow($result);
$from = ($folder=='inbox' || $folder=='savebox') ? $lang['From'] : $lang['To'];
$pmtext .= "----------------------------------------------------------------------------\n";
$pmtext .= $lang['Mailbox'].": ".$userdata['username']."\n";
$pmtext .= $from.": ".$db_row['username']."\n";
$pmtext .= $lang['Posted'].": ".date($user_dateformat,time($db_row['privmsgs_date']))."\n";
$pmtext .= $lang['Subject'].": ".$db_row['privmsgs_subject']."\n\n";
$pmtext .= $db_row['privmsgs_text']."\n";
}
else
{
print $sql."<p>";
message_die(GENERAL_ERROR, 'Could not read private message info', '', __LINE__, __FILE__, $sql);
}
$i++;
}
$filename = $board_config['sitename']."_".$disp_folder."_".date("Ymd",time()).".txt";
header('Content-Type: text/x-delimtext; name="' . $file_name . '"');
header("Content-Disposition: attachment;filename=".$filename);
header("Content-Transfer-Encoding: plain/text");
header("Content-Length: ".strlen($pmtext));
print $pmtext;
exit;
}
}

#
#-----[ SUCHE ]---------------------------------------------------------------
#

'L_SAVE_MARKED' => $lang['Save_marked'],

#
#-----[ DANACH EINFÜGEN ]-----------------------------------------------------
#

'L_DOWNLOAD_MARKED' => $lang['Download_marked'],

#
#-----[ ÖFFNE ]------------------------------------------
#

/language/lang_english/lang_main.php

#
#-----[ SUCHE ]---------------------------------------------------------------
#

$lang['Save_marked'] = 'Save Marked';

#
#-----[ DANACH EINFÜGEN ]-----------------------------------------------------
#

$lang['Download_marked'] = 'Download Marked';
$lang['Mailbox'] = 'Mailbox';

#
#-----[ ÖFFNE ]------------------------------------------
#

/language/lang_german/lang_main.php

#
#-----[ SUCHE ]---------------------------------------------------------------
#

$lang['Save_marked'] = "Markierte speichern";

#
#-----[ DANACH EINFÜGEN ]-----------------------------------------------------
#

$lang['Download_marked'] = 'Markierte downloaden';
$lang['Mailbox'] = 'Postfach';

#
#-----[ ÖFFNE ]---------------------------------------------------------------
#

/templates/subSilver/prvmsgs_body.tpl

#
#-----[ SUCHE ]---------------------------------------------------------------
#

<td class="catBottom" colspan="5" height="28" align="right"> {S_HIDDEN_FIELDS}

#
#-----[ DANACH EINFÜGEN ]-----------------------------------------------------
#

<input type="submit" name="download" value="{L_DOWNLOAD_MARKED}" class="liteoption" />
&nbsp;

# Ich empfehle die &nbsp; zwischen den Input-Tags zu löschen, die verursachen nur
# einen zu großen Button-Abstand!

#
#-----[ ALLE DATEIEN SPEICHERN ]----------------------------------------------
#

Grüße Mario
Wer gegen eine geringe Gebühr (höhe der Gebühr bestimmst du selbst!!) ein phpBB installiert oder Mods eingebaut haben möchte sollte sich melden unter: netcom_service@gmx.net - Bisherige Aufträge 68.071
Auf Anfrage führe ich auch Reparaturen/Updates und Serverumzüge durch oder baue Mods!
Benutzeravatar
Budman
Mitglied
Beiträge: 327
Registriert: 02.02.2005 10:46

Beitrag von Budman »

Hallo!

Ja, er funktioniert mit der .13 immer noch bestens! Den hattest Du mir dankenswerter Weise auch mal empfohlen, und er ist der Hit! Danke nochmal!

Gruss Bud
Christian Benz
Mitglied
Beiträge: 854
Registriert: 25.02.2004 00:41
Wohnort: Regen
Kontaktdaten:

Beitrag von Christian Benz »

Hallo,

[quote]$filename = $board_config['sitename']."_".$disp_folder."_".date("Ymd",time()).".txt";
header('Content-Type: text/x-delimtext; name="' . $file_name . '"');
header("Content-Disposition: attachment;filename=".$filename);[/quote]

Ist das Absicht oder ein Fehler dass es da einmal $filename und dann wieder $file_name heißt?

Gruß,
Chris
John Doe
Mitglied
Beiträge: 684
Registriert: 30.03.2005 01:06

Beitrag von John Doe »

Der Mod funktioniert so problemlos, wenn man aber z.B die gesendeten Nachrichten speichert, müssen die nicht von einem sein, sondern an jemanden.
Ich hab das mit meinen Newbiephp Skill erstmal so gelöst:

Code: Alles auswählen

if ($folder == 'sentbox')
{
$sql = "SELECT pt.privmsgs_text, us.username, us.user_id, pm.privmsgs_date, pm.privmsgs_subject
FROM " . PRIVMSGS_TEXT_TABLE . " pt, " . PRIVMSGS_TABLE . " pm, " . USERS_TABLE . " us
WHERE pt.privmsgs_text_id = " . $mark_list[$i] . " AND pm.privmsgs_id = " . $mark_list[$i] . "
AND us.user_id = pm.privmsgs_to_userid";
}
else
{
$sql = "SELECT pt.privmsgs_text, us.username, us.user_id, pm.privmsgs_date, pm.privmsgs_subject
FROM " . PRIVMSGS_TEXT_TABLE . " pt, " . PRIVMSGS_TABLE . " pm, " . USERS_TABLE . " us
WHERE pt.privmsgs_text_id = " . $mark_list[$i] . " AND pm.privmsgs_id = " . $mark_list[$i] . "
AND us.user_id = pm.privmsgs_from_userid";
}
Gespeicherte Dateien aus dem Archiv korrekt zu speichern, ist dann wohl schwieriger, weil die aus verschieden Boxen kommen können.

Und noch ne Newbiefrage hintendran ;):
Seit der Sichheitslücke in dem einen downloadmod ist mir etwas unwohl, was Downloads angeht. Wäre das bei diesem Mod eher Paranoia?

// Nachtrag: Firefox hat wohl leider manchmal einige Schwierigkeiten beim Speichern mit dem korrekten Dateinamen.
Christian Benz
Mitglied
Beiträge: 854
Registriert: 25.02.2004 00:41
Wohnort: Regen
Kontaktdaten:

Beitrag von Christian Benz »

Hallo,
Der Mod funktioniert so problemlos, wenn man aber z.B die gesendeten Nachrichten speichert, müssen die nicht von einem sein, sondern an jemanden.
Stimmt, danke für den Hinweis. Das gilt aber nicht nur für die PNs unter "Gesendete Nachrichten" sondern auch für den "Postausgang". Ich habe daher die vorgeschlagene Codeänderung entsprechend um ...

Code: Alles auswählen

if ($folder == 'sentbox' || $folder == 'outbox')
... erweitert.
// Nachtrag: Firefox hat wohl leider manchmal einige Schwierigkeiten beim Speichern mit dem korrekten Dateinamen.
Ist mir auch schon aufgefallen. Das könnte u.a. daran liegen, weil der Dateiname ja aus den "Ordner-Namen" gebildet wird und bei "Gesendete Nachrichten" ist ein Leerzeichen enthalten. Bei der Bildung des Dateinamens wird dann alles nach dem Leerzeichen abgeschnitten. Ich habe das ganz einfach folgendermaßen behoben:

Code: Alles auswählen

#-----[ SUCHE ]-----

$filename = $board_config['sitename']."_".$disp_folder."_".date("Ymd",time()).".txt";

#-----[ DAVOR EINFÜGEN ]-----

$disp_folder = str_replace(' ', '_', $disp_folder);
Zu bedenken ist, dass evtl. auch bereits der Boardname (Variable $board_config['sitename']) Probleme bereiten kann, falls dort Leerzeichen oder sonstige unerlaubte (Dateinamen-)Zeichen enthalten sind. Dann sollte man auch diesbezüglich geeignete Maßnahmen treffen.

Gruß,
Chris
John Doe
Mitglied
Beiträge: 684
Registriert: 30.03.2005 01:06

Beitrag von John Doe »

Danke, habe

Code: Alles auswählen

$disp_folder = str_replace(' ', '_', $disp_folder);
analog auch für $board_config['sitename'] benutzt, weil ich da ein Leerzeichen drin hab, und nun speichert auch Firefox die Dateien richtig ab.

Das ist imo ein sehr nützlicher Mod, den Pm Boxen sind schnell voll.
Christian Benz
Mitglied
Beiträge: 854
Registriert: 25.02.2004 00:41
Wohnort: Regen
Kontaktdaten:

Beitrag von Christian Benz »

Hallo,

noch ein kleiner Nachtrag. :D

Die bbcodes werden wie's scheint nicht umgesetzt, bzw. verbleiben in der Datei samt der bbcode_uid. Da das irgendwie unschön aussieht, habe ich noch ein bischen weitergebastelt.

Code: Alles auswählen

#-----[ FIND ]-----------------------------------------
# (Hinweis: Falls die von John Doe vorgeschlagene Erweiterung eingebaut
# wurde, gibt's die zu findende Stelle nun natürlich zweimal.)

$sql = "SELECT pt.privmsgs_text, us.username, us.user_id, pm.privmsgs_date, pm.privmsgs_subject

#-----[ IN-LINE FIND ]---------------------------------

pm.privmsgs_subject

#-----[ IN-LINE AFTER, ADD ]---------------------------

, pt.privmsgs_bbcode_uid

#-----[ FIND ]-----------------------------------------

$pmtext .= $db_row['privmsgs_text']."\n";

#-----[ REPLACE WITH ]---------------------------------

$privbbcode_uid = $db_row['privmsgs_bbcode_uid'];
$privmesstext = preg_replace('/\[img:[a-z0-9]{10,}\].*?\[\/img:[a-z0-9]{10,}\]/', ' ', strip_tags($db_row['privmsgs_text']));
$privmesstext = preg_replace('/\[url\]|\[\/url\]/si', '', $privmesstext);
$privmesstext = preg_replace('/\[\/?url(=.*?)?\]/', '', $privmesstext);
$privmesstext = preg_replace("/\[.*?:$privbbcode_uid:?.*?\]/si", '', $privmesstext);
$pmtext .= $privmesstext."\r\n";
Da ich leider nur wenig Ahnung davon habe: Anwendung auf eigene Gefahr - und vielleicht kann mir/uns ein php-Coder sagen, wie man das besser/richtig(er) machen kann. Bitteee ... *liebschau* :roll:

So etwas a la "strip_bbcode()" gibt's ja leider nicht oder doch?

Noch ein kleiner Hinweis am Rande: Unter Windoof reicht das \n möglicherweise nicht aus für die Zeilenschaltung. Daher habe ich diese Stellen im Mod alle durch \r\n ersetzt.

Gruß,
Chris
makue
Mitglied
Beiträge: 282
Registriert: 18.07.2002 07:58
Wohnort: Böblingen
Kontaktdaten:

Beitrag von makue »

Ich habe den Mod mal überarbeitet. Da ist jetzt alles mit eingeflossen, was Ihr so erwähnt habt. Scheint soweit alles korrekt zu funktionieren, jedenfalls bei mir! Falls Ihr Fehler feststellt, bitte melden. Danke!

Die neue Version 1.3 findet Ihr hier: http://www.nenafan.de/mods/downloadpm13.txt

Für ein update von der vorherigen Version einfach den Block

Code: Alles auswählen

if (count($mark_list))
{ 
... 
}
ersetzten. An anderen Stellen habe ich nichts geändert.
modbo
Mitglied
Beiträge: 451
Registriert: 10.12.2004 11:12

Beitrag von modbo »

Code: Alles auswählen

Leider hast Du keinen Zugriff auf diesen Datenbereich.
:(
Antworten

Zurück zu „phpBB 2.0: Mod Suche/Anfragen“