]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Some fixes to make the notice stream class work
authorEvan Prodromou <evan@status.net>
Wed, 23 Mar 2011 15:59:01 +0000 (11:59 -0400)
committerEvan Prodromou <evan@status.net>
Wed, 23 Mar 2011 15:59:01 +0000 (11:59 -0400)
classes/Fave.php
classes/Notice.php
classes/Profile.php
lib/noticestream.php

index a61f35d19000f97e77a24044ea01de68ab0fa4f4..7cd64982cd8e818408bc56adc3dc6b1314301d7d 100644 (file)
@@ -87,6 +87,16 @@ class Fave extends Memcached_DataObject
         return $stream->getNotices($offset, $limit, $since_id, $max_id);
     }
 
+    function idStream($user_id, $offset=0, $limit=NOTICES_PER_PAGE, $own=false, $since_id=0, $max_id=0)
+    {
+        $stream = new NoticeStream(array('Fave', '_streamDirect'),
+                                   array($user_id, $own),
+                                   ($own) ? 'fave:ids_by_user_own:'.$user_id :
+                                   'fave:ids_by_user:'.$user_id);
+
+        return $stream->getNoticeIds($offset, $limit, $since_id, $max_id);
+    }
+
     /**
      * Note that the sorting for this is by order of *fave* not order of *notice*.
      *
index 8200e4554ff1d64d38ecc792f661efc3b344a584..1201dd902b82e846ca31cac00bf657a473a98c30 100644 (file)
@@ -45,7 +45,7 @@ require_once INSTALLDIR.'/classes/Memcached_DataObject.php';
 /* We keep 200 notices, the max number of notices available per API request,
  * in the memcached cache. */
 
-define('NOTICE_CACHE_WINDOW', 200);
+define('NOTICE_CACHE_WINDOW', NoticeStream::CACHE_WINDOW);
 
 define('MAX_BOXCARS', 128);
 
@@ -548,7 +548,7 @@ class Notice extends Memcached_DataObject
         if (empty($profile)) {
             return false;
         }
-        $notice = $profile->getNotices(0, NOTICE_CACHE_WINDOW);
+        $notice = $profile->getNotices(0, NoticeStream::CACHE_WINDOW);
         if (!empty($notice)) {
             $last = 0;
             while ($notice->fetch()) {
@@ -1656,7 +1656,7 @@ class Notice extends Memcached_DataObject
             }
         }
 
-        return Notice::getStreamByIds($ids);
+        return NoticeStream::getStreamByIds($ids);
     }
 
     function _repeatStreamDirect($limit)
index 209e5ef84ae6700a14bbfdb3bdb735719c7f39d8..c5dd2dfda9da20e44ad3ee47d4f134b973263d00 100644 (file)
@@ -550,7 +550,7 @@ class Profile extends Memcached_DataObject
             // 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);
+            $ids = Fave::idStream($this->id, 0, NoticeStream::CACHE_WINDOW);
 
             // If it's in the list, then it's a fave
 
@@ -562,7 +562,7 @@ class Profile extends Memcached_DataObject
             // then the cache has all available faves, so this one
             // is not a fave.
 
-            if (count($ids) < NOTICE_CACHE_WINDOW) {
+            if (count($ids) < NoticeStream::CACHE_WINDOW) {
                 return false;
             }
 
index a96eb53da627ce89f84fbef85b9a81324af1495e..d1ed203a6726cb9925c692f785fb034a3e94b6e7 100644 (file)
@@ -47,6 +47,8 @@ if (!defined('STATUSNET')) {
 
 class NoticeStream
 {
+    const CACHE_WINDOW = 200;
+
     public $generator = null;
     public $args      = null;
     public $cachekey  = null;
@@ -71,13 +73,13 @@ class NoticeStream
     {
         $cache = Cache::instance();
 
-        // We cache NOTICE_CACHE_WINDOW elements at the tip of the stream.
+        // We cache self::CACHE_WINDOW elements at the tip of the stream.
         // If the cache won't be hit, just generate directly.
 
         if (empty($cache) ||
             $sinceId != 0 || $maxId != 0 ||
             is_null($limit) ||
-            ($offset + $limit) > NOTICE_CACHE_WINDOW) {
+            ($offset + $limit) > self::CACHE_WINDOW) {
             return $this->generate($offset, $limit, $sinceId, $maxId);
         }
 
@@ -105,7 +107,7 @@ class NoticeStream
         if ($laststr !== false) {
             $window = explode(',', $laststr);
             $last_id = $window[0];
-            $new_ids = $this->generate(0, NOTICE_CACHE_WINDOW, $last_id, 0);
+            $new_ids = $this->generate(0, self::CACHE_WINDOW, $last_id, 0);
 
             $new_window = array_merge($new_ids, $window);
 
@@ -122,7 +124,7 @@ class NoticeStream
         // No cache hits :( Generate directly and stick the results
         // into the cache. Note we generate the full cache window.
 
-        $window = $this->generate(0, NOTICE_CACHE_WINDOW, 0, 0);
+        $window = $this->generate(0, self::CACHE_WINDOW, 0, 0);
 
         $windowstr = implode(',', $window);