Go Back   vb.org Archive > vBulletin 3 Discussion > vB3 General Discussions
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools Display Modes
  #1  
Old 08-09-2005, 03:38 PM
Cyricx Cyricx is offline
 
Join Date: Aug 2002
Location: Missouri
Posts: 1,144
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default 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
Reply With Quote
  #2  
Old 08-09-2005, 03:41 PM
Andreas's Avatar
Andreas Andreas is offline
 
Join Date: Jan 2004
Location: Germany
Posts: 6,863
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

If you and other Authors would use .= instead of = it should work
Reply With Quote
  #3  
Old 08-09-2005, 03:47 PM
Cyricx Cyricx is offline
 
Join Date: Aug 2002
Location: Missouri
Posts: 1,144
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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?
Reply With Quote
  #4  
Old 08-09-2005, 04:11 PM
Colin F's Avatar
Colin F Colin F is offline
 
Join Date: Jul 2004
Location: Switzerland
Posts: 1,551
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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
Reply With Quote
  #5  
Old 08-09-2005, 04:23 PM
Cyricx Cyricx is offline
 
Join Date: Aug 2002
Location: Missouri
Posts: 1,144
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Awesome thanks!!
Reply With Quote
  #6  
Old 08-09-2005, 07:47 PM
Revan's Avatar
Revan Revan is offline
 
Join Date: Jan 2004
Location: Norway
Posts: 1,671
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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
I wouldn't trust that as far as you can throw Boobfool
Reply With Quote
  #7  
Old 08-09-2005, 07:55 PM
Cyricx Cyricx is offline
 
Join Date: Aug 2002
Location: Missouri
Posts: 1,144
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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
Reply With Quote
  #8  
Old 08-09-2005, 07:56 PM
Revan's Avatar
Revan Revan is offline
 
Join Date: Jan 2004
Location: Norway
Posts: 1,671
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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
Reply With Quote
  #9  
Old 08-09-2005, 08:01 PM
Boofo's Avatar
Boofo Boofo is offline
 
Join Date: Mar 2002
Location: Des Moines, IA (USA)
Posts: 15,776
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

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!
Reply With Quote
  #10  
Old 08-09-2005, 08:18 PM
Revan's Avatar
Revan Revan is offline
 
Join Date: Jan 2004
Location: Norway
Posts: 1,671
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Bring it on
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 12:14 AM.


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.04911 seconds
  • Memory Usage 2,262KB
  • Queries Executed 13 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (1)ad_showthread_firstpost
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (4)bbcode_code
  • (2)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (10)post_thanks_box
  • (10)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (10)post_thanks_postbit_info
  • (10)postbit
  • (10)postbit_onlinestatus
  • (10)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.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/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_postinfo_query
  • fetch_postinfo
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • fetch_musername
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete