Seite 1 von 2

Mod: Download Topics and Posts

Verfasst: 26.04.2007 18:51
von Mutated!
Hallo!

Das ist der Code des Mods:

Code: Alles auswählen

if ( $download )
{
	$sql_download = ( $download != -1 ) ? " AND p.post_id = " . intval($download) . " " : '';

	$orig_word = array();
	$replacement_word = array();
	obtain_word_list($orig_word, $replacement_word);

	$sql = "SELECT u.*, p.*,  pt.post_text, pt.post_subject, pt.bbcode_uid
		FROM " . POSTS_TABLE . " p, " . USERS_TABLE . " u, " . POSTS_TEXT_TABLE . " pt
		WHERE p.topic_id = $topic_id
			$sql_download
			AND pt.post_id = p.post_id
			AND u.user_id = p.poster_id
			ORDER BY p.post_time ASC, p.post_id ASC";
	if ( !($result = $db->sql_query($sql)) )
	{
		message_die(GENERAL_ERROR, "Could not create download stream for post.", '', __LINE__, __FILE__, $sql);
	}

	$download_file = '';

	$is_auth_read = array();

	while ( $row = $db->sql_fetchrow($result) )
	{
		$is_auth_read = auth(AUTH_ALL, $row['forum_id'], $userdata);

		$poster_id = $row['user_id'];
		$poster = ( $poster_id == ANONYMOUS ) ? $lang['Guest'] : $row['username'];

		$post_date = create_date($board_config['default_dateformat'], $row['post_time'], $board_config['board_timezone']);

		$post_subject = ( $row['post_subject'] != '' ) ? $row['post_subject'] : '';

		$bbcode_uid = $row['bbcode_uid'];
		$message = $row['post_text'];
		$message = strip_tags($message);
		$message = preg_replace("/\[.*?:$bbcode_uid:?.*?\]/si", '', $message);
		$message = preg_replace('/\[url\]|\[\/url\]/si', '', $message);
		$message = preg_replace('/\:[0-9a-z\:]+\]/si', ']', $message);

		$message = unprepare_message($message);
		$message = preg_replace('/(/', '(', $message);
		$message = preg_replace('/)/', ')', $message);
		$message = preg_replace('/:/', ':', $message);
		$message = preg_replace('/[/', '[', $message);
		$message = preg_replace('/]/', ']', $message);
		$message = preg_replace('/{/', '{', $message);
		$message = preg_replace('/}/', '}', $message);

		if (count($orig_word))
		{
			$post_subject = preg_replace($orig_word, $replacement_word, $post_subject);

			$message = str_replace('\"', '"', substr(preg_replace('#(\>(((?>([^><]+|(?R)))*)\<))#se', "preg_replace(\$orig_word, \$replacement_word, '\\0')", '>' . $message . '<'), 1, -1));
		}

		$break = "\n\r";
		$line = '';
		$download_file .= $break.$line.$break.$poster.$break.$post_date.$break.$break.$post_subject.$break.$line.$break.$message.$break;
	}

	$disp_folder = ( $download == -1 ) ? 'Topic_'.$topic_id : 'Post_'.$download;

	if (!$is_auth_read['auth_read'])
	{
		$download_file = sprintf($lang['Sorry_auth_read'], $is_auth_read['auth_read_type']);
		$disp_folder = 'Download';
	}

	$filename = $board_config['sitename']."_".$disp_folder."_".date("Ymd",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($download_file));
	print $download_file;

	exit;
}
Beim Download der txt. Datei erscheint in der Text-Datei zwischen den einzelnen Beiträgen so ein komisches Zeichen: siehe: hier

Wie bekomme ich diese komischen Zeichen weg?

Verfasst: 26.04.2007 20:18
von oxpus
Öhm, ich sehe da keine komischen Zeichen... :-?

Verfasst: 26.04.2007 22:59
von Mutated!
Das Zeichen sieht wie ein Viereck aus. Das hätte ich gerne weg. Und dann wollte ich noch haben, dass der Abstand zwischen dem Nutzernamen und dem Text entfernt wird. Weißt du wie man das macht?

Verfasst: 26.04.2007 23:15
von oxpus
Weißt du wie man das macht?
Klar, ich habe den Mod schliesslich geschrieben ;)

Also ein "Viereck" sehe ich nicht, das wäre auch dann ein "Sonderzeichen".
Vielleicht liegst auch an meinem Texteditor...

Und der Abstand:
Du hast $line "geleert", damit entstehen zwangsweise mehrere Leerzeilen, die nun in Massen hintereinander störend aussehen.
Gehe daher einfach mal die Zeile

Code: Alles auswählen

$download_file .= $break.$line.$break.$poster.$break.$post_date.$break.$break.$post_subject.$break.$line.$break.$message.$break;
durch und schaue, wo welches $break (Zeilenumbruch) und $line (nun nicht mehr vorhandene Linie) vorkommt.

Verfasst: 27.04.2007 11:35
von Mutated!
Danke. Jetzt hab ich es mit en Abständen korrigiert. Ich hab jetzt so ein Bild hier eingefügt, das zeigt das Viereck. Wie mache ich das weg?

[ externes Bild ]

Verfasst: 27.04.2007 15:26
von oxpus
Das sind Umbrüche, die Dein Editor nicht korrekt darstellt!
Verwende mal einen anderen Texteditor, dann sind diese "Vierecke" nicht mehr da.
Ich habe TextPad.
Ultraedit, EasyEdit und wie sie alle heissen, leisten hier ebenfalls ein sauberes Ergebnis...

Verfasst: 27.04.2007 15:36
von Mutated!
Das tritt im Windows Texteditor auf. Ne andere Möglichkeit außer den Editor zu wechseln gibt es nicht?

Verfasst: 27.04.2007 16:31
von oxpus
Der "einfache" Windows Texteditor versteht die Zeilenumbrüche nicht, die von Unix/Linux-Systemen gesetzt werden.
Im MOD ist das \r\n.
Man sollte eh immer auch für phpBB-Dateien einen Editor nehmen, der das beherrscht, um Fehlfunktionen zu vermeiden.

Verfasst: 30.06.2007 10:38
von manuj170793
wo kann ich denn diesen download starten. ich habe den mod in meinem forum installiert, aber ich sehe nirgends den download-button bei einem thema. da steht des wäre inj der themenansicht, aber wo is die?

Verfasst: 30.06.2007 13:01
von oxpus
Naja, Button ist zu viel gesagt, es werden je Post und über/unter den Posts im Topic die Links eingefügt:
Beitrag speichern
Topic speichern
eingefügt.