$!', " | $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 = "
"; $formstart .= ""; $formstart .= ""; $formstart .= ""; $formstart .= "    "; $formend = "
"; 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"; }