This guide will teach you how to add your own hook locations to your scripts/default vBulletin source code. Note that I assume that you are working within the vBulletin.php files or you have included vBulletin's global.php.
Adding custom hook locations -
Method one:
See paul's thread here for the best method, if you are going to release your modification to the public this is the way you should go:
<hooks> - anything between this tag and </hooks> will be included in the drop down
<hooktype type="name"> - The name of your hook group, you should group all common hooks under a group so you can find them quickly. Make sure you don't use a name already used by a default hooktype.
<hook> - The name of your hook, this must be the same as the hook's name in the php code
Here is an example of my .xml file, I added three custom hooks under a new hooktype:
Adding a hook location to the php code is easy, just make sure you use the correct hook name! Use this bit of php anywhere after your call to global.php to call your custom hook. Also note that you must use the $hook var!
As you can see I added them right under a current hook, which mostly defeats the purpose of making custom hooks. But for this post they serve their purpose
Now all you need to do is browse to your admincp's add new plug-in page and test your new hook location! I use this just to make sure it is working correctly:
PHP Code:
echo('Testing hook_name hook');
If that outputs its text above the vBulletin header then you are good to go!.
It would be nice to have something that could be considered "unofficially standard" so if anyone created an update script that searched for custom hooks, a universal pattern could be looked for. Granted that this would be completely up to the forum admin. Thus, the suggested $customhook rather than $hook for the variable name.
Adding a hook location to the php code is easy, just make sure you use the correct hook name! Use this bit of php anywhere after your call to global.php to call your custom hook. Also note that you must use the $hook var!
I already implemented hooks as advised in this thread and they also work.
But today I noticed Warnings in the Webserver-Logfile concerning the Lines the Hooks where called:
PHP Warning: Call-time pass-by-reference has been deprecated - argument
passed by value; If you would like to pass it by reference, modify the
declaration of [runtime function name](). If you would like to enable
call-time pass-by-reference, you can set allow_call_time_pass_reference
to true in your INI file. However, future versions may not support this
any longer. in .../includes/init.php(403) :
eval()'d code on line 52, ....
Does this mean that future PHP-versions won't support the vBulletin-Hook-System?