Retrospam check from Kitten

git-svn-id: http://svn.automattic.com/wordpress/trunk@1620 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
saxmatt 2004-09-08 08:17:53 +00:00
parent 718a91e5f0
commit 0388cd27b5
2 changed files with 85 additions and 2 deletions

View File

@ -40,6 +40,17 @@ for ($i=0; $i<count($wpvarstoreset); $i += 1) {
$standalone = 0;
include_once('admin-header.php');
include('options-head.php');
if ($action == 'retrospam') {
if ( $_GET['move'] == 'true' ) {
retrospam_mgr::move_spam( $_GET[ids] );
}
$retrospaminator = new retrospam_mgr();
$result = $retrospaminator->find_spam();
echo $retrospaminator->display_edit_form( $result );
include('./admin-footer.php');
exit;
}
?>
<div class="wrap">
@ -101,10 +112,13 @@ include('options-head.php');
<legend><?php _e('Comment Moderation') ?></legend>
<p><?php printf(__('Hold a comment in the queue if it contains more than %s links. (A common characteristic of comment spam is a large number of hyperlinks.)'), '<input name="comment_max_links" type="text" id="comment_max_links" size="3" value="' . get_settings('comment_max_links'). '" />' ) ?></p>
<p><?php _e('When a comment contains any of these words in its content, name, URI, e-mail, or IP, hold it in the moderation queue: (Separate multiple words with new lines.) <a href="http://wiki.wordpress.org/index.php/SpamWords">Common spam words</a>.') ?></p>
<p><?php _e('When a comment contains any of these words in its content, name, URI, e-mail, or IP, hold it in the moderation queue: (Separate multiple words with new lines.) <a href="http://codex.wordpress.org/Spam_Words">Common spam words</a>.') ?></p>
<p>
<textarea name="moderation_keys" cols="60" rows="4" id="moderation_keys" style="width: 98%; font-size: 12px;" class="code"><?php form_option('moderation_keys'); ?></textarea>
</p>
<p>
<a id="retrospambutton" href="options-discussion.php?action=retrospam" title="Click this link to check old comments for spam that your current filters would catch.">Check past comments against current word list</a>
</p>
</fieldset>
<p class="submit">
<input type="submit" name="Submit" value="<?php _e('Update Options') ?>" />

View File

@ -560,4 +560,73 @@ if (! isset($wp_query)) {
$wp_query = new WP_Query();
}
class retrospam_mgr {
var $spam_words;
var $comments_list;
var $found_comments;
function retrospam_mgr() {
global $wpdb;
$list = explode("\n", get_settings('moderation_keys') );
$list = array_unique( $list );
$this->spam_words = $list;
$this->comment_list = $wpdb->get_results("SELECT comment_ID AS ID, comment_content AS text, comment_approved AS approved, comment_author_url AS url, comment_author_ip AS ip, comment_author_email AS email FROM $wpdb->comments ORDER BY comment_ID ASC");
} // End of class constructor
function move_spam( $id_list ) {
global $wpdb;
$cnt = 0;
$id_list = explode( ',', $id_list );
foreach ( $id_list as $comment ) {
if ( $wpdb->query("update $wpdb->comments set comment_approved = '0' where comment_ID = '$comment'") ) {
$cnt++;
}
}
echo "<div class='updated'><p>$cnt comment";
if ($cnt != 1 ) echo "s";
echo " moved to the moderation queue.</p></div>\n";
} // End function move_spam
function find_spam() {
$in_queue = 0;
foreach( $this->comment_list as $comment ) {
if( $comment->approved == 1 ) {
foreach( $this->spam_words as $word ) {
$fulltext = strtolower($comment->email.' '.$comment->url.' '.$comment->ip.' '.$comment->text);
if( strpos( $fulltext, strtolower(trim($word)) ) != FALSE ) {
$this->found_comments[] = $comment->ID;
break;
}
}
} else {
$in_queue++;
}
}
return array( 'found' => $this->found_comments, 'in_queue' => $in_queue );
} // End function find_spam
function display_edit_form( $counters ) {
$numfound = count($counters[found]);
$numqueue = $counters[in_queue];
$body = '<p>' . sprintf(__('Suspected spam comments: <strong>%s</strong>'), $numfound) . '</p>';
if ( count($counters[found]) > 0 ) {
$id_list = implode( ',', $counters[found] );
$body .= '<p><a href="options-discussion.php?action=retrospam&move=true&ids='.$id_list.'">'. __('Move suspect comments to moderation queue &raquo;') . '</a></p>';
}
$head = '<div class="wrap"><h2>' . __('Check Comments Results:') . '</h2>';
$foot .= '<p><a href="options-discussion.php">' . __('&laquo; Return to Discussion Options page.') . '</a></p></div>';
return $head . $body . $foot;
} // End function display_edit_form
}
?>