diff --git a/plugins/EmailReminder/EmailReminderPlugin.php b/plugins/EmailReminder/EmailReminderPlugin.php index 815537c659..72583f5349 100644 --- a/plugins/EmailReminder/EmailReminderPlugin.php +++ b/plugins/EmailReminder/EmailReminderPlugin.php @@ -135,6 +135,11 @@ class EmailReminderPlugin extends Plugin 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__); diff --git a/plugins/EmailReminder/lib/siteconfirmreminderhandler.php b/plugins/EmailReminder/lib/siteconfirmreminderhandler.php index d75c40f530..e5b4a5e2ab 100644 --- a/plugins/EmailReminder/lib/siteconfirmreminderhandler.php +++ b/plugins/EmailReminder/lib/siteconfirmreminderhandler.php @@ -86,7 +86,9 @@ class SiteConfirmReminderHandler extends QueueHandler 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'); diff --git a/plugins/EmailReminder/lib/userconfirmregreminderhandler.php b/plugins/EmailReminder/lib/userconfirmregreminderhandler.php index 89dad0e424..1ea57aa6db 100644 --- a/plugins/EmailReminder/lib/userconfirmregreminderhandler.php +++ b/plugins/EmailReminder/lib/userconfirmregreminderhandler.php @@ -141,6 +141,9 @@ class UserConfirmRegReminderHandler extends UserReminderHandler { return true; } break; + default: + common_log(LOG_INFO, "No need to send registration reminder to {$confirm->address}.", __FILE__); + break; } return true; } diff --git a/plugins/EmailReminder/lib/userinvitereminderhandler.php b/plugins/EmailReminder/lib/userinvitereminderhandler.php index cb19a1fe78..38c84f18bb 100644 --- a/plugins/EmailReminder/lib/userinvitereminderhandler.php +++ b/plugins/EmailReminder/lib/userinvitereminderhandler.php @@ -124,6 +124,9 @@ class UserInviteReminderHandler extends UserReminderHandler { return true; } break; + default: + common_log(LOG_INFO, "No need to send invitation reminder to {$invitation->address}.", __FILE__); + break; } return true; } diff --git a/plugins/EmailReminder/scripts/sendemailreminder.php b/plugins/EmailReminder/scripts/sendemailreminder.php index 4bfa811e10..2cc214a671 100644 --- a/plugins/EmailReminder/scripts/sendemailreminder.php +++ b/plugins/EmailReminder/scripts/sendemailreminder.php @@ -90,19 +90,32 @@ case 'all': 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();