From 0f12a10b05c27a725d9b074239c9d80d6878f5c3 Mon Sep 17 00:00:00 2001 From: Kijin Sung Date: Thu, 22 Dec 2022 23:49:28 +0900 Subject: [PATCH] Fix #2051 include document extra vars in spamfilter target --- modules/spamfilter/spamfilter.controller.php | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/modules/spamfilter/spamfilter.controller.php b/modules/spamfilter/spamfilter.controller.php index 4461aeb11..29343e98f 100644 --- a/modules/spamfilter/spamfilter.controller.php +++ b/modules/spamfilter/spamfilter.controller.php @@ -55,16 +55,23 @@ class spamfilterController extends spamfilter $output = $oFilterModel->isDeniedIP(); if(!$output->toBool()) return $output; // Check if there is a ban on the word - $text = ''; - if($is_logged) + $filter_targets = [$obj->title, $obj->content, $obj->tags ?? '']; + if(!$is_logged) { - $text = $obj->title . ' ' . $obj->content . ' ' . $obj->tags; + $filter_targets[] = $obj->nick_name; + $filter_targets[] = $obj->homepage; } - else + foreach ($obj as $key => $val) { - $text = $obj->title . ' ' . $obj->content . ' ' . $obj->nick_name . ' ' . $obj->homepage . ' ' . $obj->tags; + if (preg_match('/^extra_vars\d+$/', $key) && !empty($val)) + { + foreach (is_array($val) ? $val : explode('|@|', $val) as $fragment) + { + $filter_targets[] = $fragment; + } + } } - $output = $oFilterModel->isDeniedWord($text); + $output = $oFilterModel->isDeniedWord(implode("\n", $filter_targets)); if(!$output->toBool()) { return $output;