validate => sub {
my $name=shift;
length $name &&
- $name=~/$wiki_file_regexp/ &&
+ $name=~/$config{wiki_file_regexp}/ &&
! userinfo_get($name, "regdate");
},
);
error("REV is not set, not running from svn post-commit hook, cannot send notifications");
}
my $rev=int(possibly_foolish_untaint($ENV{REV}));
+
+ my $user=`svnlook author $config{svnrepo} -r $rev`;
+ chomp $user;
+ my $message=`svnlook log $config{svnrepo} -r $rev`;
+ if ($message=~/$svn_webcommit/) {
+ $user="$1";
+ $message=$2;
+ }
my @changed_pages;
foreach my $change (`svnlook changed $config{svnrepo} -r $rev`) {
}
require IkiWiki::UserInfo;
- my @email_recipients=page_subscribers(@changed_pages);
+ my @email_recipients=commit_notify_list($user, @changed_pages);
if (@email_recipients) {
# TODO: if a commit spans multiple pages, this will send
# subscribers a diff that might contain pages they did not
# reassemble into one mail with just the pages subscribed to.
my $diff=`svnlook diff $config{svnrepo} -r $rev --no-diff-deleted`;
- my $user=`svnlook author $config{svnrepo} -r $rev`;
- chomp $user;
- my $message=`svnlook log $config{svnrepo} -r $rev`;
- if ($message=~/$svn_webcommit/) {
- $user="$1";
- $message=$2;
- }
-
my $subject="$config{wikiname} update of ";
if (@changed_pages > 2) {
$subject.="$changed_pages[0] $changed_pages[1] etc";
return grep { $_ eq $user_name } @{$config{adminuser}};
} #}}}
-sub page_subscribers (@) { #{{{
+sub commit_notify_list ($@) { #{{{
+ my $committer=shift;
+ my @pages=@_;
+
my @ret;
my $userinfo=userinfo_retrieve();
foreach my $user (keys %{$userinfo}) {
+ next if $user eq $committer;
if (exists $userinfo->{$user}->{subscriptions} &&
length $userinfo->{$user}->{subscriptions} &&
exists $userinfo->{$user}->{email} &&
length $userinfo->{$user}->{email} &&
- grep { globlist_match($_, $userinfo->{$user}->{subscriptions}) } @_) {
+ grep { globlist_match($_, $userinfo->{$user}->{subscriptions}) } @pages) {
push @ret, $userinfo->{$user}->{email};
}
}