]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
save conversation id when saving a notice
authorEvan Prodromou <evan@controlyourself.ca>
Thu, 26 Feb 2009 21:45:43 +0000 (13:45 -0800)
committerEvan Prodromou <evan@controlyourself.ca>
Thu, 26 Feb 2009 21:45:43 +0000 (13:45 -0800)
classes/Notice.php

index ce5243841f1124451becc7294e70da2557cca7b8..c321311acc5d9b12cbb77bc19a7c111d6f6c4e02 100644 (file)
@@ -156,13 +156,20 @@ class Notice extends Memcached_DataObject
 
                $notice->query('BEGIN');
 
-        $notice->reply_to = $reply_to;
         $notice->created = common_sql_now();
         $notice->content = common_shorten_links($content);
         $notice->rendered = common_render_content($notice->content, $notice);
         $notice->source = $source;
         $notice->uri = $uri;
 
+        if (!empty($reply_to)) {
+            $reply_notice = Notice::staticGet('id', $reply_to);
+            if (!empty($reply_notice)) {
+                $notice->reply_to = $reply_to;
+                $notice->conversation = $reply_notice->conversation;
+            }
+        }
+
         if (Event::handle('StartNoticeSave', array(&$notice))) {
 
             $id = $notice->insert();
@@ -707,6 +714,7 @@ class Notice extends Memcached_DataObject
                 if ($recipient_notice) {
                     $orig = clone($this);
                     $this->reply_to = $recipient_notice->id;
+                    $this->conversation = $recipient_notice->conversation;
                     $this->update($orig);
                 }
             }
@@ -756,6 +764,14 @@ class Notice extends Memcached_DataObject
             }
         }
 
+        // If it's not a reply, make it the root of a new conversation
+
+        if (empty($this->conversation)) {
+            $orig = clone($this);
+            $this->conversation = $this->id;
+            $this->update($orig);
+        }
+
         foreach (array_keys($replied) as $recipient) {
             $user = User::staticGet('id', $recipient);
             if ($user) {