function checkform ( form ) { if (form.text && form.text.value == \"\") { window.alert( '$NoCommentMessage' ); form.text.focus(); return false ; } if (form.author && form.author.value == \"\") { window.alert( '$NoAuthorMessage' ); form.author.focus(); return false ; } if (form.access && form.access.value == \"\") { window.alert( '$NoCodeMessage' ); form.access.focus(); return false ; } return true ; } ";} SDV($DiaryBoxFmt,"
$[New entry] 
". ($EnableAccessCode ? "
$[Enter code] \$AccessCode " : "
"). "
"); SDV($CommentBoxFmt,"
". ($EnablePostToAnyPage ? " " : ""). "
$[Add Comment] 
$[Sign as Author]  ". ($EnableAccessCode ? "
$[Enter code] \$AccessCode " : ""). "

"); # date and time formats SDV($JournalDateFmt,'%d %B %Y'); SDV($JournalTimeFmt,'%H:%M'); # journal and diary patterns as part of page name SDV($JournalPattern,'/Journal$/'); SDV($DiaryPattern,'/Diary$/'); if ($action == 'comment') { if (auditJP($MaxLinkCount)) SDV($HandleActions['comment'],'HandleCommentPost'); else Redirect($pagename); } else if ($action=='print' || $action=='publish') Markup('cbox',''.Keep(str_replace(array('\$Chrono','\$PostTo','\$AccessCode'), array('$1','$2',RandomAccess()), FmtPageName(\$GLOBALS['CommentBoxFmt'],\$pagename)))"); Markup('dbox',''.str_replace('\$AccessCode',RandomAccess(), FmtPageName(\$GLOBALS['DiaryBoxFmt'],\$pagename))"); if (preg_match($JournalPattern,$pagename) || preg_match($DiaryPattern,$pagename)) { $GroupHeaderFmt .= '(:if auth edit:)(:diarybox:)(:if:)(:nl:)'; if (!PageExists($pagename)) $DefaultPageTextFmt = ''; } } function RandomAccess() { return rand(100,999); } # provide {$AccessCode} page variable: $FmtPV['$AccessCode'] = RandomAccess(); function auditJP($MaxLinkCount) { SDV($MaxLinkCount, 1); if (!(@$_POST['access'] && ($_POST['access']==$_POST['accesscode']) && @$_POST['post'])) return false; preg_match_all('/https?:/',$_POST['text'],$match); return (count($match[0])>$MaxLinkCount) ? false : true; } function HandleCommentPost($pagename) { global $_GET,$_POST,$JournalPattern,$DiaryPattern,$Author; global $AuthFunction, $oAuthFunction, $EnablePostToAnyPage; if (!@$_POST['post'] || @$_POST['text']=='') Redirect($pagename); if (@$_POST['author']=='') $Author = 'anon'; if (isset($_GET['message'])) { $message = $_GET['message']; echo $message; } if (@$_POST['postto'] && $EnablePostToAnyPage==1) { SDV($EditRedirectFmt, $pagename); $pagename = MakePageName($pagename, $_POST['postto']); } SDV($AuthFunction,'PmWikiAuth'); $oAuthFunction = $AuthFunction; $AuthFunction = 'BypassAuth'; $page = RetrieveAuthPage($pagename, "read"); if(get_magic_quotes_gpc()==1) $page['text'] = addslashes($page['text']); $HandleCommentFunction = (preg_match($JournalPattern,$pagename)) ? 'Journal' : ((preg_match($DiaryPattern,$pagename)) ? 'Diary' : 'Message'); $HandleCommentFunction = 'Handle' . $HandleCommentFunction . 'Post'; $HandleCommentFunction($pagename, $page['text']); HandleEdit($pagename); exit; } function BypassAuth($pagename,$level,$authprompt=true) { global $AuthFunction,$oAuthFunction; if ($level=='edit') $AuthFunction = $oAuthFunction; return $oAuthFunction($pagename,"read",$authprompt); } function FormatDateHeading($txt,$datefmt,$fmt) { return str_replace($txt,strftime($datefmt,time()),$fmt); } ## Journal entry function HandleJournalPost($pagename,$pagetext) { global $_POST,$JournalDateFmt,$JournalTimeFmt,$JPItemStartFmt,$JPItemEndFmt,$JPDateFmt,$JPTimeFmt, $Author; SDV($JPDateFmt,'>>journaldate<<(:nl:)!!!!$Date'); SDV($JPTimeFmt,"\n>>journalhead<<\n!!!!!– \$Time –\n"); SDV($JPItemStartFmt,">>journalitem<<\n"); SDV($JPItemEndFmt,""); $date = FormatDateHeading('$Date',$JournalDateFmt,$JPDateFmt); $time = $date . FormatDateHeading('$Time',$JournalTimeFmt,$JPTimeFmt); $entry = $time.$JPItemStartFmt.$_POST['text'].$JPItemEndFmt; $_POST['text'] = (strstr($pagetext, $date)) ? str_replace($date, $entry, $pagetext) : "$entry\n>><<\n\n" . $pagetext; } ## Diary entry function HandleDiaryPost($pagename,$pagetext) { global $_POST,$JournalDateFmt,$DPDateFmt,$DPItemStartFmt,$DPItemEndFmt,$DPItemFmt; SDV($DPDateFmt,">>diaryhead<<\n!!!!\$Date "); SDV($DPItemStartFmt,"\n>>diaryitem<<\n"); SDV($DPItemEndFmt,""); $date = FormatDateHeading('$Date',$JournalDateFmt,$DPDateFmt); $entry = $date.$DPItemStartFmt.$_POST['text'].$DPItemEndFmt; $_POST['text'] = (strstr($pagetext, $date)) ? str_replace($date, $entry, $pagetext) : "$entry\n>><<\n\n" . $pagetext; } ## Comment entry function HandleMessagePost($pagename,$pagetext) { global $_POST,$JournalDateFmt,$JournalTimeFmt,$MPDateFmt,$MPTimeFmt,$MPAuthorLink, $MPItemFmt,$MPItemStartFmt,$MPItemEndFmt,$MPDateTimeFmt,$MultipleItemsPerDay,$Author, $EnablePostAuthorRequired, $CommentboxMessageFmt,$PageUrl,$EnablePageBreaks,$PostsPerPage, $MPAnchorFmt,$MPAnchorChronoFmt; $id = StringCount($pagename,">>messagehead<<")+1; if ($EnablePageBreaks==1) { $r = fmod($id-1,$PostsPerPage); if($r==0 && $id>1) SDV($MPItemEndFmt, "\n>><<\n\n(:comment breakpage:)"); else SDV($MPItemEndFmt, "\n>><<"); } else SDV($MPItemEndFmt,"\n>><<"); SDV($MPDateFmt,'>>messagedate<<(:nl:)!!!!$Date'); SDV($MPTimeFmt,"(:nl:)>>messagehead<<\n!!!!!\$Author — [-at \$Time-] \n"); SDV($MPItemStartFmt,">>messageitem<<\n"); SDV($MPDateTimeFmt,"(:nl:)>>messagehead<<\n!!!!!\$Author — [-\$Date, \$Time-] \n"); SDV($MultipleItemsPerDay,0); # set to 1 to have date above for multiple entries per day SDV($MPAuthorLink, 1); # set to 0 to disable author name as link SDV($MPAnchorFmt,"(:commentbox:)"); SDV($MPAnchorChronoFmt,"(:commentboxchrono:)"); $name = @$_POST['author']; if (@$_POST['author']=='') $_POST['author'] = 'anon'; # disable anonymous posts, but this looses also any message content: # if($EnablePostAuthorRequired == 1 && $name=='') Redirect($pagename); if($name=='') $name = 'anonymous'; else $name = ($MPAuthorLink==1) ? '[[~' . $name . ']]' : $name; if ($MultipleItemsPerDay) { $date = FormatDateHeading('$Date',$JournalDateFmt,$MPDateFmt); $entry = '[[#comment'.$id.']]'; $entry .= str_replace('$Author',$name, FormatDateHeading('$Time',$JournalTimeFmt,$MPTimeFmt)); } else { $date = ''; $entry = '[[#comment'.$id.']]'; $entry .= FormatDateHeading('$Date',$JournalDateFmt, str_replace('$Author',$name, FormatDateHeading('$Time',$JournalTimeFmt,$MPDateTimeFmt))); } $entry.= $MPItemStartFmt.$_POST['text'].$MPItemEndFmt; $order= @$_POST['order']; if ($order=='') { # order is not chrono, latest top # if (strstr($pagetext,'(:commentbox:)(:if:)')) { # $pos = strpos($pagetext,'(:commentbox:)(:if:)'); # $len = strlen('(:commentbox:)(:if:)'); if (strstr($pagetext,$MPAnchorFmt)) { $pos = strpos($pagetext,$MPAnchorFmt); $len = strlen($MPAnchorFmt); $before = substr($pagetext,0,$pos+$len)."\n"; $after = substr($pagetext,$pos+$len); } else { $before = ''; $after = $pagetext; } $entry = "$date$entry"; $after = ($MultipleItemsPerDay && strstr($after, $date)) ? str_replace($date, $entry, $after) : "$entry$after"; } else { # order is chrono, latest last $entry .= "\n"; # if (strstr($pagetext,'(:if auth edit:)(:commentboxchrono:)')) { # $pos = strpos($pagetext,'(:if auth edit:)(:commentboxchrono:)'); if (strstr($pagetext,$MPAnchorChronoFmt)) { $pos = strpos($pagetext,$MPAnchorChronoFmt); $before = substr($pagetext,0,$pos); $after = substr($pagetext,$pos); } else { $before = $pagetext; if ($before[strlen($before)-1]!='\n') $before .="\n"; $after = ''; } $before .= ($MultipleItemsPerDay && strstr($before, $date)) ? substr($entry,1) : "$date$entry"; } $_POST['text'] = "$before\n$after"; } # add page variable {$PostCount}, # counts message items per page $FmtPV['$PostCount'] = 'StringCount($pn,">>messagehead<<")'; function StringCount($pagename,$find) { $page = ReadPage($pagename, READPAGE_CURRENT); $n = substr_count($page['text'], $find); if ($n==0) return ''; #suppressing 0 return $n; }