- fix typo

- avoid sending commit mails to the user who made the commit
master
joey 2006-04-25 20:24:44 +00:00
parent 5ae9c4f5d5
commit 5cd32c2eee
3 changed files with 16 additions and 12 deletions

View File

@ -118,7 +118,7 @@ sub cgi_signin ($$) { #{{{
validate => sub { validate => sub {
my $name=shift; my $name=shift;
length $name && length $name &&
$name=~/$wiki_file_regexp/ && $name=~/$config{wiki_file_regexp}/ &&
! userinfo_get($name, "regdate"); ! userinfo_get($name, "regdate");
}, },
); );

View File

@ -169,6 +169,14 @@ sub rcs_notify () { #{{{
error("REV is not set, not running from svn post-commit hook, cannot send notifications"); error("REV is not set, not running from svn post-commit hook, cannot send notifications");
} }
my $rev=int(possibly_foolish_untaint($ENV{REV})); 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; my @changed_pages;
foreach my $change (`svnlook changed $config{svnrepo} -r $rev`) { foreach my $change (`svnlook changed $config{svnrepo} -r $rev`) {
@ -179,7 +187,7 @@ sub rcs_notify () { #{{{
} }
require IkiWiki::UserInfo; require IkiWiki::UserInfo;
my @email_recipients=page_subscribers(@changed_pages); my @email_recipients=commit_notify_list($user, @changed_pages);
if (@email_recipients) { if (@email_recipients) {
# TODO: if a commit spans multiple pages, this will send # TODO: if a commit spans multiple pages, this will send
# subscribers a diff that might contain pages they did not # subscribers a diff that might contain pages they did not
@ -187,14 +195,6 @@ sub rcs_notify () { #{{{
# reassemble into one mail with just the pages subscribed to. # reassemble into one mail with just the pages subscribed to.
my $diff=`svnlook diff $config{svnrepo} -r $rev --no-diff-deleted`; 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 "; my $subject="$config{wikiname} update of ";
if (@changed_pages > 2) { if (@changed_pages > 2) {
$subject.="$changed_pages[0] $changed_pages[1] etc"; $subject.="$changed_pages[0] $changed_pages[1] etc";

View File

@ -66,15 +66,19 @@ sub is_admin ($) { #{{{
return grep { $_ eq $user_name } @{$config{adminuser}}; return grep { $_ eq $user_name } @{$config{adminuser}};
} #}}} } #}}}
sub page_subscribers (@) { #{{{ sub commit_notify_list ($@) { #{{{
my $committer=shift;
my @pages=@_;
my @ret; my @ret;
my $userinfo=userinfo_retrieve(); my $userinfo=userinfo_retrieve();
foreach my $user (keys %{$userinfo}) { foreach my $user (keys %{$userinfo}) {
next if $user eq $committer;
if (exists $userinfo->{$user}->{subscriptions} && if (exists $userinfo->{$user}->{subscriptions} &&
length $userinfo->{$user}->{subscriptions} && length $userinfo->{$user}->{subscriptions} &&
exists $userinfo->{$user}->{email} && exists $userinfo->{$user}->{email} &&
length $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}; push @ret, $userinfo->{$user}->{email};
} }
} }