This is the third article I’ve written for pulling functions in phpBB3 for external use. This one allows you to either create new posts in a forum or reply to a thread. This was created for use with a text system, where users could text in comments which would be added to a thread.
Article on phpBB3 Integration
Article on sending PM’s
I’ve put everything needed into one file as I don’t want to go through and break it up. The previous two posts (linked above) used a seperate phpbb.php file with part of the code in but this just includes everything.
<?php // This is not set up for new thread posting, and has been config'd to not increment post count as this is for a bot. // Further changes will be needed to clean up code as this is using external functions instead of clear documentation. --dc define('IN_PHPBB', true); $phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './phpBB3/'; $phpEx = substr(strrchr(__FILE__, '.'), 1); include($phpbb_root_path . 'common.' . $phpEx); // Start session management $user->session_begin(); $auth->acl($user->data); $user->setup(); // post send controller function sendphpbbpost($pmmessage,$userid,$pmsubject) { include_once('phpBB3/includes/functions_posting.php'); $my_subject = utf8_normalize_nfc(request_var('$pmsubject', '', true)); $message = utf8_normalize_nfc($pmmessage, '', true); $uid = $bitfield = $options = ''; $allow_bbcode = $allow_smilies = true; $allow_urls = true; generate_text_for_storage($message, $uid, $bitfield, $options, $allow_bbcode, $allow_urls, $allow_smilies); $data = array( // General Posting Settings 'forum_id' => 7, // The forum ID in which the post will be placed. (int) 'topic_id' => 5, // Post a new topic or in an existing one? Set to 0 to create a new one, if not, specify your topic ID here instead. 'icon_id' => false, // The Icon ID in which the post will be displayed with on the viewforum, set to false for icon_id. (int) // Defining Post Options 'enable_bbcode' => false, // Enable BBcode in this post. (bool) 'enable_smilies' => true, // Enabe smilies in this post. (bool) 'enable_urls' => false, // Enable self-parsing URL links in this post. (bool) 'enable_sig' => true, // Enable the signature of the poster to be displayed in the post. (bool) // Message Body 'message' => $message, // Your text you wish to have submitted. It should pass through generate_text_for_storage() before this. (string) 'message_md5' => md5($message), // The md5 hash of your message // Values from generate_text_for_storage() 'bbcode_bitfield' => $bitfield, // Value created from the generate_text_for_storage() function. 'bbcode_uid' => $uid, // Value created from the generate_text_for_storage() function. // Other Options 'post_edit_locked' => 0, 'topic_title' => $subject, // Subject/Title of the topic. (string). This is needed for new posts but for our purposes isn't. // Email Notification Settings 'notify_set' => false, // (bool) 'notify' => false, // (bool) 'post_time' => 0, // Set a specific time, use 0 to let submit_post() take care of getting the proper time (int) 'forum_name' => '', // For identifying the name of the forum in a notification email. (string) // Indexing 'enable_indexing' => true, 'force_approved_state' => true, // Only runs on 6 onwards...check SUCC ); //Now send that post... submit_post('reply', '', '', POST_NORMAL, &$poll, &$data, $update_message = true); } $user->data['user_id'] = 2; // User id of poster. $auth->acl($user->data); // Re-initiate user after recall $userid = $user->data['user_id']; $pmmessage = 'This is a new reply, change this to whatever you want.'; sendphpbbpost($pmmessage,$userid,$pmsubject); ?>
Looking through the code above you will see several points that need changing. It’s currently set to ‘reply’ (change this to ‘post’ for a new post). Change all details to suit really – it’s easy to customise.