Break up stream code to use separate notice stream classes
Rearchitect (again!) notice stream code to delegate different functionality up and down the stack. Now, different classes implement NoticeStream.
This commit is contained in:
@@ -449,53 +449,10 @@ class File extends Memcached_DataObject
|
||||
|
||||
function stream($offset=0, $limit=NOTICES_PER_PAGE, $since_id=0, $max_id=0)
|
||||
{
|
||||
$stream = new NoticeStream(array($this, '_streamDirect'),
|
||||
array(),
|
||||
'file:notice-ids:'.$this->url);
|
||||
|
||||
$stream = new FileNoticeStream($this);
|
||||
return $stream->getNotices($offset, $limit, $since_id, $max_id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Stream of notices linking to this URL
|
||||
*
|
||||
* @param integer $offset Offset to show; default is 0
|
||||
* @param integer $limit Limit of notices to show
|
||||
* @param integer $since_id Since this notice
|
||||
* @param integer $max_id Before this notice
|
||||
*
|
||||
* @return array ids of notices that link to this file
|
||||
*/
|
||||
|
||||
function _streamDirect($offset, $limit, $since_id, $max_id)
|
||||
{
|
||||
$f2p = new File_to_post();
|
||||
|
||||
$f2p->selectAdd();
|
||||
$f2p->selectAdd('post_id');
|
||||
|
||||
$f2p->file_id = $this->id;
|
||||
|
||||
Notice::addWhereSinceId($f2p, $since_id, 'post_id', 'modified');
|
||||
Notice::addWhereMaxId($f2p, $max_id, 'post_id', 'modified');
|
||||
|
||||
$f2p->orderBy('modified DESC, post_id DESC');
|
||||
|
||||
if (!is_null($offset)) {
|
||||
$f2p->limit($offset, $limit);
|
||||
}
|
||||
|
||||
$ids = array();
|
||||
|
||||
if ($f2p->find()) {
|
||||
while ($f2p->fetch()) {
|
||||
$ids[] = $f2p->post_id;
|
||||
}
|
||||
}
|
||||
|
||||
return $ids;
|
||||
}
|
||||
|
||||
function noticeCount()
|
||||
{
|
||||
$cacheKey = sprintf('file:notice-count:%d', $this->id);
|
||||
|
Reference in New Issue
Block a user