From 8e8a8810deb98cf7897ef1af37bd740d4e32b741 Mon Sep 17 00:00:00 2001 From: Rajesh Taneja Date: Wed, 14 Dec 2011 11:39:18 +0800 Subject: [PATCH] MDL-29067 Admin: Added spam checking on comments, messages and forum posts --- admin/tool/spamcleaner/index.php | 53 ++++++++++++++++++- .../spamcleaner/lang/en/tool_spamcleaner.php | 3 ++ 2 files changed, 54 insertions(+), 2 deletions(-) diff --git a/admin/tool/spamcleaner/index.php b/admin/tool/spamcleaner/index.php index c2d1272b96d21..443f5cdffee6c 100644 --- a/admin/tool/spamcleaner/index.php +++ b/admin/tool/spamcleaner/index.php @@ -157,21 +157,54 @@ function search_spammers($keywords) { $params['descpat'.$i] = "%$keyword%"; $keywordfull2[] = $DB->sql_like('p.summary', ':sumpat'.$i, false); $params['sumpat'.$i] = "%$keyword%"; + $keywordfull3[] = $DB->sql_like('p.subject', ':subpat'.$i, false); + $params['subpat'.$i] = "%$keyword%"; + $keywordfull4[] = $DB->sql_like('c.content', ':contpat'.$i, false); + $params['contpat'.$i] = "%$keyword%"; + $keywordfull5[] = $DB->sql_like('m.fullmessage', ':msgpat'.$i, false); + $params['msgpat'.$i] = "%$keyword%"; + $keywordfull6[] = $DB->sql_like('fp.message', ':forumpostpat'.$i, false); + $params['forumpostpat'.$i] = "%$keyword%"; + $keywordfull7[] = $DB->sql_like('fp.subject', ':forumpostsubpat'.$i, false); + $params['forumpostsubpat'.$i] = "%$keyword%"; $i++; } $conditions = '( '.implode(' OR ', $keywordfull).' )'; $conditions2 = '( '.implode(' OR ', $keywordfull2).' )'; + $conditions3 = '( '.implode(' OR ', $keywordfull3).' )'; + $conditions4 = '( '.implode(' OR ', $keywordfull4).' )'; + $conditions5 = '( '.implode(' OR ', $keywordfull5).' )'; + $conditions6 = '( '.implode(' OR ', $keywordfull6).' )'; + $conditions7 = '( '.implode(' OR ', $keywordfull7).' )'; $sql = "SELECT * FROM {user} WHERE deleted = 0 AND id <> :userid AND $conditions"; // Exclude oneself $sql2 = "SELECT u.*, p.summary FROM {user} AS u, {post} AS p WHERE $conditions2 AND u.deleted = 0 AND u.id=p.userid AND u.id <> :userid"; + $sql3 = "SELECT u.*, p.subject as postsubject FROM {user} AS u, {post} AS p WHERE $conditions3 AND u.deleted = 0 AND u.id=p.userid AND u.id <> :userid"; + $sql4 = "SELECT u.*, c.content FROM {user} AS u, {comments} AS c WHERE $conditions4 AND u.deleted = 0 AND u.id=c.userid AND u.id <> :userid"; + $sql5 = "SELECT u.*, m.fullmessage FROM {user} AS u, {message} AS m WHERE $conditions5 AND u.deleted = 0 AND u.id=m.useridfrom AND u.id <> :userid"; + $sql6 = "SELECT u.*, fp.message FROM {user} AS u, {forum_posts} AS fp WHERE $conditions6 AND u.deleted = 0 AND u.id=fp.userid AND u.id <> :userid"; + $sql7 = "SELECT u.*, fp.subject FROM {user} AS u, {forum_posts} AS fp WHERE $conditions7 AND u.deleted = 0 AND u.id=fp.userid AND u.id <> :userid"; + $spamusers_desc = $DB->get_recordset_sql($sql, $params); $spamusers_blog = $DB->get_recordset_sql($sql2, $params); + $spamusers_blogsub = $DB->get_recordset_sql($sql3, $params); + $spamusers_comment = $DB->get_recordset_sql($sql4, $params); + $spamusers_message = $DB->get_recordset_sql($sql5, $params); + $spamusers_forumpost = $DB->get_recordset_sql($sql6, $params); + $spamusers_forumpostsub = $DB->get_recordset_sql($sql7, $params); $keywordlist = implode(', ', $keywords); echo $OUTPUT->box(get_string('spamresult', 'tool_spamcleaner').s($keywordlist)).' ...'; - print_user_list(array($spamusers_desc, $spamusers_blog), $keywords); - + print_user_list(array($spamusers_desc, + $spamusers_blog, + $spamusers_blogsub, + $spamusers_comment, + $spamusers_message, + $spamusers_forumpost, + $spamusers_forumpostsub + ), + $keywords); } @@ -212,7 +245,23 @@ function filter_user($user, $keywords, $count) { if (isset($user->summary)) { $user->description = '

'.get_string('spamfromblog', 'tool_spamcleaner').'

'.$user->summary; unset($user->summary); + } else if (isset($user->postsubject)) { + $user->description = '

'.get_string('spamfromblog', 'tool_spamcleaner').'

'.$user->postsubject; + unset($user->postsubject); + } else if (isset($user->content)) { + $user->description = '

'.get_string('spamfromcomments', 'tool_spamcleaner').'

'.$user->content; + unset($user->content); + } else if (isset($user->fullmessage)) { + $user->description = '

'.get_string('spamfrommessages', 'tool_spamcleaner').'

'.$user->fullmessage; + unset($user->fullmessage); + } else if (isset($user->message)) { + $user->description = '

'.get_string('spamfromforumpost', 'tool_spamcleaner').'

'.$user->message; + unset($user->message); + } else if (isset($user->subject)) { + $user->description = '

'.get_string('spamfromforumpost', 'tool_spamcleaner').'

'.$user->subject; + unset($user->subject); } + if (preg_match('#wwwroot.')#', $user->description, $matches) && $image_search) { $result = false; diff --git a/admin/tool/spamcleaner/lang/en/tool_spamcleaner.php b/admin/tool/spamcleaner/lang/en/tool_spamcleaner.php index 428f1b0d05d67..5a86357080360 100644 --- a/admin/tool/spamcleaner/lang/en/tool_spamcleaner.php +++ b/admin/tool/spamcleaner/lang/en/tool_spamcleaner.php @@ -34,6 +34,9 @@ $string['spamdesc'] = 'Description'; $string['spameg'] = 'eg: casino, porn, xxx'; $string['spamfromblog'] = 'From blog post:'; +$string['spamfromcomments'] = 'From comments:'; +$string['spamfrommessages'] = 'From messages:'; +$string['spamfromforumpost'] = 'From forum post:'; $string['spaminvalidresult'] = 'Unknown but invalid result'; $string['spamoperation'] = 'Operation'; $string['spamresult'] = 'Results of searching user profiles containing:';