0b35ce7c37
We've been muddling through with 6- or 8-argument functions for managing streams. I'd like to start thinking of streams as their own thing, and give them some more value. So, the new NoticeStream class takes over the Notice::stream() function and Notice::getStreamByIds(). There's probably some fine-tuning to do on the object interface.
73 lines
2.1 KiB
PHP
73 lines
2.1 KiB
PHP
<?php
|
|
/**
|
|
* Table Definition for reply
|
|
*/
|
|
require_once INSTALLDIR.'/classes/Memcached_DataObject.php';
|
|
|
|
class Reply extends Memcached_DataObject
|
|
{
|
|
###START_AUTOCODE
|
|
/* the code below is auto generated do not remove the above tag */
|
|
|
|
public $__table = 'reply'; // table name
|
|
public $notice_id; // int(4) primary_key not_null
|
|
public $profile_id; // int(4) primary_key not_null
|
|
public $modified; // timestamp() not_null default_CURRENT_TIMESTAMP
|
|
public $replied_id; // int(4)
|
|
|
|
/* Static get */
|
|
function staticGet($k,$v=null)
|
|
{ return Memcached_DataObject::staticGet('Reply',$k,$v); }
|
|
|
|
/* the code above is auto generated do not remove the tag below */
|
|
###END_AUTOCODE
|
|
|
|
/**
|
|
* Wrapper for record insertion to update related caches
|
|
*/
|
|
function insert()
|
|
{
|
|
$result = parent::insert();
|
|
|
|
if ($result) {
|
|
self::blow('reply:stream:%d', $this->profile_id);
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
|
|
function stream($user_id, $offset=0, $limit=NOTICES_PER_PAGE, $since_id=0, $max_id=0)
|
|
{
|
|
$stream = new NoticeStream(array('Reply', '_streamDirect'),
|
|
array($user_id),
|
|
'reply:stream:' . $user_id);
|
|
|
|
return $stream->getNotices($offset, $limit, $since_id, $max_id);
|
|
}
|
|
|
|
function _streamDirect($user_id, $offset=0, $limit=NOTICES_PER_PAGE, $since_id=0, $max_id=0)
|
|
{
|
|
$reply = new Reply();
|
|
$reply->profile_id = $user_id;
|
|
|
|
Notice::addWhereSinceId($reply, $since_id, 'notice_id', 'modified');
|
|
Notice::addWhereMaxId($reply, $max_id, 'notice_id', 'modified');
|
|
|
|
$reply->orderBy('modified DESC, notice_id DESC');
|
|
|
|
if (!is_null($offset)) {
|
|
$reply->limit($offset, $limit);
|
|
}
|
|
|
|
$ids = array();
|
|
|
|
if ($reply->find()) {
|
|
while ($reply->fetch()) {
|
|
$ids[] = $reply->notice_id;
|
|
}
|
|
}
|
|
|
|
return $ids;
|
|
}
|
|
}
|