Seite 1 von 1

Post per PHP-Script erstellen / Subject als Parameter

Verfasst: 07.01.2009 21:38
von SebastianB
Hallo zusammen,

ich habe jetzt ne kleine Ewigkeit gessucht und Code-Schnippsel nur zu alten Versionen gefunden.

Ich such eine Möglichkeit per PHP Script ein Thread in einem bestimmte Forum zu erstellen und am besten auch die IDs dafür zu erhalten.

Eine kleine Hilfe auf dem Weg wäre die Möglichkeit den Subject auch als Parameter übergeben zu können. Gibts hierfür schon was?

Board Version ist 3.0.0

Besten Dank für eure Hilfe
Sebastian

Re: Post per PHP-Script erstellen / Subject als Parameter

Verfasst: 07.01.2009 22:36
von oxpus
Das wäre der PHP-Code (mal aus einem meiner Scripte), um ein Topic zu erstellen:

Code: Alles auswählen

	$insert_forum_id = 1; // Hier die Foren-ID angeben, in dem man das neue Thema erstellen will.

	$allow_bbcodes	= ($config['allow_bbcode']) ? true : false;
	$allow_urls		= true;
	$allow_smilies	= ($config['allow_smilies']) ? true : false;
	$uid = $bitfield = '';
	$flags = 0;

	generate_text_for_storage($message, $uid, $bitfield, $flags, $allow_bbcodes, $allow_urls, $allow_smilies);
	
	$mode = 'post';
	$subject = $text; // Hier kann der Text für den Titel des Themas rein.
	$username = $user->data['username'];
	$topic_type = POST_NORMAL;
	$poll = array();
	$update_message = false;

	$sql = 'SELECT * FROM ' . FORUMS_TABLE . '
		WHERE forum_id = $insert_forum_id';
	$result = $db->sql_query($sql);
	$post_data = $db->sql_fetchrow($result);
	$db->sql_freeresult($result);

	$message = $body_of_post; // Der Inhalt des Beitrags

	$data = array(
		'topic_title'			=> $subject,
		'topic_first_post_id'	=> 0,
		'topic_last_post_id'	=> 0,
		'topic_time_limit'		=> 0,
		'topic_attachment'		=> 0,
		'post_id'				=> 0,
		'topic_id'				=> 0,
		'forum_id'				=> 13,
		'icon_id'				=> 0,
		'poster_id'				=> $user->data['user_id'],
		'enable_sig'			=> 0,
		'enable_bbcode'			=> 0,
		'enable_smilies'		=> 0,
		'enable_urls'			=> 0,
		'enable_indexing'		=> 0,
		'message_md5'			=> md5($message),
		'post_time'				=> time(),
		'post_checksum'			=> '',
		'post_edit_reason'		=> '',
		'post_edit_user'		=> 0,
		'forum_parents'			=> $post_data['forum_parents'],
		'forum_name'			=> $post_data['forum_name'],
		'notify'				=> false,
		'notify_set'			=> 0,
		'poster_ip'				=> $user->ip,
		'post_edit_locked'		=> 0,
		'bbcode_bitfield'		=> '',
		'bbcode_uid'			=> $uid,
		'message'				=> $message,
		'topic_approved'		=> true,
		'post_approved'			=> true,
	);

	include_once($phpbb_root_path . 'includes/functions_posting.' . $phpEx);
	$return_link = submit_post($mode, $subject, $username, $topic_type, $poll, $data, $update_message);

	$topic_id = (int) $data['topic_id'];
	$post_id = (int) $data['post_id'];
Mit $return_link erhält man den Link zum gerade erstellten Forum.
$topic_id und $post_id sind dann auch wohl selbsterklärend.

Vieleicht gehts auch eleganter oder besser, das Forum selber arbeitet eher mit deiner eigens hierfür angelegten Messenger-Klasse, aber das ist alles Geschmacksache...

Re: Post per PHP-Script erstellen / Subject als Parameter

Verfasst: 08.01.2009 22:27
von SebastianB
Hallo Oxpus,

besten Dank für deine Hilfe!

Ich habe es mittlerweile geschafft die passenden Includes zu finden und die meisten Fehler dich ich noch hatte zu beheben. Nur habe ich, so glaube ich, jetzt ein Problem mit dem usernamen.

Folgendes zur Konstellation:
www
www/drupal6
www/phpbb3
www/statische Seite

drupal 6 und phpbb3 mit bridge installiert, also gemeinsame userbasis mit drupal als Master -> keine separate Ameldung am Forum erforderlich. Aus Drupal ruft der User eine statische, aus .htms bestehende Homepage auf. Auf jeder von diesen ist ein Link, welcher mir mein PHP-File im /phpbb3 Ordner aufruft. Mein Skript soll jetzt was aus der .htm auslesen uns ins Forum schreiben. Und da waren Sie wieder, meine Probleme:
Fehlermeldungen:

Code: Alles auswählen

SQL ERROR [ mysql4 ]

Column 'topic_first_poster_name' cannot be null [1048]

An sql error occurred while fetching this page. Please contact an administrator if this problem persists.
Vermute mir fehlt was bei

Code: Alles auswählen

$username = $user->data['username'];
Wenn ich $username manuell zum Testen befülle bekomme ich folgende Fehlermeldung:

Code: Alles auswählen

SQL ERROR [ mysql4 ]

Column 'topic_first_poster_colour' cannot be null [1048]

An sql error occurred while fetching this page. Please contact an administrator if this problem persists.
Mein bescheidener Schluß, mir fehlt was mit dieser User-Klasse, aber was und wie mach ichs?

Besten Dank für deine Hilfe und ich hoffe das ganze ist einigermaßen verständlich, bin noch ziemlich am Anfang mit phpbb3 und php!

Gruß
Sebastian

Re: Post per PHP-Script erstellen / Subject als Parameter

Verfasst: 09.01.2009 07:20
von Dr.Death
Hallo,

die fehlt die komplette $user Initialisierung. Das $user Objekt ist leer.

Siehe dazu auch:
http://wiki.phpbb.com/Deutsch:Vorlage_f ... ene_Seiten
http://wiki.phpbb.com/Parsing_text

Re: Post per PHP-Script erstellen / Subject als Parameter

Verfasst: 28.09.2009 21:12
von JoergL1979
Hallo Zusammen,
Dieser Thread ansich hat mir schon sehr weitergeholfen...
Ich kann nun ohne Probleme Posts im Forum per Skript erstellen... Soweit so gut..

Aber eine Frage bzw. Problem hätte ich da noch:
Ich würde aber auch gerne beim Posten Dateien mit hochladen und im Post darstellen.

Über einen Stoss in die richtige Richtung bzw. eine kleines Code-Beispiel wäre ich dankbar

Gruß und Danke
Jörg