this won't solve the big picture problem, but adding a quick check to unserialize if needed may be a good work around specific to this plugin to make it work universally. i just added a ternary check to my previously modified code:
Code:
if (preg_match('#(' . $vbulletin->wol_spiders['spiderstring'] . ')#si', USER_AGENT, $agent))
{
$agent = strtolower($agent[1]);
if(is_string($vbulletin->wol_spiders)){
$wol_spiders = is_string($vbulletin->wol_spiders)?
unserialize($vbulletin->wol_spiders)
:$vbulletin->wol_spiders;
$u_agent = $wol_spiders['agents'][$agent];
if (false && !empty($u_agent['lookup']))
{
$ourip = ip2long($host);
foreach ($u_agent['lookup'] AS $key => $ip)
{
if ($ip['startip'] AND $ip['endip'])
{
if ($ourip >= $ip['startip'] AND $ourip <= $ip['endip'])
{
$spidername = $u_agent['name'];
}
}
else if ($ip['startip'] == $ourip)
{
$spidername = $u_agent['name'];
}
}
}
else
{
$spidername = $u_agent['name'];
}
}