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 /classes | |
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
Diffstat (limited to 'classes')
-rw-r--r-- | classes/Notice.php | 17 |
1 files changed, 11 insertions, 6 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); |