Xmlwiki.php
|
output\\(\\);)/", "xwOutputHook();"
));
# Apply Parser.php patch
if ($success) patchFile('../includes/Parser.php', array(
"/(function\\s+parse\\s*\\(.+?\\)\\s*\\{.+?OT_HTML;.)(.+?)(\\s*\\\$this->mOutput->setText)/s",
"$1\nif (!xwParserHook(\$text)) {\n$2\n}$3"
));
}
elseif (array_key_exists('disable', $_GET)) {
# Replace from backup
replaceFiles(array('../index.php', '../includes/Parser.php'));
}
# Print current state (based on index.php)
if (filesize('../index.php') == filesize('../index.php.bak'))
print xwMessage('xmlWiki is currently disabled. [ enable ]', '#003366');
else print xwMessage('xmlWiki is currently enabled. [ disable ]', '#003366');
# Add message to queue
function xwMessage($msg, $col = 'blue') {
global $xwMessages;
return $xwMessages[] = "
\n";
}
# Replace a list of files from their backups
function replaceFiles($list) {
foreach ($list as $filename)
if (!copy("$filename.bak", $filename))
print xwMessage("Could not replace \"$filename\" from backup!", '#d00000');
}
function patchFile($filename, $rules) {
# Back up file if doesn't already exist
if (!file_exists("$filename.bak")) {
if (!copy($filename, "$filename.bak")) {
print xwMessage("Could not back up MediaWiki \"$filename\"!", '#d00000');
exit;
}
}
# Replace from backup before enabling
if (!copy("$filename.bak", $filename))
print xwMessage("Could not find \"$filename.bak\"!", '#d00000');
# Apply patches in passed list
$file = join('', file($filename));
$success = true;
for ($i = 0; $i < count($rules); $i += 2) {
$match = $rules[$i];
$replace = $rules[$i+1];
if (preg_match($match, $file)) $file = preg_replace($match, $replace, $file);
else {
print xwMessage("Could not match rule".($i/2+1)." for \"$filename\"!", '#d00000');
$success = false;
}
}
if ($success) {
if ($success && $handle = fopen($filename, 'w')) {
fwrite($handle, $file);
fclose($handle);
} else print xwMessage("Could not open \"$filename\" for writing!", '#d00000');
}
return $success;
}
?>
| |||||







