summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/mail.php32
-rw-r--r--lib/util.php8
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;
}