ljr/livejournal/bin/maint/bday.pl

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;