diff options
author | Evan Prodromou <evan@status.net> | 2010-12-06 16:38:02 -0500 |
---|---|---|
committer | Evan Prodromou <evan@status.net> | 2010-12-06 16:38:02 -0500 |
commit | 8564fc51c53de7a0670720eec437000a6b972688 (patch) | |
tree | 8cc61941093d094a6175b73d87de5845e4931afe | |
parent | da8b268e06f4a6217c2bbb4918888001f8e7e4cd (diff) |
cache generated activity info
-rw-r--r-- | classes/Notice.php | 10 | ||||
-rw-r--r-- | lib/activity.php | 14 |
2 files changed, 22 insertions, 2 deletions
diff --git a/classes/Notice.php b/classes/Notice.php index de5104fdb..46e1dca35 100644 --- a/classes/Notice.php +++ b/classes/Notice.php @@ -1236,10 +1236,16 @@ class Notice extends Memcached_DataObject function asActivity($cur = null, $source = false) { + $act = self::cacheGet('notice:as-activity:'.$this->id); + + if (!empty($act)) { + return $act; + } + $act = new Activity(); if (Event::handle('StartNoticeAsActivity', array($this, &$act))) { - + $profile = $this->getProfile(); $act->actor = ActivityObject::fromProfile($profile); @@ -1400,6 +1406,8 @@ class Notice extends Memcached_DataObject Event::handle('EndNoticeAsActivity', array($this, &$act)); } + self::cacheSet('notice:as-activity:'.$this->id, $act); + return $act; } diff --git a/lib/activity.php b/lib/activity.php index e29bc1a25..712800817 100644 --- a/lib/activity.php +++ b/lib/activity.php @@ -329,6 +329,14 @@ class Activity function asString($namespace=false, $author=true) { + $c = Cache::instance(); + + $str = $c->get('activity:as-string:'.Cache::keyize($this->id)); + + if (!empty($str)) { + return $str; + } + $xs = new XMLStringer(true); if ($namespace) { @@ -549,7 +557,11 @@ class Activity $xs->elementEnd('entry'); - return $xs->getString(); + $str = $xs->getString(); + + $c->set('activity:as-string:'.Cache::keyize($this->id), $str); + + return $str; } private function _child($element, $tag, $namespace=self::SPEC) |