diff options
author | Zach Copley <zach@status.net> | 2010-09-27 15:01:03 -0700 |
---|---|---|
committer | Zach Copley <zach@status.net> | 2010-09-29 16:35:12 -0700 |
commit | c19e592fa80f616a18718c4650ea0ffc9661f7ce (patch) | |
tree | 5134fc868613dbd29acb769e49a0dd1b3de74a30 /classes/Profile.php | |
parent | d2ef0cf233e7e3f4567aff6ff7c94e666da5ee95 (diff) |
Move hasFave() to Profile
Diffstat (limited to 'classes/Profile.php')
-rw-r--r-- | classes/Profile.php | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/classes/Profile.php b/classes/Profile.php index 3a381fcc8..668f25d2e 100644 --- a/classes/Profile.php +++ b/classes/Profile.php @@ -473,6 +473,41 @@ class Profile extends Memcached_DataObject return $cnt; } + function hasFave($notice) + { + $cache = common_memcache(); + + // XXX: Kind of a hack. + + if (!empty($cache)) { + // This is the stream of favorite notices, in rev chron + // order. This forces it into cache. + + $ids = Fave::stream($this->id, 0, NOTICE_CACHE_WINDOW); + + // If it's in the list, then it's a fave + + if (in_array($notice->id, $ids)) { + return true; + } + + // If we're not past the end of the cache window, + // then the cache has all available faves, so this one + // is not a fave. + + if (count($ids) < NOTICE_CACHE_WINDOW) { + return false; + } + + // Otherwise, cache doesn't have all faves; + // fall through to the default + } + + $fave = Fave::pkeyGet(array('user_id' => $this->id, + 'notice_id' => $notice->id)); + return ((is_null($fave)) ? false : true); + } + function faveCount() { $c = common_memcache(); |