/[drupal]/contributions/modules/trackback/trackback.spam.inc
ViewVC logotype

Contents of /contributions/modules/trackback/trackback.spam.inc

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.1 - (show annotations) (download) (as text)
Thu Dec 6 17:53:49 2007 UTC (23 months, 3 weeks ago) by zorac
Branch: MAIN
CVS Tags: DRUPAL-6--1-0, DRUPAL-6--1-1, DRUPAL-6--1-2, HEAD
Branch point for: DRUPAL-6--1, DRUPAL-6--2
File MIME type: text/x-php
Dividing the module file.
1 <?php
2 // $Id$
3
4 /**
5 * Implementation of hook_trackback()
6 */
7 function trackback_trackback(&$trackback, $op) {
8 switch ($op) {
9 case 'receive':
10 if (variable_get('trackback_spam_filter', 1)) {
11 // drop silently if this is from a known spammer IP address
12 module_invoke('spam', 'ip_filter', 'trackback', 0);
13 }
14 break;
15
16 case 'insert':
17 if (variable_get('trackback_spam_filter', 1)) {
18 // invoke spam.module's spam filter
19 module_invoke('spam', 'content_filter', 'trackback', $trackback->trid, $trackback->subject .' '. $trackback->url, $trackback->excerpt);
20 }
21 break;
22
23 case 'delete':
24 db_query("DELETE FROM {spam_tracker} WHERE source='trackback' AND id=%d", $trackback->trid);
25 spam_log(SPAM_LOG, t('spam_delete_trackback: deleted trackback "%subject".', array('%subject' => $trackback->subject)), 'trackback', $trackback->trid);
26 break;
27 }
28 }
29
30 function trackback_spam($op, $a2, $a3, $a4) {
31 $return = array();
32 switch ($op) {
33 case 'filter_settings':
34 $return['group']['trackback_spam_filter'] = array(
35 '#type' => 'checkbox',
36 '#title' => t('Filter trackbacks'),
37 '#default_value' => variable_get('trackback_spam_filter', 1),
38 '#description' => t('Enable this option to filter new trackbacks as they are posted, determining whether or not they are spam.'));
39 break;
40
41 case 'page':
42 if (arg(1) == 'trackback') {
43 $trackback = trackback_load($a2);
44 $return = array(
45 'old' => spam_load('trackback', $a2),
46 'header' => $trackback->subject .' '. $trackback->url,
47 'body' => $trackback->excerpt,
48 'goto' => _trackback_path($trackback),
49 'goto_fragment' => 'trackbacks'
50 );
51 }
52 break;
53 }
54 return $return;
55 }
56
57 function spam_publish_trackback($trid) {
58 if ($trackback = _trackback_operation('publish', $trid)) {
59 spam_log(SPAM_LOG, t('spam_publish_trackback: published trackback "%subject".', array('%subject' => $trackback->subject)), 'trackback', $trid);
60 }
61 }
62
63 function spam_unpublish_trackback($trid) {
64 if ($trackback = _trackback_operation('unpublish', $trid)) {
65 spam_log(SPAM_LOG, t('spam_unpublish_trackback: unpublished trackback "%subject".', array('%subject' => $trackback->subject)), 'trackback', $trid);
66 }
67 }
68
69 function spam_delete_trackback($trid) {
70 if ($trackback = _trackback_operation('delete', $trid)) {
71 spam_log(SPAM_LOG, t('spam_delete_trackback: deleted trackback "%subject".', array('%subject' => $trackback->subject)), 'trackback', $trid);
72 }
73 }
74
75 function spam_spam_trackback($trid) {
76 _trackback_operation('_trackback_as_spam', $trid);
77 }
78
79 function spam_notspam_trackback($trid) {
80 _trackback_operation('_trackback_as_notspam', $trid);
81 }
82
83 function _trackback_as_spam($trackback) {
84 _trackback_spam_modify($trackback, 1);
85 watchdog('spam', 'Spam: marked trackback %subject as spam.', array('%subject' => $trackback->subject));
86 spam_log(SPAM_LOG, t('trackback manually marked as spam'), 'trackback', $trackback->trid);
87 }
88
89 function _trackback_as_notspam($trackback) {
90 _trackback_spam_modify($trackback, 0);
91 watchdog('spam', 'Spam: marked trackback %subject as not spam.', array('%subject' => $trackback->subject));
92 spam_log(SPAM_LOG, t('trackback manually marked as not spam'), 'trackback', $trackback->trid);
93 }
94
95 function _trackback_spam_modify($tb, $spam) {
96 $tokens = spam_tokenize($tb->subject .' '. $tb->url, 'header*');
97 $tokens = array_merge($tokens, spam_tokenize($tb->excerpt));
98 spam_tokens_unsave($tokens, $spam);
99 spam_tokens_save($tokens, $spam);
100 $prob = $spam ? 99 : 1;
101 db_query("UPDATE {spam_tracker} SET probability=%d, timestamp=%d WHERE source='trackback' AND id=%d", $prob, time(), $tb->trid);
102 spam_default_actions('trackback', $tb->trid, $tb->subject, $tb->excerpt, $prob, NULL, FALSE);
103 }
104
105 function _trackback_spam_link($trackback) {
106 $output = array();
107 if (!variable_get('trackback_spam_filter', 1)) {
108 return $output;
109 }
110
111 $p = db_fetch_object(db_query("SELECT probability FROM {spam_tracker} WHERE id = %d AND source = 'trackback'", $trackback->trid));
112 $spam = array(
113 'href' => 'spam/trackback/'. $trackback->trid .'/spam',
114 'title' => t('mark as spam')
115 );
116 $notspam = array(
117 'href' => 'spam/trackback/'. $trackback->trid .'/notspam',
118 'title' => t('mark as not spam')
119 );
120 $access = user_access('access spam');
121 $admin = user_access('administer spam');
122 if (variable_get('spam_display_probability', 0)) {
123 if (variable_get('spam_log_level', SPAM_LOG)) {
124 $prob = l($p->probability, 'admin/content/spam/logs/trackback/'. $trackback->trid);
125 }
126 else {
127 $prob = $p->probability;
128 }
129 $prob = ' ('. $prob .')';
130 }
131
132 if (!$p->probability && $admin) {
133 $output['spam-spam'] = $spam;
134 $output['spam-notspam'] = $notspam;
135 }
136 else if ($p->probability < variable_get('spam_threshold', 80)) {
137 if ($access) {
138 $output['spam-probability'] = array('title' => t('not spam') . $prob, 'html' => TRUE);
139 }
140 if ($admin) {
141 $output['spam-spam'] = $spam;
142 }
143 }
144 else {
145 if ($access) {
146 $output['spam-probability'] = array('title' => t('spam') . $prob, 'html' => TRUE);
147 }
148 if ($admin) {
149 $output['spam-notspam'] = $notspam;
150 }
151 }
152 return $output;
153 }

  ViewVC Help
Powered by ViewVC 1.1.2