]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
do a short-term cache of notice scope
authorEvan Prodromou <evan@status.net>
Thu, 7 Apr 2011 20:24:56 +0000 (16:24 -0400)
committerEvan Prodromou <evan@status.net>
Thu, 7 Apr 2011 20:24:56 +0000 (16:24 -0400)
classes/Notice.php

index c908e7e3a7b87d6708ef3908889f02b7143be3ee..c80e57dc9759d1b3846e2d5cf139a6816c634cff 100644 (file)
@@ -2182,6 +2182,21 @@ class Notice extends Memcached_DataObject
      * @return boolean whether the profile is in the notice's scope
      */
     function inScope($profile)
+    {
+        $keypart = sprintf('notice:in-scope-for:%d:%d', $this->id, $profile->id);
+
+        $result = self::cacheGet($keypart);
+
+        if ($result === false) {
+            $bResult = $this->_inScope($profile);
+            $result = ($bResult) ? 1 : 0;
+            self::cacheSet($keypart, $result, 0, 300);
+        }
+
+        return ($result == 1) ? true : false;
+    }
+
+    protected function _inScope($profile)
     {
         // If there's no scope, anyone (even anon) is in scope.