function HandlePostNoAuth($pagename) { global $WikiDir,$DeleteKeyWord,$RecentChanges,$RCDelimPattern,$Now, $TimeFmt,$CurrentTime,$PageFileFmt,$DiffKeepDays,$Author,$PostFields, $DiffFunction,$ChangeSummary; $CurrentTime = strftime($TimeFmt,$Now); foreach($PostFields as $k) { if (isset($_POST[$k])) $new[$k]=str_replace("\r","",stripmagic($_POST[$k])); } Lock(2); $pagename = FmtPageName('$PageName',$pagename); if ($new['text']==$page['text']) { Redirect($pagename); return; } $diffclass=preg_replace('/\\W/','',@$_POST['diffclass']); if ($page["time"]>0) $new["diff:$Now:".$page['time'].":$diffclass"] = $DiffFunction($new['text'],$page['text']); $new['author'] = $Author; $new["author:$Now"] = $Author; $new["host:$Now"] = $_SERVER['REMOTE_ADDR']; if ($ChangeSummary) $new["csum:$Now"] = $ChangeSummary; foreach($new as $k=>$v) { if ($k=='pagename' || $k=='action') continue; $page[$k] = $v; } $keepgmt = $Now-$DiffKeepDays*86400; $keys = array_keys($page); foreach ($keys as $k) if (preg_match("/^\\w+:(\\d+)/",$k,$match)) if ($match[1] < $keepgmt) unset($page[$k]); $pagefile = FmtPageName($PageFileFmt,$pagename); if ($page['text']==$DeleteKeyWord) { @rename("$WikiDir/$pagefile","$WikiDir/$pagefile,$Now"); } else WritePage($pagename,$page); foreach($RecentChanges as $rcfmt => $pgfmt) { $rcname=FmtPageName($rcfmt,$pagename); if (!$rcname) continue; $pgtext=FmtPageName($pgfmt,$pagename); if (!$pgtext) continue; if (@$seen[$rcname]++) continue; $rcpage = ReadPage($rcname,""); $rcelim = preg_quote(preg_replace("/$RCDelimPattern.*$/",' ',$pgtext),'/'); $rcpage['text'] = preg_replace("/[^\n]*$rcelim.*\n/","",$rcpage['text']); if (!preg_match("/$RCDelimPattern/",$rcpage['text'])) $rcpage['text'] .= "$pgtext\n"; else $rcpage['text'] = preg_replace("/([^\n]*$RCDelimPattern.*\n)/", "$pgtext\n$1",$rcpage['text'],1); WritePage($rcname,$rcpage); } Redirect($pagename); }