Retrospam check from Kitten
git-svn-id: http://svn.automattic.com/wordpress/trunk@1620 1a063a9b-81f0-0310-95a4-ce76da25c4cd
This commit is contained in:
parent
718a91e5f0
commit
0388cd27b5
|
@ -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') ?>" />
|
||||
|
|
|
@ -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 »') . '</a></p>';
|
||||
|
||||
}
|
||||
$head = '<div class="wrap"><h2>' . __('Check Comments Results:') . '</h2>';
|
||||
|
||||
$foot .= '<p><a href="options-discussion.php">' . __('« Return to Discussion Options page.') . '</a></p></div>';
|
||||
|
||||
return $head . $body . $foot;
|
||||
} // End function display_edit_form
|
||||
|
||||
}
|
||||
|
||||
?>
|
Loading…
Reference in New Issue