]> git.mxchange.org Git - quix0rs-gnu-social.git/blobdiff - lib/noticelist.php
Optionally hide spam from timelines
[quix0rs-gnu-social.git] / lib / noticelist.php
index 91acbb8d580b6c8bb72b4de58c1f9b9d9a50fe6e..5df123fb5f9102303886931f7d0cdfa5e8567cbb 100644 (file)
@@ -124,29 +124,48 @@ class NoticeList extends Widget
     
     static function prefill(&$notices, $avatarSize=AVATAR_STREAM_SIZE)
     {
-        // Prefill attachments
-        Notice::fillAttachments($notices);
-        // Prefill attachments
-        Notice::fillFaves($notices);
-        // Prefill repeat data
-        Notice::fillRepeats($notices);
-       // Prefill the profiles
-       $profiles = Notice::fillProfiles($notices);
-       // Prefill the avatars
-       Profile::fillAvatars($profiles, $avatarSize);
+        if (Event::handle('StartNoticeListPrefill', array(&$notices, $avatarSize))) {
+
+            // Prefill attachments
+            Notice::fillAttachments($notices);
+            // Prefill attachments
+            Notice::fillFaves($notices);
+            // Prefill repeat data
+            Notice::fillRepeats($notices);
+            // Prefill the profiles
+            $profiles = Notice::fillProfiles($notices);
+            // Prefill the avatars
+            Profile::fillAvatars($profiles, $avatarSize);
        
-       $p = Profile::current();
+            $p = Profile::current();
        
-       if (!empty($p)) {
+            if (!empty($p)) {
 
-            $ids = array();
+                $ids = array();
        
-            foreach ($notices as $notice) {
-                $ids[] = $notice->id;
-            }
+                foreach ($notices as $notice) {
+                    $ids[] = $notice->id;
+                }
        
-               Memcached_DataObject::pivotGet('Fave', 'notice_id', $ids, array('user_id' => $p->id));
-               Memcached_DataObject::pivotGet('Notice', 'repeat_of', $ids, array('profile_id' => $p->id));
-       }
+                Memcached_DataObject::pivotGet('Fave', 'notice_id', $ids, array('user_id' => $p->id));
+                Memcached_DataObject::pivotGet('Notice', 'repeat_of', $ids, array('profile_id' => $p->id));
+            }
+
+            if (common_config('notice', 'hidespam')) {
+
+                $pids = array();
+
+                foreach ($profiles as $profile) {
+                    $pids[] = $profile->id;
+                }
+                
+                Memcached_DataObject::pivotGet('Profile_role',
+                                               'profile_id',
+                                               $pids,
+                                               array('role' => Profile_role::SILENCED));
+            }
+
+            Event::handle('EndNoticeListPrefill', array(&$notices, &$profiles, $avatarSize));
+        }
     }
 }