/**
* Handle the site
*
- * @param string $reminderType type of reminder to send
+ * @param array $remitem type of reminder to send and any special options
* @return boolean true on success, false on failure
*/
- function handle($reminderType)
+ function handle($remitem)
{
+ list($type, $opts) = $remitem;
+
$qm = QueueManager::get();
try {
- switch($reminderType) {
+ switch($type) {
case UserConfirmRegReminderHandler::REGISTER_REMINDER:
$confirm = new Confirm_address();
- $confirm->address_type = $object;
+ $confirm->address_type = $type;
$confirm->find();
while ($confirm->fetch()) {
try {
- $qm->enqueue($confirm, 'uregrem');
+ $qm->enqueue(array($confirm, $opts), 'uregrem');
} catch (Exception $e) {
common_log(LOG_WARNING, $e->getMessage());
continue;
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($invitation, 'uinvrem');
+ $qm->enqueue(array($invitation, $opts), 'uinvrem');
} catch (Exception $e) {
common_log(LOG_WARNING, $e->getMessage());
continue;