PDA

View Full Version : plugin question- how to override code in a hook location


BirdOPrey5
06-30-2010, 11:27 PM
So I'm now to using plugins in place of direct php file edits. I have code I want to put into a hook location but I need to execute my code and NOT execute the existing code... for example I make a pligin in: example_hook_location
My code is:
$x = 5;

But the existing code in the php file where the hook is:
$x = 6;

When I add my code via the plugin the result is basically:


$x = 5;
$x = 6;


Which leaves x with the same value of '6' as if my code never ran to begin with. How do I get around this? It seems like this would be a common issue when using plugins.

--------------- Added 1277949347 at 1277949347 ---------------

In more detail what I want to do is "If" something is true use my custom code for a query, otherwise (if false) use the existing code... One of the hook locations I want to do this with is:
forumdisplay_query_threadscount

I'd be much obliged for pointers on how to do this, I read an article on plugins but it was very old and couldn't find much dealing with my issue in the search.

James Birkett
07-03-2010, 06:53 AM
I know this is probably something you've looked at already, but are you able to define the variable at a later hook to override the previous variable?

If not, why not just add another hook in the location? This seems the easiest method...

Boofo
07-03-2010, 07:06 AM
You would mist likely have to replicate the query from the file in your plugin and use your variable with that. No way to do what you are asking that I am aware of, unless you could do it in a later hook.

James Birkett
07-03-2010, 08:55 AM
Or just add:

($hook = vBulletinHook::fetch_hook('hook_name')) ? eval($hook) : false;
into the file, then add:
<hook>hook_name</hook>
into hooks_vbulletin.xml (includes/xml) under whichever category it fits best, probably forumdisplay.

<hooktype type="forumdisplay">
<hook>forumdisplay_start</hook>
<hook>forumdisplay_moderator</hook>
<hook>forumdisplay_loggedinuser</hook>
<hook>forumdisplay_announcement_query</hook>
<hook>forumdisplay_announcement</hook>
<hook>forumdisplay_sort</hook>
<hook>forumdisplay_query_threadscount</hook>
<hook>forumdisplay_query_threadid</hook>
<hook>forumdisplay_query</hook>
<hook>forumdisplay_complete</hook>
</hooktype>
(insert under bold)

Boofo
07-03-2010, 09:56 AM
That kind of defeats the purpose of using plugin hooks. Why not just do the code in the file? You would have to re-do it on an upgrade anyway.

James Birkett
07-03-2010, 12:09 PM
Because by putting in a plugin hook all he is doing is creating a way of accessing the variable, he can disable/enable the plugin at his will.

Boofo
07-03-2010, 12:25 PM
And he still needs to re-do the files on every upgrade. 6 to 1, a half dozen to the other.

BirdOPrey5
07-03-2010, 04:18 PM
Thanks for the ideas... I guess it's not worth doing if I have to make another hook location because the code edits aren't that hard, I just thought maybe I could make the edits via hooks so i could release a product file instead of manual changes for a mod I made.

Oh well... at least (i think) I've figured out how hooks work for future mods.