Log in

View Full Version : Noob question regarding hooks


sully02
12-22-2005, 02:59 PM
I'm looking at the files and I see the hook(s) inside. However, I don't want to add code, I want to change what the code directly above the hook does (Which is an if/else statement).

I'm going to assume this is possible to do using hooks. If so, how would I go about doing that? If not, I'm guessing it means I'd have to hack the code directly, right :( ?

Guest190829
12-22-2005, 06:02 PM
Well it really depends on how the hook is placed, and what exactly is above the hook.

sully02
12-22-2005, 06:40 PM
Well it really depends on how the hook is placed, and what exactly is above the hook.

Fair enough. Here's what I'm looking at:

Above the hook...
// get date:
if ($_REQUEST['do'] == 'getnew' AND $vbulletin->userinfo['lastvisit'] != 0)
{
// if action = getnew and last visit date is set
$datecut = $vbulletin->userinfo['lastvisit'];
}
else
{
$_REQUEST['do'] = 'getdaily';
if ($vbulletin->GPC['days'] < 1)
{
$vbulletin->GPC['days'] = 1;
}
$datecut = TIMENOW - (24 * 60 * 60 * $vbulletin->GPC['days']);
}

The hook (Right after the above code)...

($hook = vBulletinHook::fetch_hook('search_getnew_start')) ? eval($hook) : false;

What I'd like to replace the first block of code with...
// get date:
if ($_REQUEST['do'] == 'getnew' AND $bbuserinfo['lastvisit'] != 0)
{
// if action = getnew and last visit date is set
$datecut = $bbuserinfo['lastvisit'];
}
else
{
$_REQUEST['do'] = 'getdaily';
if (($days < 1)AND(!$hours)AND(!$minutes)AND(!$seconds))
{
$days = 1;
$hours = 0;
$minutes = 0;
$seconds = 0;

}
elseif($days < 1) {
$days = 0;
}
$datecut = TIMENOW - (($days*24*60*60) + ($hours*60*60) + ($minutes*60) + $seconds);

}

merk
12-22-2005, 08:19 PM
The code you've pasted wont work since $days isnt set.

However, its easy to achieve using a hook by overwriting the variable instead of modifying the code.