for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php
namespace GeminiLabs\SiteReviews\Modules;
use GeminiLabs\SiteReviews\Database\OptionManager;
class Blacklist
{
/**
* @return bool
*/
public function isBlacklisted(array $review)
$target = implode("\n", array_filter([
$review['name'],
$review['content'],
$review['email'],
$review['ip_address'],
$review['title'],
]));
return (bool) apply_filters('site-reviews/blacklist/is-blacklisted',
$this->check($target),
$review
);
}
* @param string $target
protected function check($target)
$blacklist = trim(glsr(OptionManager::class)->get('settings.submissions.blacklist.entries'));
if (empty($blacklist)) {
return false;
$lines = explode("\n", $blacklist);
foreach ((array) $lines as $line) {
$line = trim($line);
if (empty($line) || 256 < strlen($line)) {
continue;
$pattern = sprintf('#%s#i', preg_quote($line, '#'));
if (preg_match($pattern, $target)) {
return true;