diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/mail.php | 32 | ||||
-rw-r--r-- | lib/util.php | 8 |
2 files changed, 39 insertions, 1 deletions
diff --git a/lib/mail.php b/lib/mail.php index 21a1c7a8f..c229414b0 100644 --- a/lib/mail.php +++ b/lib/mail.php @@ -157,3 +157,35 @@ function mail_new_incoming_address() { $suffix = mail_domain(); return $prefix . '@' . $suffix; } + +function mail_broadcast_notice_sms($notice) { + $user = new User(); + $user->smsnotify = 1; + $user->whereAdd('EXISTS (select subscriber from subscriptions where ' + ' subscriber = user.id and subscribed = ' . $notice->profile_id); + $user->whereAdd('sms is not null'); + + $cnt = $user->find(); + + while ($user->fetch()) { + mail_send_sms_notice($notice, $user); + } +} + +function mail_send_notice($notice, $user) { + $profile = $user->getProfile(); + $name = $profile->getBestName(); + $carrier = Sms_carrier::staticGet($user->carrier); + $sms_email = $carrier->toEmailAddress($user->sms); + $to = $name . ' <' . $sms_email . '>'; + $other = $notice->getProfile(); + + $headers = array(); + $headers['From'] = $user->incomingemail; + $headers['To'] = $name . ' <' . $sms_email . '>'; + $headers['Subject'] = sprintf(_('%s status on %s'), + $other->getBestName(), + common_exact_date($notice->created)); + $body = $notice->content; + mail_send($sms_email, $headers, $body); +} diff --git a/lib/util.php b/lib/util.php index 6f6f1dd24..e49bb3749 100644 --- a/lib/util.php +++ b/lib/util.php @@ -971,7 +971,13 @@ function common_real_broadcast($notice, $remote=false) { common_log(LOG_ERR, 'Error in jabber broadcast for notice ' . $notice->id); } } - // XXX: broadcast notices to SMS + if ($success) { + require_once(INSTALLDIR.'/lib/mail.php'); + $success = mail_broadcast_notice_sms($notice); + if (!$success) { + common_log(LOG_ERR, 'Error in sms broadcast for notice ' . $notice->id); + } + } // XXX: broadcast notices to other IM return $success; } |