diff options
Diffstat (limited to 'classes')
-rw-r--r-- | classes/Notice.php | 18 | ||||
-rwxr-xr-x | classes/laconica.ini | 1 |
2 files changed, 19 insertions, 0 deletions
diff --git a/classes/Notice.php b/classes/Notice.php index 44a6aeb98..6f2ced362 100644 --- a/classes/Notice.php +++ b/classes/Notice.php @@ -46,6 +46,7 @@ class Notice extends Memcached_DataObject public $reply_to; // int(4) public $is_local; // tinyint(1) public $source; // varchar(32) + public $conversation; // int(4) /* Static get */ function staticGet($k,$v=NULL) { @@ -169,6 +170,14 @@ class Notice extends Memcached_DataObject $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(); @@ -743,6 +752,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); } } @@ -792,6 +802,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) { diff --git a/classes/laconica.ini b/classes/laconica.ini index 529454d99..dd424bbdd 100755 --- a/classes/laconica.ini +++ b/classes/laconica.ini @@ -168,6 +168,7 @@ modified = 384 reply_to = 1 is_local = 17 source = 2 +conversation = 1 [notice__keys] id = N |