summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvan Prodromou <evan@prodromou.name>2008-11-20 13:37:22 -0500
committerEvan Prodromou <evan@prodromou.name>2008-11-20 13:37:22 -0500
commit35407614bb6287e96f5c08194eb0fa7ea1b71339 (patch)
treeee6aa6819b0ffdd9f64a093133aa614c9b728742
parent7877e86506877c92165602d322e587105ffe4b7d (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.php17
-rw-r--r--config.php.sample4
-rw-r--r--lib/common.php3
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' =>