diff options
author | Evan Prodromou <evan@prodromou.name> | 2008-11-20 13:37:22 -0500 |
---|---|---|
committer | Evan Prodromou <evan@prodromou.name> | 2008-11-20 13:37:22 -0500 |
commit | 35407614bb6287e96f5c08194eb0fa7ea1b71339 (patch) | |
tree | ee6aa6819b0ffdd9f64a093133aa614c9b728742 | |
parent | 7877e86506877c92165602d322e587105ffe4b7d (diff) |
hide certain users from the public stream
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
-rw-r--r-- | classes/Notice.php | 17 | ||||
-rw-r--r-- | config.php.sample | 4 | ||||
-rw-r--r-- | lib/common.php | 3 |
3 files changed, 17 insertions, 7 deletions
diff --git a/classes/Notice.php b/classes/Notice.php index 92d4b8832..c392c39c9 100644 --- a/classes/Notice.php +++ b/classes/Notice.php @@ -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); diff --git a/config.php.sample b/config.php.sample index d976b523b..17a7763af 100644 --- a/config.php.sample +++ b/config.php.sample @@ -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. diff --git a/lib/common.php b/lib/common.php index 72965a358..2ab9c616c 100644 --- a/lib/common.php +++ b/lib/common.php @@ -86,7 +86,8 @@ $config = 'avatar' => array('server' => NULL), 'public' => - array('localonly' => true), + array('localonly' => true, + 'blacklist' => array()), 'theme' => array('server' => NULL), 'xmpp' => |