diff --git a/classes/Notice.php b/classes/Notice.php index 92d4b88329..c392c39c9f 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 d976b523b5..17a7763af7 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 72965a3581..2ab9c616c4 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' =>