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.
makue
Mitglied
Beiträge: 282
Registriert: 18.07.2002 07:58
Wohnort: Böblingen
Kontaktdaten:

Beitrag von makue »

Oops, sorry, blöde .htaccess! :wink: Ich habe den Fehler korrigiert.

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.
regie 510
Mitglied
Beiträge: 142
Registriert: 08.11.2008 23:40
Wohnort: Freiburg i. Br.

Re: PN Nachrichten auf den Pc speichern

Beitrag von regie 510 »

Hallo,

ich habe diesen Mod eingebaut, er funktionert soweit einwandfrei bis auf ein paar Kleinigkeiten. Anführungszeichen werden z.B so dargestellt: "Testtext". Könnte man im Code etwas ändern, daß entweder die Anführungszeichen richtig darstellt werden oder wenigstens " etc. verschwindet?

Bei BB-Code-Zitatblöcken dürfte es wohl schwierig werden, diese brauchbar darszustellen. Das ist aber nicht so wichtig.

Besten Dank im voraus.

Hier ist der aktuellste Code des Mods:

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" />
				&nbsp; 

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

# 
#-----[ ALLE DATEIEN SPEICHERN ]----------------------------------------------
#
Gruß, Norbert
regie 510
Mitglied
Beiträge: 142
Registriert: 08.11.2008 23:40
Wohnort: Freiburg i. Br.

Re: PN Nachrichten auf den Pc speichern

Beitrag von regie 510 »

Hallo an alle Hardcore-2.0-User,

mir ist aufgefallen, daß auch noch BB-Code ausgegeben wurde, z.B. Bilder und URL. Ich habe den Mod nun so weit hingebogen, daß weder BB-Code noch andere Sonderzeichen in den PN erscheinen. Die Anführungszeichen werden korrekt ersetzt. Eventuelle Zitate werden durch [Zitatanfang]: und [Zitatende] gekennzeichnet, auch wenn Großbuchstaben und Leerzeichen im Usernamen sind. Falls jemandem noch irgendwelche Sonderzeichen im Text auffallen sollten, einfach noch eine preg_replace-Zeile unten hinzufügen.

Suche:

Code: Alles auswählen

$privbbcode_uid = $db_row['privmsgs_bbcode_uid']; 
				$tmpmsg = preg_replace('/\[.*'.$privbbcode_uid.'\]/U', '', strip_tags($db_row['privmsgs_text']));
Ersetze durch:

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);
Gruß, Norbert
Benutzeravatar
Dungeonwatcher
Mitglied
Beiträge: 635
Registriert: 11.07.2004 10:04
Wohnort: Berlin

Re:

Beitrag von Dungeonwatcher »

Hi! 8)
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:

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.
Hat dies zufälligerweise jemand gelöst und verrät auch noch wie? :)

Bye
Antworten

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