]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
send mail when @-replies are received
authorEvan Prodromou <evan@controlyourself.ca>
Mon, 16 Feb 2009 23:26:15 +0000 (18:26 -0500)
committerEvan Prodromou <evan@controlyourself.ca>
Mon, 16 Feb 2009 23:26:15 +0000 (18:26 -0500)
classes/Notice.php
lib/mail.php

index 8e08ad503da790144205c99f4cb4e67d26597861..570d76f618ad17c36792a9d82d89681161c221f0 100644 (file)
@@ -34,22 +34,23 @@ class Notice extends Memcached_DataObject
     ###START_AUTOCODE
     /* the code below is auto generated do not remove the above tag */
 
-    public $__table = 'notice';                             // table name
-    public $id;                                 // int(4)    primary_key not_null
-    public $profile_id;                         // int(4)     not_null
+    public $__table = 'notice';                          // table name
+    public $id;                              // int(4)  primary_key not_null
+    public $profile_id;                      // int(4)   not_null
     public $uri;                             // varchar(255)  unique_key
     public $content;                         // varchar(140)
-    public $rendered;                         // text()
+    public $rendered;                        // text()
     public $url;                             // varchar(255)
-    public $created;                         // datetime()     not_null
-    public $modified;                         // timestamp()      not_null default_CURRENT_TIMESTAMP
-    public $reply_to;                         // int(4)
-    public $is_local;                         // tinyint(1)
-    public $source;                             // varchar(32)
+    public $created;                         // datetime()   not_null
+    public $modified;                        // timestamp()   not_null default_CURRENT_TIMESTAMP
+    public $reply_to;                        // int(4)
+    public $is_local;                        // tinyint(1)
+    public $source;                          // varchar(32)
 
     /* Static get */
-    function staticGet($k,$v=null)
-    { return Memcached_DataObject::staticGet('Notice',$k,$v); }
+    function staticGet($k,$v=NULL) {
+        return Memcached_DataObject::staticGet('Notice',$k,$v);
+    }
 
     /* the code above is auto generated do not remove the tag below */
     ###END_AUTOCODE
@@ -746,10 +747,19 @@ class Notice extends Memcached_DataObject
                         if (!$id) {
                             common_log_db_error($reply, 'INSERT', __FILE__);
                             return;
+                        } else {
+                            $replied[$recipient->id] = 1;
                         }
                     }
                 }
             }
         }
+
+        foreach (array_keys($replied) as $recipient) {
+            $user = User::staticGet('id', $recipient);
+            if ($user) {
+                mail_attn_notify($user, $notice);
+            }
+        }
     }
 }
index a1faefc806576a3a336efc0341cedd912c52a21a..9fa86de5cc81a40643340db104248c79adb40c8e 100644 (file)
@@ -573,3 +573,53 @@ function mail_notify_fave($other, $user, $notice)
     common_init_locale();
     mail_to_user($other, $subject, $body);
 }
+
+/**
+ * notify a user that they have received an "attn:" message AKA "@-reply"
+ *
+ * @param User   $user   The user who recevied the notice
+ * @param Notice $notice The notice that was sent
+ *
+ * @return void
+ */
+
+function mail_notify_attn($user, $notice)
+{
+    if (!$user->email || !$user->emailnotifyattn) {
+        return;
+    }
+
+    $sender = $notice->getProfile();
+
+    $bestname = $sender->getBestName();
+
+    common_init_locale($user->language);
+
+    $subject = sprintf(_('%s sent a notice to your attention'), $bestname);
+
+    $body = sprintf(_("%1\$s just sent a notice to your attention (an '@-reply') on %2\$s.\n\n".
+                      "The notice is here:\n\n".
+                      "\t%3\$s\n\n" .
+                      "It reads:\n\n".
+                      "\t%4\$s\n\n" .
+                      "You can reply back here:\n\n".
+                      "\t%5\$s\n\n" .
+                      "The list of all @-replies for you here:\n\n" .
+                      "%6\$s\n\n" .
+                      "Faithfully yours,\n" .
+                      "%2\$s\n\n" .
+                      "P.S. You can turn off these email notifications here: %7\$s\n"),
+                    $bestname,
+                    common_config('site', 'name'),
+                    common_local_url('shownotice',
+                                     array('notice' => $notice->id)),
+                    $notice->content,
+                    common_local_url('newnotice',
+                                     array('replyto' => $sender->nickname)),
+                    common_local_url('replies',
+                                     array('nickname' => $user->nickname)),
+                    common_local_url('emailsettings'));
+
+    common_init_locale();
+    mail_to_user($user, $subject, $body);
+}