X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=sidebyside;f=plugins%2FBlacklist%2FBlacklistPlugin.php;h=63bffe2c6fb8babb1f62531f33b58519d7672a4a;hb=185f18024a208e0d981721e492a4ca54263e2520;hp=fb8f7306f51e4a4747e670294fbd2a136ebcd975;hpb=88ae7f53bb4470a899678d231cecb8cb963b2075;p=quix0rs-gnu-social.git diff --git a/plugins/Blacklist/BlacklistPlugin.php b/plugins/Blacklist/BlacklistPlugin.php index fb8f7306f5..63bffe2c6f 100644 --- a/plugins/Blacklist/BlacklistPlugin.php +++ b/plugins/Blacklist/BlacklistPlugin.php @@ -49,26 +49,63 @@ class BlacklistPlugin extends Plugin public $urls = array(); public $canAdmin = true; - private $_nicknamePatterns = array(); - private $_urlPatterns = array(); + function _getNicknamePatterns() + { + $confNicknames = $this->_configArray('blacklist', 'nicknames'); + + $dbNicknames = Nickname_blacklist::getPatterns(); + + return array_merge($this->nicknames, + $confNicknames, + $dbNicknames); + } + + function _getUrlPatterns() + { + $confURLs = $this->_configArray('blacklist', 'urls'); + + $dbURLs = Homepage_blacklist::getPatterns(); + + return array_merge($this->urls, + $confURLs, + $dbURLs); + } /** - * Initialize the plugin + * Database schema setup * - * @return void + * @return boolean hook value */ - function initialize() + function onCheckSchema() { - $confNicknames = $this->_configArray('blacklist', 'nicknames'); - - $this->_nicknamePatterns = array_merge($this->nicknames, - $confNicknames); - - $confURLs = $this->_configArray('blacklist', 'urls'); + $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))); - $this->_urlPatterns = array_merge($this->urls, - $confURLs); + return true; } /** @@ -222,9 +259,10 @@ class BlacklistPlugin extends Plugin private function _checkUrl($url) { - foreach ($this->_urlPatterns as $pattern) { - common_debug("Checking $url against $pattern"); - if (preg_match("/$pattern/", $url)) { + $patterns = $this->_getUrlPatterns(); + + foreach ($patterns as $pattern) { + if ($pattern != '' && preg_match("/$pattern/", $url)) { return false; } } @@ -244,9 +282,10 @@ class BlacklistPlugin extends Plugin private function _checkNickname($nickname) { - foreach ($this->_nicknamePatterns as $pattern) { - common_debug("Checking $nickname against $pattern"); - if (preg_match("/$pattern/", $nickname)) { + $patterns = $this->_getNicknamePatterns(); + + foreach ($patterns as $pattern) { + if ($pattern != '' && preg_match("/$pattern/", $nickname)) { return false; } } @@ -280,6 +319,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 +434,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;