");
if($EnableCommentFormCheck==1) {
$CommentBoxCheckFmt = "
";
# add markup (:cboxcheck:) for use when commentbox is constucted with (:input:) markup
Markup('cboxcheck', '>block', '/\\(:cboxcheck:\\)/', Keep($CommentBoxCheckFmt));
}
SDV($DiaryBoxFmt,"
");
if($EnablePostToAnyPage==1 OR $EnablePostToGroupPage==1) $PostToFmt = " ";
else $PostToFmt = "";
SDV($CommentBoxFmt,"
".
($EnableCommentFormCheck ? $CommentBoxCheckFmt : "")
);
# 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, $AuthFunction, $oAuthFunction,
$EnablePostToAnyPage, $EnablePostToGroupPage, $EnablePreventDirectives;
if (!@$_POST['post'] || @$_POST['text']=='') Redirect($pagename);
if (@$_POST['author']=='') $Author = 'anon';
if (isset($_GET['message'])) { $message = $_GET['message']; echo $message; }
$currpage = $pagename;
$currgroup = PageVar($currpage, '$Group');
if (@$_POST['postto']) {
$tgtpage = MakePageName($pagename, $_POST['postto']);
$tgtgroup = PageVar($tgtpage, '$Group');
$tgtname = PageVar($tgtpage, '$Name');
if($EnablePostToAnyPage==1 OR $EnablePostToGroupPage==1) {
$pagename = $tgtpage;
}
if($EnablePostToAnyPage==0 AND $EnablePostToGroupPage==1 AND $tgtgroup!=$currgroup ) {
Redirect($currpage);
}
# if($currpage==$tgtpage) $pagename = $currpage;
}
if ($EnablePreventDirectives==1) {
$_POST['text'] = preg_replace('/\\(:/', '(:', $_POST['text']);
}
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']);
$newpage = $page;
$newpage['text'] = $HandleCommentFunction($pagename, $page['text']);
UpdatePage($pagename, $page, $newpage);
Redirect($currpage);
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;
$text = (strstr($pagetext, $date)) ?
str_replace($date, $entry, $pagetext) :
"$entry\n>><<\n\n" . $pagetext;
return $text;
}
## 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;
$text = (strstr($pagetext, $date)) ?
str_replace($date, $entry, $pagetext) :
"$entry\n>><<\n\n" . $pagetext;
return $text;
}
## Comment entry
function HandleMessagePost($pagename,$pagetext) {
global $_POST, $JournalDateFmt, $JournalTimeFmt, $MPDateFmt, $MPTimeFmt, $MPAuthorLink,
$MPItemFmt, $MPItemStartFmt, $MPItemEndFmt, $MPDateTimeFmt, $MPAnchorFmt, $MPAnchorChronoFmt,
$CommentboxMessageFmt, $MultipleItemsPerDay, $Author, $PageUrl, $PostsPerPage,
$EnablePostAuthorRequired, $EnableWebsiteField, $EnablePageBreaks;
$id = StringCount($pagename,">>messagehead<<")+1;
if($EnableWebsiteField==1) {
$website = @$_POST['website'];
$weblink = '— [-[[(http://)'.$website.']]-]';
if(@$_POST['website']=='') $weblink = '';
}
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-] $weblink \n");
SDV($MPItemStartFmt,">>messageitem<<\n");
SDV($MPDateTimeFmt,"(:nl:)>>messagehead<<\n!!!!!\$Author — [-\$Date, \$Time-] $weblink \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,$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,$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";
}
return "$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;
}