vb.org Archive

vb.org Archive (https://vborg.vbsupport.ru/index.php)
-   vB3 General Discussions (https://vborg.vbsupport.ru/forumdisplay.php?f=111)
-   -   Showthread Query Hook (https://vborg.vbsupport.ru/showthread.php?t=93937)

Cyricx 08-09-2005 03:38 PM

Showthread Query Hook
 
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.

Code:

$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 -

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

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)";

??

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

Quote:

Originally Posted by Cyricx
O rock, so it's as simple as

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)";

??

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

Quote:

Originally Posted by Revan
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


All times are GMT. The time now is 09:59 PM.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, vBulletin Solutions Inc.

X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.01109 seconds
  • Memory Usage 1,743KB
  • Queries Executed 10 (?)
More Information
Template Usage:
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (4)bbcode_code_printable
  • (2)bbcode_quote_printable
  • (1)footer
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (6)option
  • (1)post_thanks_navbar_search
  • (1)printthread
  • (10)printthreadbit
  • (1)spacer_close
  • (1)spacer_open 

Phrase Groups Available:
  • global
  • postbit
  • showthread
Included Files:
  • ./printthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/class_bbcode_alt.php
  • ./includes/class_bbcode.php
  • ./includes/functions_bigthree.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • printthread_start
  • bbcode_fetch_tags
  • bbcode_create
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • printthread_post
  • printthread_complete