$!',
" |
$0",
$DiffRestoreFmt);
$restore = strval(@$_POST['expunge']);
$confirm = strval(@$_POST['confirm']);
if($restore && $restore != $confirm) return Abort('? $[Confirm checkbox unchecked.]');
$EnableDiffHidden = 1;
$diffkeys = preg_grep('/^diff:\\d+:\\d+:/', array_keys($page));
$cnt = 0;
if (preg_match('/^(diff:(\\d+):(\\d+):)(\\w*)$/', $restore, $m)) {
RestorePage($pagename,$page,$page,$restore);
foreach($diffkeys as $k) {
if ($k<$restore) break;
$newkey = preg_replace('/:[^:]*$/', ':hidden', $k);
unset($page[$k]);
$page[$newkey] = '';
$cnt++;
}
$fmt = XL('Expunged %d edits.');
$ChangeSummary = sprintf($fmt, $cnt);
$MessagesFmt[] = "
$ChangeSummary
";
}
elseif(isset($_POST['post'])) {
$hide = isset($_POST['hide']) ? stripmagic($_POST['hide']) : array();
foreach($diffkeys as $k) {
if (!preg_match("/^(diff:(\\d+):\\d+:)([^:]*)$/",$k,$match)) continue;
list($full, $start, $id, $cname) = $match;
if (isset($hide[$id])) {
if ($cname == 'hidden') continue;
$page["{$start}hidden"] = $page[$k];
unset($page[$k]);
$cnt++;
}
else {
if ($cname != 'hidden') continue;
$page[$start] = $page[$k];
unset($page[$k]);
$cnt++;
}
}
$fmt = XL('Toggled %d edits (%d hidden).');
$ChangeSummary = sprintf($fmt, $cnt, count($hide));
}
if ($cnt) {
$MessagesFmt[] = "$ChangeSummary
";
$IsPagePosted = 1;
WritePage($pagename, $page);
PostRecentChanges($pagename, $page, $page);
}
$DiffShow['minor'] = $DiffShow['source'] = 'y';
$PageDiffFmt = "$[{\$FullName} History]
";
$formstart = "";
ob_start();
PrintDiff($pagename);
$html = ob_get_clean();
$html = preg_replace_callback("!()(
", 'markup:(:messages:)', $formstart, $html, $formend, '',
&$PageEndFmt));
PrintFmt($pagename,$HandleDiffFmt);
}
function cb_hidediff($m) {
list($full, $start, $cnames, $link, $id) = $m;
$checked = (strpos($cnames, 'hidden') === false)? '' : ' checked="checked"';
$chk = "
";
return "$start $chk $link";
}