From: Zach Copley <zach@controlyourself.ca>
Date: Wed, 10 Dec 2008 19:13:37 +0000 (-0500)
Subject: Ban certain users from posting by nickname and/or ID
X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=1e4e6eee32c48eaac7f606b5558b7214451de4c9;p=quix0rs-gnu-social.git

Ban certain users from posting by nickname and/or ID

darcs-hash:20081210191337-7b5ce-f9a083596b3f5627405c9e233c1994d8338f5731.gz
---

diff --git a/classes/Notice.php b/classes/Notice.php
index 77e0948dc2..031ccd5838 100644
--- a/classes/Notice.php
+++ b/classes/Notice.php
@@ -92,7 +92,10 @@ class Notice extends Memcached_DataObject
 	}
 
 	static function saveNew($profile_id, $content, $source=NULL, $is_local=1, $reply_to=NULL, $uri=NULL) {
-        if (!Profile::staticGet($profile_id)) {
+
+		$profile = Profile::staticGet($profile_id);
+
+        if (!$profile) {
             common_log(LOG_ERR, 'Problem saving notice. Unknown user.');
             return _('Problem saving notice. Unknown user.');
         }
@@ -102,6 +105,13 @@ class Notice extends Memcached_DataObject
 			return _('Too many notices too fast; take a breather and post again in a few minutes.');
         }
 
+		$banned = common_config('profile', 'banned');
+
+		if ( in_array($profile_id, $banned) || in_array($profile->nickname, $banned)) {
+			common_log(LOG_WARNING, "Attempted post from banned user: $profile->nickname (user id = $profile_id).");
+            return _('You are banned from posting notices on this site.');
+		}
+
 		$notice = new Notice();
 		$notice->profile_id = $profile_id;
 
diff --git a/config.php.sample b/config.php.sample
index 1cfbffd8dd..3a13072a47 100644
--- a/config.php.sample
+++ b/config.php.sample
@@ -129,4 +129,8 @@ $config['sphinx']['port'] = 3312;
 
 #$config['throttle']['enabled'] = true;
 #$config['throttle']['count'] = 100;
-#$config['throttle']['timespan'] = 3600;
\ No newline at end of file
+#$config['throttle']['timespan'] = 3600;
+
+# List of users banned from posting (nicknames and/or IDs)
+#$config['profile']['banned'][] = 'hacker';
+#$config['profile']['banned'][] = 12345;
diff --git a/lib/common.php b/lib/common.php
index 8543b09c7b..141887ceb3 100644
--- a/lib/common.php
+++ b/lib/common.php
@@ -85,6 +85,8 @@ $config =
 		'nickname' =>
 		array('blacklist' => array(),
 			  'featured' => array()),
+		'profile' =>
+		array('banned' => array()),
 		'avatar' =>
 		array('server' => NULL),
 		'public' =>