View Full Version : getting post data from postid
mooreaa
09-04-2008, 06:25 PM
Hello,
I am trying to load the data found in the $post variable during a postbit. I tried using fetch_postinfo but it does not return all the data found in $post.
Is there a function I can use to retrive this data ( based on a postid or threadid ) or how can I get to this data?
Opserty
09-04-2008, 08:40 PM
What "extra" data do you need?
The query for the posts is located in showthread.php, you should be able to grab the SQL from there and amend it to fit your needs.
mooreaa
09-05-2008, 12:33 AM
I gave the query a shot and noticed that I got back pagetext... I am not 100% sure what transformations it goes through before it becomes a $post['message']... some of them are like converting new lines into html line breaks as well as bbcode parsing... how do I deal with it from this point?
if I could run the functions to prepare the $post variable as if doing a postbit, that would be ideal...
Mainly cuz otherwise I would be duplicating a lot of code on parsing, and such. Esepcailly like highlighting search results.
Opserty
09-05-2008, 09:52 AM
showthread.php will hold all your answers then. Look through the comments in that PHP file, it should be fairly easy to recognise the SQL for the posts (its a big massive block of SQL :D).
Just follow what happens to it after that.
mooreaa
09-05-2008, 04:38 PM
Though I'd share what I came up with. Not sure what I might be able to trim from this function yet, but this will load a post data based on a $postid. It also needs to have a valid $vbulletin and $thread variable... so still trying to figure out how to load those when using this function completely outside of VB.
function load_post_data( $postid )
{
global $thread;
global $post;
global $forum;
global $vbulletin;
global $db;
// ************************************************** *******************************
// get forum info
$foruminfo = fetch_foruminfo($thread['forumid']);
//create postbit factory
$postbit_factory =& new vB_Postbit_Factory();
$postbit_factory->registry =& $vbulletin;
$postbit_factory->forum =& $foruminfo;
$postbit_factory->thread =& $thread;
$postbit_factory->cache = array();
$postbit_factory->bbcode_parser =& new vB_BbCodeParser($vbulletin, fetch_tag_list());
// READ POST DATA FROM VBULLETIN DB
$postids = "post.postid IN (0" . $postid . ")";
$postorder = 'DESC';
$posts = $db->query_read("
SELECT
post.*, post.username AS postusername, post.ipaddress AS ip, IF(post.visible = 2, 1, 0) AS isdeleted,
user.*, userfield.*, usertextfield.*,
editlog.userid AS edit_userid, editlog.username AS edit_username, editlog.dateline AS edit_dateline,
editlog.reason AS edit_reason, editlog.hashistory,
postparsed.pagetext_html, postparsed.hasimages,
IF(displaygroupid=0, user.usergroupid, displaygroupid) AS displaygroupid, infractiongroupid
FROM " . TABLE_PREFIX . "post AS post
LEFT JOIN " . TABLE_PREFIX . "user AS user ON(user.userid = post.userid)
LEFT JOIN " . TABLE_PREFIX . "userfield AS userfield ON(userfield.userid = user.userid)
LEFT JOIN " . TABLE_PREFIX . "usertextfield AS usertextfield ON(usertextfield.userid = user.userid)
LEFT JOIN " . TABLE_PREFIX . "editlog AS editlog ON(editlog.postid = post.postid)
LEFT JOIN " . TABLE_PREFIX . "postparsed AS postparsed ON(postparsed.postid = post.postid AND postparsed.styleid = " . intval(STYLEID) . " AND postparsed.languageid = " . intval(LANGUAGEID) . ")
LEFT JOIN " . TABLE_PREFIX . "sigparsed AS sigparsed ON(sigparsed.userid = user.userid AND sigparsed.styleid = " . intval(STYLEID) . " AND sigparsed.languageid = " . intval(LANGUAGEID) . ")
LEFT JOIN " . TABLE_PREFIX . "sigpic AS sigpic ON(sigpic.userid = post.userid)
WHERE $postids
ORDER BY post.dateline $postorder
");
$post = $db->fetch_array($posts);
// FINISHED READING DATA FROM VB DB
$fetchtype = 'post';
$postbit_obj =& $postbit_factory->fetch_postbit($fetchtype);
if ($fetchtype == 'post')
{
$postbit_obj->highlight =& $replacewords;
}
$postbit_obj->cachable = $post_cachable;
$post['islastshown'] = ($post['postid'] == $lastpostid);
$post['attachments'] =& $postattach["$post[postid]"];
$parsed_postcache = array('text' => '', 'images' => 1, 'skip' => false);
$postbits .= $postbit_obj->construct_postbit($post);
return $post;
}
vBulletin® v3.8.12 by vBS, Copyright ©2000-2025, vBulletin Solutions Inc.