Log in

View Full Version : Showthread Query Hook


Cyricx
08-09-2005, 03:38 PM
Okay, so I've been fiddling around with this hook to add more info into the postbit for the inferno rpg without adding a query.

This is what the showthread.php file looks like in that spot.

$hook_query_fields = $hook_query_joins = $hook_query_where = '';
($hook = vBulletinHook::fetch_hook('showthread_query')) ? eval($hook) : false;
$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.*,
" . iif($forum['allowicons'], 'icon.title as icontitle, icon.iconpath,') . "
" . iif($vbulletin->options['avatarenabled'], 'avatar.avatarpath, NOT ISNULL(customavatar.filedata) AS hascustomavatar, customavatar.dateline AS avatardateline,customavatar.width AS avwidth,customavatar.height AS avheight,') . "
" . iif($vbulletin->options['reputationenable'], 'level,') . "
" . iif($deljoin, 'deletionlog.userid AS del_userid, deletionlog.username AS del_username, deletionlog.reason AS del_reason,') . "
editlog.userid AS edit_userid, editlog.username AS edit_username, editlog.dateline AS edit_dateline,
editlog.reason AS edit_reason,
post_parsed.pagetext_html, post_parsed.hasimages,
IF(displaygroupid=0, user.usergroupid, displaygroupid) AS displaygroupid
" . iif(!($permissions['genericpermissions'] & $vbulletin->bf_ugp_genericpermissions['canseehiddencustomfields']), $vbulletin->hidprofilecache) . "
$hook_query_fields
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)
" . iif($forum['allowicons'], "LEFT JOIN " . TABLE_PREFIX . "icon AS icon ON(icon.iconid = post.iconid)") . "
" . iif($vbulletin->options['avatarenabled'], "LEFT JOIN " . TABLE_PREFIX . "avatar AS avatar ON(avatar.avatarid = user.avatarid) LEFT JOIN " . TABLE_PREFIX . "customavatar AS customavatar ON(customavatar.userid = user.userid)") .
iif($vbulletin->options['reputationenable'], " LEFT JOIN " . TABLE_PREFIX . "reputationlevel AS reputationlevel ON(user.reputationlevelid = reputationlevel.reputationlevelid)") . "
$deljoin
LEFT JOIN " . TABLE_PREFIX . "editlog AS editlog ON(editlog.postid = post.postid)
LEFT JOIN " . TABLE_PREFIX . "post_parsed AS post_parsed ON(post_parsed.postid = post.postid AND post_parsed.styleid_code = " . $vbulletin->bbcode_style['code'] . " AND post_parsed.styleid_html = " . $vbulletin->bbcode_style['html'] . " AND post_parsed.styleid_php = " . $vbulletin->bbcode_style['php'] . " AND post_parsed.styleid_quote = " . $vbulletin->bbcode_style['quote'] . ")
$hook_query_joins
WHERE $postids $hook_query_where
ORDER BY post.dateline $postorder
");


So I made a plugin using the showthread_query hook with this code -


$hook_query_fields = ",inferno_user.*, inferno_jobs.*, inferno_element.*, inferno_clan.*";
$hook_query_joins = " LEFT JOIN inferno_user AS inferno_user ON(inferno_user.rid = user.userid)
LEFT JOIN inferno_jobs AS inferno_jobs ON(inferno_jobs.jname = inferno_user.class)
LEFT JOIN inferno_element AS inferno_element ON(inferno_element.eid = inferno_user.element)
LEFT JOIN inferno_clan AS inferno_clan ON(inferno_clan.cid = inferno_user.inclan)";


This works flawlessly ofcourse.. my concern however is..

If a future modification uses that hook, won't my code overwrite theirs or vice versa?

Am I using the hook wrong?

Thanks for any help gang :)

Andreas
08-09-2005, 03:41 PM
If you and other Authors would use .= instead of = it should work

Cyricx
08-09-2005, 03:47 PM
O rock, so it's as simple as


$hook_query_fields .= ",inferno_user.*, inferno_jobs.*, inferno_element.*, inferno_clan.*";
$hook_query_joins .= " LEFT JOIN inferno_user AS inferno_user ON(inferno_user.rid = user.userid)
LEFT JOIN inferno_jobs AS inferno_jobs ON(inferno_jobs.jname = inferno_user.class)
LEFT JOIN inferno_element AS inferno_element ON(inferno_element.eid = inferno_user.element)
LEFT JOIN inferno_clan AS inferno_clan ON(inferno_clan.cid = inferno_user.inclan)";


??

That's sweet, I'm guessing .= just adds it to the end of whatever the variable is currently defined as correct?

Colin F
08-09-2005, 04:11 PM
O rock, so it's as simple as


$hook_query_fields .= ",inferno_user.*, inferno_jobs.*, inferno_element.*, inferno_clan.*";
$hook_query_joins .= " LEFT JOIN inferno_user AS inferno_user ON(inferno_user.rid = user.userid)
LEFT JOIN inferno_jobs AS inferno_jobs ON(inferno_jobs.jname = inferno_user.class)
LEFT JOIN inferno_element AS inferno_element ON(inferno_element.eid = inferno_user.element)
LEFT JOIN inferno_clan AS inferno_clan ON(inferno_clan.cid = inferno_user.inclan)";


??

That's sweet, I'm guessing .= just adds it to the end of whatever the variable is currently defined as correct?


That's correct :)

Cyricx
08-09-2005, 04:23 PM
Awesome thanks!! :)

Revan
08-09-2005, 07:47 PM
Thing is, you have no way of knowing for sure. hell, if no-one here told you, you would have been the CAUSE of the problem :p
I wouldn't trust that as far as you can throw Boobfool :p

Cyricx
08-09-2005, 07:55 PM
If you grab him by the angles and give a good tug before you start to twirl....

You can get some SERIOUS distance!!!!


Seriously though, yeah I'm making a note to my admins to keep an eye out for hacks that add hooks to the showthread_query to be sure they do that.

Either way I'm VERY glad they added that, it'll allow me to do SOO many of my custom hacks without editting the file :)

Just wish they had something similiar for the postbits in PMs

Revan
08-09-2005, 07:56 PM
Well, as a hack developer I can't use the hook because of above reasons ;)
I can, however, release instructions on how to use that hook as an Add-On :)

Boofo
08-09-2005, 08:01 PM
Well, as a hack developer I can't use the hook because of above reasons ;)
I can, however, release instructions on how to use that hook as an Add-On :)

Listen, Raven, picking on the Boobfool is a serious offence on the org. And I'm telling!

Revan
08-09-2005, 08:18 PM
Bring it on :p