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

Reply
 
Thread Tools Display Modes
  #1  
Old 04-29-2009, 09:19 PM
TaMpE TaMpE is offline
 
Join Date: Nov 2008
Posts: 109
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default what's the difference between plug-in, hook and hack-in?

I was reading this : https://vborg.vbsupport.ru/showthread.php?t=82625

and found a few things that messed up my understanding and also fixed my other confusion but since there's new confusion, I want to know that difference before I choose the wrong path in case I get a larger forum.

Quote:
Second thing, hooks will not get you into every corner of the code. Some things will always be done best with a hack. For example if you are looking to add something but need to query the db for some extra data and want to avoid and extra query (in other words you are going to modify an existing one with a join or such) forget it and hack it in, there are no hooks that let you modify existing queries.

Last but not least hooks are not magic, don't add a million of them and expect your forum to run as fast as it did when you first installed it. Only plug-in/hack-in what you really need!
and BTW, do all XML addon/mods we see here have <hookname>?
Reply With Quote
  #2  
Old 04-29-2009, 09:31 PM
Lynne's Avatar
Lynne Lynne is offline
 
Join Date: Sep 2004
Location: California/Idaho
Posts: 41,180
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
there are no hooks that let you modify existing queries.
This is no longer true. There are hooks in many queries now.

Usually a plugin is the actually code your write and it 'plugs into' a hook in the code. If you look at an actual hook in the code, it looks like this:
PHP Code:
($hook vBulletinHook::fetch_hook('group_dojoin')) ? eval($hook) : false
In that case, you would write a plug-in which hooks into the hook located at "group_dojoin".
Reply With Quote
  #3  
Old 04-29-2009, 10:39 PM
TaMpE TaMpE is offline
 
Join Date: Nov 2008
Posts: 109
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Lynne View Post
This is no longer true. There are hooks in many queries now.

Usually a plugin is the actually code your write and it 'plugs into' a hook in the code. If you look at an actual hook in the code, it looks like this:
PHP Code:
($hook vBulletinHook::fetch_hook('group_dojoin')) ? eval($hook) : false
In that case, you would write a plug-in which hooks into the hook located at "group_dojoin".
So the whole thing in the XML starting from <phpcode>EVERYTHING HERE</phpcode> go into that where group_dojoin ? Or the tag codes in <phpcode> replaces something below that hook ? Sorry, I still don't understand where the <phpcode> in XML go when it's plugged into the .php file or whatever we're adding to.

And could you explain in brief what's happening in this?

What do these do? This ".=" and the dots in between? I can't find a good place from eval explanation. Tried w3schools, any suggestion?
PHP Code:
eval('$activeusers_members .= ", ' fetch_template('forumhome_loggedinuser') . '";');
                
$activeusers_members substr($activeusers_members2); 
Reply With Quote
  #4  
Old 04-30-2009, 07:30 AM
Dismounted's Avatar
Dismounted Dismounted is offline
 
Join Date: Jun 2005
Location: Melbourne, Australia
Posts: 15,047
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Do not edit the XML file directly. Create and edit plugins/templates in the Admin CP, and when you're done, export the XML. This prevents structural errors.

The ".=" you are talking about is the concatenation operator (I dare you to say it!) in PHP. It is used to append content onto the end of a variable, etc.

As for eval(), anything in between its parentheses is executed as PHP code. See the PHP Manual.
Reply With Quote
  #5  
Old 04-30-2009, 11:06 AM
EnIgMa1234 EnIgMa1234 is offline
 
Join Date: Mar 2006
Location: .:: Ireland ::.
Posts: 1,306
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by TaMpE View Post
So the whole thing in the XML starting from <phpcode>EVERYTHING HERE</phpcode> go into that where group_dojoin ? Or the tag codes in <phpcode> replaces something below that hook ? Sorry, I still don't understand where the <phpcode> in XML go when it's plugged into the .php file or whatever we're adding to.

And could you explain in brief what's happening in this?

What do these do? This ".=" and the dots in between? I can't find a good place from eval explanation. Tried w3schools, any suggestion?
PHP Code:
eval('$activeusers_members .= ", ' fetch_template('forumhome_loggedinuser') . '";');
                
$activeusers_members substr($activeusers_members2); 
http://php.net/eval
Reply With Quote
  #6  
Old 04-30-2009, 03:24 PM
TaMpE TaMpE is offline
 
Join Date: Nov 2008
Posts: 109
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by Dismounted View Post
Do not edit the XML file directly. Create and edit plugins/templates in the Admin CP, and when you're done, export the XML. This prevents structural errors.

The ".=" you are talking about is the concatenation operator (I dare you to say it!) in PHP. It is used to append content onto the end of a variable, etc.

As for eval(), anything in between its parentheses is executed as PHP code. See the PHP Manual.
Quote:
Originally Posted by EnIgMa1234 View Post
thanks I'll have a read.
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 02:47 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.04398 seconds
  • Memory Usage 2,222KB
  • Queries Executed 11 (?)
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_php
  • (6)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)navbar
  • (3)navbar_link
  • (120)option
  • (6)post_thanks_box
  • (6)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (6)post_thanks_postbit_info
  • (6)postbit
  • (6)postbit_onlinestatus
  • (6)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_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