diff options
author | Evan Prodromou <evan@status.net> | 2010-03-25 13:49:12 -0400 |
---|---|---|
committer | Evan Prodromou <evan@status.net> | 2010-03-25 13:49:12 -0400 |
commit | 6e644f77a43ea7028e0aafb2d83059d0f19db701 (patch) | |
tree | 57f7a05c8b6190c55613d7176ccf2a70d1df1bcd /plugins/Blacklist/BlacklistPlugin.php | |
parent | edee1fc09e304616fbce4ad1d1dae6097655c4e7 (diff) |
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).
Diffstat (limited to 'plugins/Blacklist/BlacklistPlugin.php')
-rw-r--r-- | plugins/Blacklist/BlacklistPlugin.php | 61 |
1 files changed, 51 insertions, 10 deletions
diff --git a/plugins/Blacklist/BlacklistPlugin.php b/plugins/Blacklist/BlacklistPlugin.php index fb8f7306f..a7d0942da 100644 --- a/plugins/Blacklist/BlacklistPlugin.php +++ b/plugins/Blacklist/BlacklistPlugin.php @@ -62,13 +62,56 @@ class BlacklistPlugin extends Plugin { $confNicknames = $this->_configArray('blacklist', 'nicknames'); + $dbNicknames = Nickname_blacklist::getPatterns(); + $this->_nicknamePatterns = array_merge($this->nicknames, - $confNicknames); + $confNicknames, + $dbNicknames); $confURLs = $this->_configArray('blacklist', 'urls'); + $dbURLs = Homepage_blacklist::getPatterns(); + $this->_urlPatterns = array_merge($this->urls, - $confURLs); + $confURLs, + $dbURLs); + } + + /** + * Database schema setup + * + * @return boolean hook value + */ + + function onCheckSchema() + { + $schema = Schema::get(); + + // For storing blacklist patterns for nicknames + + $schema->ensureTable('nickname_blacklist', + array(new ColumnDef('pattern', + 'varchar', + 255, + false, + 'PRI'), + new ColumnDef('created', + 'datetime', + null, + false))); + + $schema->ensureTable('homepage_blacklist', + array(new ColumnDef('pattern', + 'varchar', + 255, + false, + 'PRI'), + new ColumnDef('created', + 'datetime', + null, + false))); + + return true; } /** @@ -280,6 +323,10 @@ class BlacklistPlugin extends Plugin { switch (strtolower($cls)) { + case 'nickname_blacklist': + case 'homepage_blacklist': + include_once INSTALLDIR.'/plugins/Blacklist/'.ucfirst($cls).'.php'; + return false; case 'blacklistadminpanelaction': $base = strtolower(mb_substr($cls, 0, -6)); include_once INSTALLDIR.'/plugins/Blacklist/'.$base.'.php'; @@ -391,20 +438,14 @@ class BlacklistPlugin extends Plugin function onEndDeleteUser($action, $user) { - common_debug("Action args: " . print_r($action->args, true)); - if ($action->boolean('blacklisthomepage')) { $pattern = $action->trimmed('blacklisthomepagepattern'); - $confURLs = $this->_configArray('blacklist', 'urls'); - $confURLs[] = $pattern; - Config::save('blacklist', 'urls', implode("\r\n", $confURLs)); + Homepage_blacklist::ensurePattern($pattern); } if ($action->boolean('blacklistnickname')) { $pattern = $action->trimmed('blacklistnicknamepattern'); - $confNicknames = $this->_configArray('blacklist', 'nicknames'); - $confNicknames[] = $pattern; - Config::save('blacklist', 'nicknames', implode("\r\n", $confNicknames)); + Nickname_blacklist::ensurePattern($pattern); } return true; |