+#!/usr/bin/perl
+package IkiWiki::Plugin::moderatedcomments;
+
+use warnings;
+use strict;
+use IkiWiki 3.00;
+
+sub import {
+ hook(type => "getsetup", id => "moderatedcomments", call => \&getsetup);
+ hook(type => "checkcontent", id => "moderatedcomments", call => \&checkcontent);
+}
+
+sub getsetup () {
+ return
+ plugin => {
+ safe => 1,
+ rebuild => 0,
+ },
+ moderate_users => {
+ type => 'boolean',
+ example => 1,
+ description => 'Moderate comments of logged-in users?',
+ safe => 1,
+ rebuild => 0,
+ },
+}
+
+sub checkcontent (@) {
+ my %params=@_;
+
+ # only handle comments
+ return undef unless pagespec_match($params{page}, "postcomment(*)",
+ location => $params{page});
+
+ # admins and maybe users can comment w/o moderation
+ my $session=$params{session};
+ my $user=$session->param("name") if $session;
+ return undef if defined $user && (IkiWiki::is_admin($user) ||
+ (exists $config{moderate_users} && ! $config{moderate_users}));
+
+ return gettext("comment needs moderation");
+}
+
+1