
Für ältere Versionen (zum vergleichen) kann man auch ins Verzeichnis: http://www.nenafan.de/mods/
Vielleicht packe ich da noch andere Mods von mir hin.
Code: Alles auswählen
##############################################################################
## $Author: makue $
## $Date: 2005/12/10 08:48:30 $
## $RCSfile: downloadpm13.txt,v $
## $Revision: 1.1 $
## $State: Exp $
##############################################################################
## Mod Title: download PM
##
## Mod Version: 1.3
##
## Autor: makue <mario@nenafan.de> - http://www.nenafan.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
##
## für update von Version 1.1 Zeilen 110 bis 149 ersetzen.
## für update von 1.2 auf 1.3 den kompletten Block "if (count($mark_list)) { ... }"
## ersetzen
##
##############################################################################
##
## Hinweis:
##
## Bei Fehlern, Hinweisen, Wünschen bitte Mail an mario@nenafan.de
##
## Bevor Änderungen an den Files vorgenommen werden empfiehlt es
## sich, backups der betroffenen Files vorzunehmen. Änderungen
## an der Datenbank sind nicht notwendig.
##
##############################################################################
##
## History
##
## Version 1.1 23.11.2003
## - erste öffentliche Version
##
## Version 1.2 02.02.2004
## - Zeilenumbrüche für Windows-basierende PC's angepasst. Bei Bedarf kann
## $crlf = "\r\n"; an eigene Bedürfnisse angepasst werden, z.B. in
## $crlf = "\n"; für Linux. (Zeile 113)
## - wordwrap für die eigentliche PN ergänzt
##
## Version 1.3 10.12.2005
## - Zeilenumbrüche "\r\n" bzw. "\n" werden nun anhand des erkannten
v## Betriebbsystems automatisch gesetzt.
## - BBCode aus dem text entfernt
## - Leerzeichen aus Dateinamen entfernt und Dateinamen mit StundenMinutenSekunden
## ergänzt. (Ist sinnvoll, wenn man mehrere Seiten speichern will ohne den
## Dateinamen ändern zu müssen.)
## - bei outbox und sentbox wird nun im Text korrekt "von:" (anstatt "an")
## angezeigt.
##
## Version 1.4 15.02.2008
## - Als Postingdatum wurde das donwload-Datum eingetragen, was durch einen
## unsinnigen Aufruf von time() verursacht wurde.
##
## suche: date($user_dateformat,time($db_row['privmsgs_date']))
## ersetze mit: date($user_dateformat,$db_row['privmsgs_date'])
##
##############################################################################
#
#-----[ Ö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;
$agent = getenv("HTTP_USER_AGENT");
if (preg_match("/windows/i",$agent)) $crlf = "\r\n";
else if (preg_match("/linux/i",$agent)) $crlf = "\n";
else $crlf = "\r\n"; // default value
$pmtext = $lang['Private_Messaging']." (".$board_config['sitename'].")".$crlf;
$user_dateformat = ($userdata['user_dateformat']) ? $userdata['user_dateformat'] : $board_config['default_dateformat'];
$pmtext .= $disp_folder . " (". date($user_dateformat,time()). ")".$crlf;
while($mark_list[$i] != "")
{
$sql = "SELECT pt.privmsgs_text, us.username, us.user_id, pm.privmsgs_date, pm.privmsgs_subject, pt.privmsgs_bbcode_uid
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 = ";
if ($folder == 'sentbox' || $folder == 'outbox') $sql .= "pm.privmsgs_to_userid";
else $sql .= "pm.privmsgs_from_userid";
if ( $result = $db->sql_query($sql) )
{
$db_row = $db->sql_fetchrow($result);
$privbbcode_uid = $db_row['privmsgs_bbcode_uid'];
$tmpmsg = preg_replace('/\[.*'.$privbbcode_uid.'\]/U', '', strip_tags($db_row['privmsgs_text']));
$tmpmsg = wordwrap($tmpmsg,78,$crlf);
$from = ($folder=='inbox' || $folder=='savebox') ? $lang['From'] : $lang['To'];
$pmtext .= "------------------------------------------------------------------------------".$crlf;
$pmtext .= $lang['Mailbox'].": ".$userdata['username'].$crlf;
$pmtext .= $from.": ".$db_row['username'].$crlf;
$pmtext .= $lang['Posted'].": ".date($user_dateformat,$db_row['privmsgs_date']).$crlf;
$pmtext .= $lang['Subject'].": ".$db_row['privmsgs_subject'].$crlf.$crlf;
$pmtext .= $tmpmsg.$crlf;
}
else
{
print $sql."<p>";
message_die(GENERAL_ERROR, 'Could not read private message info', '', __LINE__, __FILE__, $sql);
}
$i++;
}
$disp_folder = str_replace(' ', '_', $disp_folder);
$filename = $board_config['sitename']."_".$disp_folder."_".date("YmdHis",time()).".txt";
header('Content-Type: text/x-delimtext; name="' . $filename . '"');
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" />
# Ich empfehle die zwischen den Input-Tags zu löschen, die verursachen nur
# einen zu großen Button-Abstand!
#
#-----[ ALLE DATEIEN SPEICHERN ]----------------------------------------------
#
Code: Alles auswählen
$privbbcode_uid = $db_row['privmsgs_bbcode_uid'];
$tmpmsg = preg_replace('/\[.*'.$privbbcode_uid.'\]/U', '', strip_tags($db_row['privmsgs_text']));
Code: Alles auswählen
$privbbcode_uid = $db_row['privmsgs_bbcode_uid'];
$tmpmsg = preg_replace('/\[img:[a-z0-9]{10,}\].*?\[\/img:[a-z0-9]{10,}\]/', ' ', strip_tags($db_row['privmsgs_text']));
$tmpmsg = preg_replace('/\[url\]|\[\/url\]/si', '', $tmpmsg);
$tmpmsg = preg_replace('/\[\/?url(=.*?)?\]/', '', $tmpmsg);
$tmpmsg = preg_replace('/\"/si', '"', $tmpmsg);
$tmpmsg = preg_replace('/\&/si', '&', $tmpmsg);
$tmpmsg = preg_replace('/\[b:[a-z0-9]{10,}\]|\[\/b:[a-z0-9]{10,}\]/', '', $tmpmsg);
$tmpmsg = preg_replace('/\[u:[a-z0-9]{10,}\]|\[\/u:[a-z0-9]{10,}\]/', '', $tmpmsg);
$tmpmsg = preg_replace('/\[quote:[a-z0-9="A-Z a-z0-9]{10,}\]/', '[Zitatanfang]: ', $tmpmsg);
$tmpmsg = preg_replace('/\[\/quote:[a-z0-9]{10,}\]/', '[Zitatende]', $tmpmsg);
Hat dies zufälligerweise jemand gelöst und verrät auch noch wie?John Doe hat geschrieben: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:Gespeicherte Dateien aus dem Archiv korrekt zu speichern, ist dann wohl schwieriger, weil die aus verschieden Boxen kommen können.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"; }