From 6e644f77a43ea7028e0aafb2d83059d0f19db701 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Thu, 25 Mar 2010 13:49:12 -0400 Subject: Store blacklist patterns in their own tables We were bumping into limits on the config format in the Blacklist plugin. So, added new tables for nickname and homepage blacklists, and changed the plugin to use those instead of config file (actually, still uses config file in addition, for compatibility). --- plugins/Blacklist/blacklistadminpanel.php | 40 +++++++++++++------------------ 1 file changed, 17 insertions(+), 23 deletions(-) (limited to 'plugins/Blacklist/blacklistadminpanel.php') diff --git a/plugins/Blacklist/blacklistadminpanel.php b/plugins/Blacklist/blacklistadminpanel.php index 98d07080d..b996aba8d 100644 --- a/plugins/Blacklist/blacklistadminpanel.php +++ b/plugins/Blacklist/blacklistadminpanel.php @@ -88,35 +88,24 @@ class BlacklistadminpanelAction extends AdminPanelAction function saveSettings() { - static $settings = array( - 'blacklist' => array('nicknames', 'urls'), - ); + $nickPatterns = array(); - $values = array(); + $rawNickPatterns = explode("\n", $this->trimmed('blacklist-nicknames')); - foreach ($settings as $section => $parts) { - foreach ($parts as $setting) { - $values[$section][$setting] = $this->trimmed("$section-$setting"); - } + foreach ($rawNickPatterns as $raw) { + $nickPatterns[] = trim($raw); } - // This throws an exception on validation errors + Nickname_blacklist::saveNew($nickPatterns); - $this->validate($values); + $rawUrlPatterns = explode("\n", $this->trimmed('blacklist-urls')); + $urlPatterns = array(); - // assert(all values are valid); - - $config = new Config(); - - $config->query('BEGIN'); - - foreach ($settings as $section => $parts) { - foreach ($parts as $setting) { - Config::save($section, $setting, $values[$section][$setting]); - } + foreach ($rawUrlPatterns as $raw) { + $urlPatterns[] = trim($raw); } - $config->query('COMMIT'); + Homepage_blacklist::saveNew($urlPatterns); return; } @@ -191,14 +180,19 @@ class BlacklistAdminPanelForm extends Form $this->out->elementStart('ul', 'form_data'); $this->out->elementStart('li'); + + $nickPatterns = Nickname_blacklist::getPatterns(); + $this->out->textarea('blacklist-nicknames', _m('Nicknames'), - common_config('blacklist', 'nicknames'), + implode("\r\n", $nickPatterns), _('Patterns of nicknames to block, one per line')); $this->out->elementEnd('li'); + $urlPatterns = Homepage_blacklist::getPatterns(); + $this->out->elementStart('li'); $this->out->textarea('blacklist-urls', _m('URLs'), - common_config('blacklist', 'urls'), + implode("\r\n", $urlPatterns), _('Patterns of URLs to block, one per line')); $this->out->elementEnd('li'); -- cgit v1.2.3-54-g00ecf