Refactor for common code for sending an email when a maintainer is
added, or a maintainer is removed.
Patch by kareila.
diffs (120 lines):
diff -r f8d05013edf5 -r b0cc269ee399 htdocs/community/members.bml
--- a/htdocs/community/members.bml Mon Jun 14 22:42:21 2010 +0800
+++ b/htdocs/community/members.bml Mon Jun 14 23:20:08 2010 +0800
@@ -300,27 +300,28 @@ body<=
}
};
- # get all the maintainers who were removed
- my $changedmaintainers = LJ::load_userids(keys %{$delete{admin}}, keys
%{$add{admin}});
+ my $maintainer_notify = sub {
+ my ( $maint_u, $log_event, $ml_str ) = @_;
+ $c->log_event( $log_event, { actiontarget => $maint_u->id, remote
=> $remote } );
- foreach my $uid (keys %{$delete{admin} || {}}) {
- # log maintainer deletions
- $c->log_event('maintainer_remove', { actiontarget => $uid, remote
=> $remote });
-
- my $delmaintu = $changedmaintainers->{$uid};
- next unless $delmaintu;
-
- # send email to the poor maintainer who got removed
- my $mailusername = $delmaintu->user;
+ # send email to the maintainer
+ my $mailusername = $maint_u->user;
my $mailusercname = $c->name_raw;
my $mailclink = $c->journal_base( ['community'] );
+ my $mailcommanlink = "$LJ::SITEROOT/community/manage";
my $html;
$html .= "<p>";
$html .= BML::ml( '.email.hello', { site => $LJ::SITENAMESHORT,
user => $mailusername } );
$html .= "</p>\n<p>";
- $html .= BML::ml( '.email.del.body', { admin => $remote->{user},
comm => qq(<a href="$mailclink">$mailusercname</a>) } );
+ if ( $ml_str eq 'del' ) {
+ $html .= BML::ml( ".email.$ml_str.body", { admin =>
$remote->user, comm => qq(<a href="$mailclink">$mailusercname</a>) } );
+ } else { # add
+ $html .= BML::ml( ".email.$ml_str.body1", { comm => qq(<a
href="$mailclink">$mailusercname</a>) } );
+ $html .= "</p>\n<p>";
+ $html .= BML::ml( ".email.$ml_str.body2.html", { aopts =>
"href='" . $mailcommanlink . "'" } );
+ }
$html .= "</p>\n<p>$ML{'.email.close'}<br/>\n";
$html .= BML::ml( '.email.signed', { site => $LJ::SITENAME } );
$html .= "<br/>$LJ::SITEROOT</p>";
@@ -329,13 +330,28 @@ body<=
$plain .= BML::ml( '.email.hello', { site => $LJ::SITENAMESHORT,
user => $mailusername } );
$plain .= "\n\n";
- $plain .= BML::ml( '.email.del.body', { admin => $remote->{user},
comm => $mailusercname } );
+ if ( $ml_str eq 'del' ) {
+ $plain .= BML::ml( ".email.$ml_str.body", { admin =>
$remote->user, comm => $mailusercname } );
+ } else { # add
+ $plain .= BML::ml( ".email.$ml_str.body1", { comm =>
$mailusercname } );
+ $plain .= "\n\n" . $ML{".email.$ml_str.body2.plain"} .
"\n\n$mailcommanlink";
+ }
$plain .= "\n\n$ML{'.email.close'}\n";
$plain .= BML::ml( '.email.signed', { site => $LJ::SITENAME } );
$plain .= "\n$LJ::SITEROOT\n";
- my $subject = BML::ml( '.email.del.subject', { comm =>
$mailusercname } );
- $sendmail->($delmaintu, $html, $plain, $subject);
+ my $subject = BML::ml( ".email.$ml_str.subject", { comm =>
$mailusercname } );
+ $sendmail->( $maint_u, $html, $plain, $subject );
+ };
+
+ # get all the maintainers who were removed
+ my $changedmaintainers = LJ::load_userids(keys %{$delete{admin}}, keys
%{$add{admin}});
+
+ foreach my $uid (keys %{$delete{admin} || {}}) {
+ my $delmaintu = $changedmaintainers->{$uid};
+ next unless $delmaintu;
+
+ $maintainer_notify->( $delmaintu, 'maintainer_remove', 'del' );
}
# delete other rel edges
@@ -367,42 +383,10 @@ body<=
}
foreach my $uid (keys %{$add{admin} || {}}) {
- # log maintainer additions
- $c->log_event('maintainer_add', { actiontarget => $uid, remote =>
$remote });
-
my $newmaintu = $changedmaintainers->{$uid};
next unless $newmaintu;
- # send email to the new maintainer
- my $mailusername = $newmaintu->user;
- my $mailusercname = $c->name_raw;
- my $mailclink = $c->journal_base( ['community'] );
- my $mailcommanlink = "$LJ::SITEROOT/community/manage";
-
- my $html;
-
- $html .= "<p>";
- $html .= BML::ml( '.email.hello', { site => $LJ::SITENAMESHORT,
user => $mailusername } );
- $html .= "</p>\n<p>";
- $html .= BML::ml( '.email.add.body1', { comm => qq(<a
href="$mailclink">$mailusercname</a>) } );
- $html .= "</p>\n<p>";
- $html .= BML::ml( '.email.add.body2.html', { aopts => "href='" .
$mailcommanlink . "'" } );
- $html .= "</p>\n<p>$ML{'.email.close'}<br/>\n";
- $html .= BML::ml( '.email.signed', { site => $LJ::SITENAME } );
- $html .= "<br/>$LJ::SITEROOT</p>";
-
- my $plain;
-
- $plain .= BML::ml( '.email.hello', { site => $LJ::SITENAMESHORT,
user => $mailusername } );
- $plain .= "\n\n";
- $plain .= BML::ml( '.email.add.body1', { comm => $mailusercname }
);
- $plain .= "\n\n$ML{'.email.add.body2.plain'}\n\n$mailcommanlink";
- $plain .= "\n\n$ML{'.email.close'}\n";
- $plain .= BML::ml( '.email.signed', { site => $LJ::SITENAME } );
- $plain .= "\n$LJ::SITEROOT\n";
-
- my $subject = BML::ml( '.email.add.subject', { comm =>
$mailusercname } );
- $sendmail->($newmaintu, $html, $plain, $subject);
+ $maintainer_notify->( $newmaintu, 'maintainer_add', 'add' );
}
# set rels in db/memcache
_______________________________________________
dw-changelog mailing list
[email protected]
http://lists.dwscoalition.org/mailman/listinfo/dw-changelog