--- trackback.module.orig 2005-02-02 04:00:50.000000000 -0500 +++ trackback.module 2005-02-21 18:43:24.848443978 -0500 @@ -30,6 +30,15 @@ function trackback_receive(&$node) { db_query('INSERT INTO {trackback_received} (nid, cid, url) VALUES (%d, %d, \'%s\')', $node->nid, $cid, $trackback->url); _comment_update_node_statistics($node->nid); $error = 0; + + if (function_exists('spam_check') && variable_get('trackback_spam_filter', 1)) { + // cid, subject and comment are used by spam_check() + $comment->cid = $cid; + $comment->subject = $subject; + // put everything we want to check for spam in the comment body + $comment->comment = $trackback->url .' '. $trackback->name .' '. $trackback->excerpt; + spam_check($comment, 'comment', 'subject', 'spam_comment_actions', 'insert'); + } } else { $error = 1; @@ -158,7 +167,7 @@ function trackback_node_page() { $output .= theme('box', t('Trackback URL for this post:'), url('trackback/'. $node->nid, NULL, NULL, TRUE)); $output .= theme('box', '', t('Listed below are links to weblogs that reference this post:')); - $result = db_query('SELECT c.cid AS cid, c.nid AS nid, c.timestamp AS timestamp, c.format AS format, c.comment AS comment, c.subject AS subject, c.name AS name, c.homepage AS homepage FROM {comments} c INNER JOIN {trackback_received} tr ON c.cid = tr.cid WHERE tr.nid = %d ORDER BY timestamp DESC', $node->nid); + $result = db_query('SELECT c.cid AS cid, c.nid AS nid, c.timestamp AS timestamp, c.format AS format, c.comment AS comment, c.subject AS subject, c.name AS name, c.homepage AS homepage FROM {comments} c INNER JOIN {trackback_received} tr ON c.cid = tr.cid WHERE tr.nid = %d AND c.status = 0 ORDER BY timestamp DESC', $node->nid); while ($comment = db_fetch_object($result)) { $comment->name = $comment->registered_name ? $comment->registered_name : $comment->name; @@ -260,6 +269,14 @@ function _trackback_url_parsable_content return (substr_count($content_type, 'text/html') || substr_count($content_type, 'application/xhtml+xml') || substr_count($content_type, 'application/xml') || substr_count($content_type, 'text/xml')); } - +function trackback_spam($op, $a2, $a3, $a4) { + $return = array(); + switch ($op) { + case 'filter_settings': + $return['group'] = form_checkbox(t('Filter trackbacks'), 'trackback_spam_filter', 1, variable_get('trackback_spam_filter', 1), t('If checked, the spam module will check all new trackbacks that are posted to this site and attempt to determine whether or not they are spam. Trackbacks are actually comments, so any limits defined below for comments will also apply to trackbacks.')); + break; + } + return $return; +} ?>