From 419ae3f18d7663d95dbae577c41b3ccc1ffef6be Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Wed, 6 Apr 2011 23:33:35 -0400 Subject: [PATCH] Cache results for attachments --- classes/Notice.php | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/classes/Notice.php b/classes/Notice.php index 8e0307b19d..b948e9de73 100644 --- a/classes/Notice.php +++ b/classes/Notice.php @@ -719,18 +719,33 @@ class Notice extends Memcached_DataObject } function attachments() { - // XXX: cache this - $att = array(); - $f2p = new File_to_post; - $f2p->post_id = $this->id; - if ($f2p->find()) { - while ($f2p->fetch()) { - $f = File::staticGet($f2p->file_id); - if ($f) { - $att[] = clone($f); + + $keypart = sprintf('notice:file_ids:%d', $this->id); + + $idstr = self::cacheGet($keypart); + + if ($idstr !== false) { + $ids = explode(',', $idstr); + } else { + $f2p = new File_to_post; + $f2p->post_id = $this->id; + if ($f2p->find()) { + while ($f2p->fetch()) { + $ids[] = $f2p->file_id; } } + self::cacheSet($keypart, implode(',', $ids)); } + + $att = array(); + + foreach ($ids as $id) { + $f = File::staticGet('id', $id); + if (!empty($f)) { + $att[] = clone($f); + } + } + return $att; } -- 2.39.5