if (self::sendReminderEmail($type, $object, $subject, $title)) {
try {
Email_reminder::recordReminder($type, $object, $day);
+ common_log(
+ LOG_INFO,
+ "Sent {$type} reminder to {$object->address}.",
+ __FILE__
+ );
} catch (Exception $e) {
// oh noez
common_log(LOG_ERR, $e->getMessage(), __FILE__);
break;
case UserInviteReminderHandler::INVITE_REMINDER:
$invitation = new Invitation();
- $invitation->find();
+ // Only send one reminder (the latest one), regardless of how many invitations a user has
+ $sql = 'SELECT * FROM (SELECT * FROM invitation WHERE registered_user_id IS NULL ORDER BY created DESC) invitees GROUP BY invitees.address';
+ $invitation->query($sql);
while ($invitation->fetch()) {
try {
$qm->enqueue(array($invitation, $opts), 'uinvrem');
if (have_option('u', 'universe')) {
$sn = new Status_network();
- if ($sn->find()) {
- while ($sn->fetch()) {
- $server = $sn->getServerName();
- StatusNet::init($server);
- // Different queue manager, maybe!
- $qm = QueueManager::get();
- foreach ($reminders as $reminder) {
- extract($reminder);
- $qm->enqueue(array($type, $opts), 'siterem');
- if (!$quiet) { print "Sent pending {$type} reminders for {$server}.\n"; }
+ try {
+ if ($sn->find()) {
+ while ($sn->fetch()) {
+ try {
+ $server = $sn->getServerName();
+ StatusNet::init($server);
+ // Different queue manager, maybe!
+ $qm = QueueManager::get();
+ foreach ($reminders as $reminder) {
+ extract($reminder);
+ $qm->enqueue(array($type, $opts), 'siterem');
+ if (!$quiet) { print "Sent pending {$type} reminders for {$server}.\n"; }
+ }
+ } catch (Exception $e) {
+ // keep going
+ common_log(LOG_ERR, "Couldn't init {$server}.\n", __FILE__);
+ if (!$quiet) { print "Couldn't init {$server}.\n"; }
+ continue;
+ }
}
+ if (!$quiet) { print "Done! Reminders sent to all unconfirmed addresses in the known universe.\n"; }
}
- if (!$quiet) { print "Done! Reminders sent to all unconfirmed addresses in the known universe.\n"; }
+ } catch (Exception $e) {
+ if (!$quiet) { print $e->getMessage() . "\n"; }
+ common_log(LOG_ERR, $e->getMessage(), __FILE__);
+ exit(1);
}
} else {
$qm = QueueManager::get();