- 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 {
my $name=shift;
length $name &&
$name=~/$wiki_file_regexp/ &&
$name=~/$config{wiki_file_regexp}/ &&
! 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");
}
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`) {
@ -179,7 +187,7 @@ sub rcs_notify () { #{{{
}
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
@ -187,14 +195,6 @@ sub rcs_notify () { #{{{
# 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";

View File

@ -66,15 +66,19 @@ sub is_admin ($) { #{{{
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};
}
}