87 lines
3.8 KiB
Perl
Executable File
87 lines
3.8 KiB
Perl
Executable File
#!/usr/bin/perl
|
|
#
|
|
|
|
use strict;
|
|
use vars qw(%maint);
|
|
|
|
$maint{'bdaymail'} = sub
|
|
{
|
|
my $dbr = LJ::get_db_reader();
|
|
my $sth;
|
|
|
|
# get everybody whose birthday is today.
|
|
$sth = $dbr->prepare("SELECT u.userid, u.user, u.name, u.email ".
|
|
"FROM user u, userusage uu WHERE u.userid=uu.userid AND ".
|
|
"u.bdate IS NOT NULL AND u.status='A' AND ".
|
|
"u.statusvis='V' AND u.bdate <> '0000-00-00' AND ".
|
|
"MONTH(NOW())=MONTH(u.bdate) AND DAYOFMONTH(NOW())=DAYOFMONTH(u.bdate) ".
|
|
"AND uu.timeupdate > DATE_SUB(NOW(), INTERVAL 1 MONTH) AND ".
|
|
"u.journaltype='P'");
|
|
$sth->execute;
|
|
my @bdays; push @bdays, $_ while ($_ = $sth->fetchrow_hashref);
|
|
$sth->finish;
|
|
|
|
# go through each birthday person and tell them happy birthday.
|
|
foreach my $bu (@bdays)
|
|
{
|
|
my ($user, $userid, $name, $email) = map { $bu->{$_} } qw(user userid name email);
|
|
print "$user ($userid) .. $name .. $email\n";
|
|
|
|
LJ::send_mail({
|
|
'to' => $email,
|
|
'toname' => $name,
|
|
'subject' => "Happy Birthday!",
|
|
'from' => $LJ::ADMIN_EMAIL,
|
|
'fromname' => $LJ::SITENAME,
|
|
'body' => ("Happy Birthday $name!!\n\n".
|
|
"According to our records, today is your birthday... everybody here ".
|
|
"at $LJ::SITENAME would like to wish you a happy birthday!\n\n".
|
|
"If you have any interesting birthday stories to share, do let us know! ".
|
|
"Or better, email them to us and also update your LiveJournal with them. ".
|
|
":) And if you have any questions/comments about the service in general, ".
|
|
"let us know too... we're real people, not a huge corporation, so we read ".
|
|
"and try to reply to all email.\n\n".
|
|
"Anyway... the point of this email was originally just HAPPY BIRTHDAY!\n\n".
|
|
"--\n$LJ::SITENAME\n$LJ::SITEROOT/\n"),
|
|
});
|
|
|
|
# and now, tell people that list them as friends.
|
|
$sth = $dbr->prepare("SELECT u.user, u.name, u.email ".
|
|
"FROM user u, friends f, userprop up, userproplist upl, userusage uu ".
|
|
"WHERE f.friendid=$userid AND f.userid=u.userid AND ".
|
|
"up.userid=u.userid AND upl.upropid=up.upropid AND uu.userid=u.userid AND ".
|
|
"upl.name='opt_bdaymail' AND up.value='1' AND ".
|
|
"u.journaltype='P' AND u.status='A' AND u.statusvis='V' AND ".
|
|
"uu.timeupdate>DATE_SUB(NOW(), INTERVAL 1 MONTH) AND ".
|
|
"u.userid <> $userid");
|
|
$sth->execute;
|
|
if ($dbr->err) { die $dbr->errstr; }
|
|
my @friendof; push @friendof, $_ while ($_ = $sth->fetchrow_hashref);
|
|
|
|
# possesive es
|
|
my $s = ($name =~ /s$/i) ? "'" : "'s";
|
|
|
|
foreach my $fu (@friendof)
|
|
{
|
|
my ($fuser, $fname, $femail) = map { $fu->{$_} } qw(user name email);
|
|
print " mail $fuser about $user...\n";
|
|
|
|
LJ::send_mail({
|
|
'to' => $femail,
|
|
'toname' => $fname,
|
|
'subject' => "Birthday Reminder!",
|
|
'from' => $LJ::ADMIN_EMAIL,
|
|
'fromname' => $LJ::SITENAME,
|
|
'body' => ("This is a reminder that today is $name$s birthday ".
|
|
"(LiveJournal user: $user). You have $name listed as ".
|
|
"a friend in your LiveJournal, so we thought this ".
|
|
"reminder would be useful.".
|
|
"\n\n--\n$LJ::SITENAME\n$LJ::SITEROOT/\n"),
|
|
});
|
|
}
|
|
}
|
|
|
|
};
|
|
|
|
1;
|