From 5cd32c2eeeafc5e9f3feae7983fc48a9711462a3 Mon Sep 17 00:00:00 2001 From: joey Date: Tue, 25 Apr 2006 20:24:44 +0000 Subject: - fix typo - avoid sending commit mails to the user who made the commit --- IkiWiki/CGI.pm | 2 +- IkiWiki/Rcs/SVN.pm | 18 +++++++++--------- IkiWiki/UserInfo.pm | 8 ++++++-- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/IkiWiki/CGI.pm b/IkiWiki/CGI.pm index 067886c70..e5cee9cb9 100644 --- a/IkiWiki/CGI.pm +++ b/IkiWiki/CGI.pm @@ -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"); }, ); diff --git a/IkiWiki/Rcs/SVN.pm b/IkiWiki/Rcs/SVN.pm index a2e2ff69c..358f46948 100644 --- a/IkiWiki/Rcs/SVN.pm +++ b/IkiWiki/Rcs/SVN.pm @@ -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"; diff --git a/IkiWiki/UserInfo.pm b/IkiWiki/UserInfo.pm index b322b607e..bbcddb616 100644 --- a/IkiWiki/UserInfo.pm +++ b/IkiWiki/UserInfo.pm @@ -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}; } } -- cgit v1.2.3