For those having trouble with the functions.php replacement on 2.3.0 Final, replace your entire dovars section with the following code [it works] (NOTE!: this is for an unhacked vB! If you have modified this section at all with other hacks, don't use this!)
PHP Code:
// ###################### Start dovars #######################
function dovars($newtext, $sendheader = 1)
{
// parses replacement vars
global $PHP_SELF, $DB_site, $replacementsetid, $gzipoutput, $gziplevel, $newpmmsg, $microstats;
static $vars;
if (connection_status())
{
exit;
}
if (!is_array($vars))
{
// build an array of $vars containing find/replace values
$vars = array();
$replacements = $DB_site->query("
SELECT findword, replaceword, replacementsetid
FROM replacement
WHERE replacementsetid IN(-1, '" . intval($replacementsetid) . "')
ORDER BY replacementsetid, replacementid DESC
");
while ($replacement = $DB_site->fetch_array($replacements))
{
if ($replacement['findword'] != '')
{
$vars["$replacement[findword]"] = $replacement['replaceword'];
}
}
unset($replacement);
$DB_site->free_result($replacements);
}
$newtext = str_replace( '{getmicrostats}' , $microstats , $newtext );
if (PHPVERSION < '4.0.5' or 1)
{
// do each replacement in turn for PHP < 4.0.5
reset($vars);
while(list($find, $replace) = each($vars))
{
$newtext = str_replace($find, $replace, $newtext);
}
}
else
{
// do all replacements in one go (PHP >= 4.0.5 only)
$newtext = str_replace(array_keys($vars), $vars, $newtext);
}
if ($newpmmsg)
{
if (substr($PHP_SELF,-strlen('private.php')) == 'private.php')
{
// do nothing
}
else
{
$newtext = preg_replace("/<body/i", "<body onload=\"Javascript:confirm_newpm()\"", $newtext);
}
}
if ($gzipoutput and !headers_sent())
{
$newtext = gzipoutput($newtext, $gziplevel);
}
if ($sendheader)
{
@header("Content-Length: " . strlen($newtext));
}
return $newtext;
}