From: Evan Prodromou Date: Wed, 9 Mar 2011 15:25:50 +0000 (-0500) Subject: stream for direct responses X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=04a3157681ed5375220c1030b7d5043413ecd65a;p=quix0rs-gnu-social.git stream for direct responses --- diff --git a/classes/Notice.php b/classes/Notice.php index d520f4728f..d49a8f483b 100644 --- a/classes/Notice.php +++ b/classes/Notice.php @@ -463,6 +463,10 @@ class Notice extends Memcached_DataObject // was not the root of the conversation. What to do now? self::blow('notice:conversation_ids:%d', $this->conversation); + + if (!empty($this->reply_to)) { + self::blow('notice:responses:%d', $this->reply_to); + } if (!empty($this->repeat_of)) { self::blow('notice:repeats:%d', $this->repeat_of); @@ -492,6 +496,7 @@ class Notice extends Memcached_DataObject $this->blowOnInsert(); self::blow('profile:notice_ids:%d;last', $this->profile_id); + self::blow('notice:responses:%d', $this->id); if ($this->isPublic()) { self::blow('public;last'); @@ -2133,4 +2138,46 @@ class Notice extends Memcached_DataObject ($this->is_local != Notice::GATEWAY)); } } + + function responseStream($offset=0, $limit=20, $since_id=0, $max_id=0) + { + $ids = Notice::stream(array($this, '_responseStreamDirect'), + array(), + 'notice:responses:'.$id, + $offset, $limit, $since_id, $max_id); + + return Notice::getStreamByIds($ids); + } + + function _responseStreamDirect($offset=0, $limit=20, $since_id=0, $max_id=0) + { + $notice = new Notice(); + + $notice->selectAdd(); // clears it + $notice->selectAdd('id'); + + $notice->reply_to = $this->reply_to; + + $notice->orderBy('created DESC, id DESC'); + + if (!is_null($offset)) { + $notice->limit($offset, $limit); + } + + Notice::addWhereSinceId($notice, $since_id); + Notice::addWhereMaxId($notice, $max_id); + + $ids = array(); + + if ($notice->find()) { + while ($notice->fetch()) { + $ids[] = $notice->id; + } + } + + $notice->free(); + $notice = NULL; + + return $ids; + } }