diff options
-rw-r--r-- | classes/Notice.php | 12 | ||||
-rw-r--r-- | config.php.sample | 6 | ||||
-rw-r--r-- | lib/common.php | 2 |
3 files changed, 18 insertions, 2 deletions
diff --git a/classes/Notice.php b/classes/Notice.php index 77e0948dc..031ccd583 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 1cfbffd8d..3a13072a4 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 8543b09c7..141887ceb 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' => |