summaryrefslogtreecommitdiff
path: root/plugins/Blacklist/BlacklistPlugin.php
diff options
context:
space:
mode:
authorEvan Prodromou <evan@status.net>2010-03-25 13:49:12 -0400
committerEvan Prodromou <evan@status.net>2010-03-25 13:49:12 -0400
commit6e644f77a43ea7028e0aafb2d83059d0f19db701 (patch)
tree57f7a05c8b6190c55613d7176ccf2a70d1df1bcd /plugins/Blacklist/BlacklistPlugin.php
parentedee1fc09e304616fbce4ad1d1dae6097655c4e7 (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.php61
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;