]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
hide certain users from the public stream
authorEvan Prodromou <evan@prodromou.name>
Thu, 20 Nov 2008 18:37:22 +0000 (13:37 -0500)
committerEvan Prodromou <evan@prodromou.name>
Thu, 20 Nov 2008 18:37:22 +0000 (13:37 -0500)
On identi.ca, certain users (http://identi.ca/derricklo) publish 5-10
automated notices every half hour or hour. This can flood the public
stream, making it unreadable for casual readers.

We don't want to prevent anyone from using the site for personal use.
However, if their personal use clouds up the public space, we can
gently remove them from that public space without interfering with
their personal activity.

So: this change prevents selected people's notices from appearing in
the public stream. It's hand-configured by an administrator, and
probably doesn't scale beyond 10-20 blacklisted users. It's a stopgap
measure.

darcs-hash:20081120183722-84dde-8a8401fbcbb6abb60a8b36de249323586ea0b22c.gz

classes/Notice.php
config.php.sample
lib/common.php

index 92d4b88329187cc44406b88dfc15e37a028ba8f1..c392c39c9fac9790cffc7990094978b2eb77cf9d 100644 (file)
@@ -357,17 +357,22 @@ class Notice extends Memcached_DataObject
 
        function publicStream($offset=0, $limit=20, $since_id=0, $before_id=0) {
 
-               $needAnd = FALSE;
-       $needWhere = TRUE;
-
+               $parts = array();
+               
                $qry = 'SELECT * FROM notice ';
 
                if (common_config('public', 'localonly')) {
-                       $qry .= ' WHERE is_local = 1 ';
-                       $needWhere = FALSE;
-                       $needAnd = TRUE;
+                       $parts[] = 'is_local = 1';
+               }
+
+               if (common_config('public', 'blacklist')) {
+                       $parts[] = 'profile_id not in (' . implode(',', common_config('public', 'blacklist')) . ')';
                }
 
+               if ($parts) {
+                       $qry .= ' WHERE ' . implode(' AND ', $parts);
+               }
+                         
                return Notice::getStream($qry,
                                                                 'public',
                                                                 $offset, $limit, $since_id, $before_id);
index d976b523b5f9de5cd742a7ece165153bb5c1dc8e..17a7763af7c1c2589b6063131ff97af12a31ada2 100644 (file)
@@ -92,6 +92,10 @@ $config['db']['database'] = 'mysql://laconica:microblog@localhost/laconica';
 #optionally show non-local messages in public timeline
 #$config['public']['localonly'] = false;
 
+#hide certain users from public pages, by ID
+#$config['public']['blacklist'][] = 123;
+#$config['public']['blacklist'][] = 2307;
+
 #Do notice broadcasts offline
 #If you use this, you must run the six offline daemons in the
 #background. See the README for details.
index 72965a3581382da2f06e3f4ae37b1db341def12c..2ab9c616c47ad9da218e2d85e0bb67fa1f937330 100644 (file)
@@ -86,7 +86,8 @@ $config =
                'avatar' =>
                array('server' => NULL),
                'public' =>
-               array('localonly' => true),
+               array('localonly' => true,
+                         'blacklist' => array()),
                'theme' =>
                array('server' => NULL),
                'xmpp' =>