From 8d53a7d463e3cc21f1db6b0b8df31d3b51cbd820 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Sun, 28 Sep 2008 14:09:04 -0400 Subject: cache tag streams in Memcached, too darcs-hash:20080928180904-5ed1f-ebf95f6f04ee4128a1ab2bb9a6a06a946926665d.gz --- actions/tag.php | 14 ++------------ classes/Notice_tag.php | 30 ++++++++++++++++++++++++++++-- 2 files changed, 30 insertions(+), 14 deletions(-) diff --git a/actions/tag.php b/actions/tag.php index 52d91d724..f8fea341a 100644 --- a/actions/tag.php +++ b/actions/tag.php @@ -159,18 +159,8 @@ class TagAction extends StreamAction { function show_notices($tag) { - $tags = DB_DataObject::factory('Notice_tag'); - - $tags->tag = $tag; - - $tags->orderBy('created DESC'); - - $page = ($this->arg('page')) ? ($this->arg('page')+0) : 1; - - $tags->limit((($page-1)*NOTICES_PER_PAGE), NOTICES_PER_PAGE + 1); - - $cnt = $tags->find(); - + $notices = Notice_tag::getStream((($page-1)*NOTICES_PER_PAGE), NOTICES_PER_PAGE + 1); + if ($cnt > 0) { common_element_start('ul', array('id' => 'notices')); for ($i = 0; $i < min($cnt, NOTICES_PER_PAGE); $i++) { diff --git a/classes/Notice_tag.php b/classes/Notice_tag.php index 7f950d946..0f4c2f0d5 100644 --- a/classes/Notice_tag.php +++ b/classes/Notice_tag.php @@ -1,7 +1,22 @@ . */ + require_once INSTALLDIR.'/classes/Memcached_DataObject.php'; class Notice_tag extends Memcached_DataObject @@ -19,4 +34,15 @@ class Notice_tag extends Memcached_DataObject /* the code above is auto generated do not remove the tag below */ ###END_AUTOCODE + + static function noticeStream($tag, $offset=0, $limit=20) { + $qry = + 'SELECT notice.* ' . + 'FROM notice JOIN notice_tag ON notice.id = notice_tag.notice_id ' . + 'WHERE notice_tag.tag = "%s"'; + + return Notice::getStream(sprintf($qry, $tag), + 'notice_tag:notice_stream:' . $tag, + $offset, $limit); + } } -- cgit v1.2.3-54-g00ecf