summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvan Prodromou <evan@status.net>2010-12-06 16:38:02 -0500
committerEvan Prodromou <evan@status.net>2010-12-06 16:38:02 -0500
commit8564fc51c53de7a0670720eec437000a6b972688 (patch)
tree8cc61941093d094a6175b73d87de5845e4931afe
parentda8b268e06f4a6217c2bbb4918888001f8e7e4cd (diff)
cache generated activity info
-rw-r--r--classes/Notice.php10
-rw-r--r--lib/activity.php14
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)