]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Deliver SMS to @-ref'd users who want it, regardless of subscription.
authorJoshua Judson Rosen <rozzin@geekspace.com>
Sun, 12 Jan 2014 20:45:41 +0000 (15:45 -0500)
committerMikael Nordfeldth <mmn@hethane.se>
Mon, 5 May 2014 11:36:34 +0000 (13:36 +0200)
lib/mail.php

index d967cfd796e546f91c50254dc8e2467529cff633..7b6c1d50fee17f4fbdd19aae395e56b517b4d44f 100644 (file)
@@ -437,14 +437,26 @@ function mail_broadcast_notice_sms($notice)
     $user = new User();
 
     $UT = common_config('db','type')=='pgsql'?'"user"':'user';
+    $replies = $notice->getReplies();
     $user->query('SELECT nickname, smsemail, incomingemail ' .
-                 "FROM $UT JOIN subscription " .
+                 "FROM $UT LEFT OUTER JOIN subscription " .
                  "ON $UT.id = subscription.subscriber " .
-                 'WHERE subscription.subscribed = ' . $notice->profile_id . ' ' .
+                 'AND subscription.subscribed = ' . $notice->profile_id . ' ' .
                  'AND subscription.subscribed != subscription.subscriber ' .
+                 // Users (other than the sender) who `want SMS notices':
+                 "WHERE $UT.id != " . $notice->profile_id . ' ' .
                  "AND $UT.smsemail IS NOT null " .
                  "AND $UT.smsnotify = 1 " .
-                 'AND subscription.sms = 1 ');
+                 // ... where either the user _is_ subscribed to the sender
+                 // (any of the "subscription" fields IS NOT null)
+                 // and wants to get SMS for all of this scribe's notices...
+                 'AND (subscription.sms = 1 ' .
+                 // ... or where the user was mentioned in
+                 // or replied-to with the notice:
+                 ($replies ? sprintf("OR $UT.id in (%s)",
+                                     implode(',', $replies))
+                           : '') .
+                 ')');
 
     while ($user->fetch()) {
         common_log(LOG_INFO,