phpbb3 submit_post() problem

Allgemeiner Support zum phpBB 3 Board und phpBB 3 Modifikationen.
Kein Support für die Download MOD / Extension!!
No support for the Download MOD / Extension!!
Please visit https://phpbb3.oxpus.net for Download MOD / Extension
Antworten
MADxHAWK
Beiträge: 132
Registriert: Mi 15.Nov, 2006 13:40
Wohnort: Bonn
Kontaktdaten:

phpbb3 submit_post() problem

Beitrag von MADxHAWK »

Hallo,

ich arbeite gerade an einem Forenspiel für das phpbb3. Hierbei sollen Postings automatisch erstellt (bei neuem Spiel) und geändert (bei Lösung) werden.
Zum Erstellen und ändern der Postings nutze ich die phpbb3-interne funktion submit_post(). Das erstellen und ändern der Postsings funktioniert soweit auch, was jedoch nicht Funktioniert ist das Ändern des Topictitels.

hier mal meine Funktion:

postmode ist entweder post oder edit
subject ist beim erstellen "[Hangman] Tip zur Lösung" und wenn gelöst wurde "[Gelöst] Tip zur Lösung"
message ist der Postingtext
username der Ersteller des Postsings
topic_type ist POST_NORMAL
post_id ist leer wenn ein Spiel erstellt wird oder enthält die post_id wenn das Posting geändert wird
poster_id ist leer wenn ein Spiel erstellt wird und enthält die user_id des Spielstellers wenn das Posting geändert wird

Code: Alles auswählen

function hangman_post($postmode, $subject, $message, $username, $topic_type, $post_id = 0, $poster_id = 0)
{
	global $hangman_config;
	
	// generate text for storage
	generate_text_for_storage($message, $uid, $bitfield, $options, true, true, true);
	
	// create data array for posting
	$data = array(
		'forum_id'			=> $hangman_config['forum_id'],
		'topic_id'			=> 0,
		'icon_id'			=> false,
		'enable_bbcode'		=> true,
		'enable_smilies'	=> true,
		'enable_urls'		=> true,
		'enable_sig'		=> true,
		'message'			=> $message,
		'message_md5'		=> md5($message),
		'bbcode_bitfield'	=> $bitfield,
		'bbcode_uid'		=> $uid,
		'post_edit_locked'	=> 0,
		'topic_title'		=> $subject,
		'enable_indexing'	=> true,
	); 

	// append post_id to data_array if we update an existing post
	if($postmode == 'edit')
	{
		$data['post_id'] = $post_id;
		$data['post_edit_reason'] = 'Update';
	}
	
	if($poster_id != 0)
	{
		$data['poster_id'] = $poster_id;
	}
	
	// submit post
	submit_post($postmode, $subject, $username, $topic_type, $poll, $data, true);

	return $data['post_id'];
}
Der Inhalt des Postings wird geändert wenn die Funktion mit dem Parameter postmode = edit aufgerufen wird, nicht jedoch das subject (Topictitel)
Ebenso wird der Änderungsgrund im Posting eingetragen (post_edit_reason). Kurios ist jedoch, klicke ich als Admin auf Edit Post steht in der Topic Titel Zeile der neue Topictitle. Warum wird dieser als nicht auch im Forum aktualisiert?

Gruss
Martin
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Re: phpbb3 submit_post() problem

Beitrag von oxpus »

Du musst am Ende des Funktionsaufrufes nach "true" noch ein weiters "true" einfügen.
Nur dann wird auch alles aktualisiert.
Also so wäre der Funktionsaufruf korrekt:

Code: Alles auswählen

   submit_post($postmode, $subject, $username, $topic_type, $poll, $data, true, true);
Auch zum Verständnis:
Nur $subject im Funktionsaufruf wird für den neuen Topic-Titel verwendet.
Und zuletzt ist noch wichtig, topic_first_post_id und topic_last_post_id mit in $data zu schreiben, sonst erkennt die Funktion nicht, dass sich der Topic-Titel zu ersetzen ist.
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
MADxHAWK
Beiträge: 132
Registriert: Mi 15.Nov, 2006 13:40
Wohnort: Bonn
Kontaktdaten:

Re: phpbb3 submit_post() problem

Beitrag von MADxHAWK »

Hallo Oxpus,

ich danke dir, werde ich mal testen. nun muss ich schauen wie ich an topic_first_post_id und topic_last_post_id komme.

Gruss
Martin

EDIT: nun geht es :D ich musste jedoch zusätzlich zu topic_first_post_id und topic_last_post_id die topic_id selber angeben.
Antworten