Fixed. This requires a replacement of lines 260 - 277.
PHP Code:
if (get_class($parser) != 'vB_WikiCodeParser')
{
if (!is_string($parser->tag_list['no_option'][$parser->current_tag['name']]['external_callback']))
{
trigger_error('AutoLink String tag: ' . $parser->current_tag['name'] . '; ' . $parser->tag_list['no_option'][$parser->current_tag['name']]['external_callback'] . '; page = ' . $_SERVER['REQUEST_URI'], E_USER_NOTICE);
}
return $parser->tag_list['no_option'][$parser->current_tag['name']]['external_callback']($parser, $text);
}
else
{
if (!is_string($parser->tag_list['bbcode']['no_option'][$parser->current_tag['name']]['external_callback']))
{
trigger_error('AutoLink String tag: ' . $parser->current_tag['name'] . '; ' . $parser->tag_list['bbcode']['no_option'][$parser->current_tag['name']]['external_callback'] . '; page = ' . $_SERVER['REQUEST_URI'], E_USER_NOTICE);
}
return $parser->tag_list['bbcode']['no_option'][$parser->current_tag['name']]['external_callback']($parser, $text);
}
Replace with:
PHP Code:
return $parser->tag_list['no_option'][$parser->current_tag['name']]['external_callback']($parser, $text);
I guess I should explain why this works. In PHP4,
get_class always returns a lowercase string, instead of the exact class name. This means that the cycle-less version of the tag list would always be used. This is why the error had been occurring before.
On top of this, in PHP5,
get_class would return the expected class name, so we would use the correct cycled version of the tag list. However, since 2.0.0, only the cycle-less version is accessible by the
vBulletinHook class.
So if we modify the function to always use the same version of the tag list, we can avoid these problems altogether.