Antispam Bee - Version 2.3

Version Description

  • Xmas Edition
Download this release

Release Info

Developer sergej.mueller
Plugin Icon 128x128 Antispam Bee
Version 2.3
Comparing to
See all releases

Version 2.3

antispam_bee.original.php ADDED
@@ -0,0 +1,1997 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ Plugin Name: Antispam Bee
4
+ Text Domain: antispam_bee
5
+ Domain Path: /lang
6
+ Description: Easy and extremely productive spam-fighting plugin with many sophisticated solutions. Includes protection again trackback spam.
7
+ Author: Sergej M&uuml;ller
8
+ Author URI: http://wpseo.de
9
+ Plugin URI: http://antispambee.com
10
+ Version: 2.3
11
+ */
12
+
13
+
14
+ /* Sicherheitsabfrage */
15
+ if ( !class_exists('WP') ) {
16
+ header('Status: 403 Forbidden');
17
+ header('HTTP/1.1 403 Forbidden');
18
+ exit();
19
+ }
20
+
21
+
22
+ /**
23
+ * Antispam_Bee
24
+ *
25
+ * @since 0.1
26
+ */
27
+
28
+ class Antispam_Bee {
29
+
30
+
31
+ /* Save me! */
32
+ var $md5_sign;
33
+ var $base_name;
34
+ var $spam_reason;
35
+
36
+
37
+ /**
38
+ * Konstruktor der Klasse
39
+ *
40
+ * @since 0.1
41
+ * @change 1.9
42
+ */
43
+
44
+ function Antispam_Bee() {
45
+ /* AJAX & Co. */
46
+ if ( (defined('DOING_AJAX') && DOING_AJAX) or (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) ) {
47
+ return;
48
+ }
49
+
50
+ /* Initialisierung */
51
+ $this->base_name = plugin_basename(__FILE__);
52
+ $this->md5_sign = 'comment-' .substr(md5(get_bloginfo('url')), 0, 8);
53
+
54
+ /* Cronjob */
55
+ if ( defined('DOING_CRON') ) {
56
+ add_action(
57
+ 'antispam_bee_daily_cronjob',
58
+ array(
59
+ $this,
60
+ 'exe_daily_cronjob'
61
+ )
62
+ );
63
+
64
+ /* Admin */
65
+ } elseif ( is_admin() ) {
66
+ /* Menü */
67
+ add_action(
68
+ 'admin_menu',
69
+ array(
70
+ $this,
71
+ 'init_admin_menu'
72
+ )
73
+ );
74
+
75
+ /* GUI */
76
+ if ( $this->is_current_page('home') ) {
77
+ add_action(
78
+ 'init',
79
+ array(
80
+ $this,
81
+ 'load_plugin_lang'
82
+ )
83
+ );
84
+ add_action(
85
+ 'admin_init',
86
+ array(
87
+ $this,
88
+ 'add_plugin_sources'
89
+ )
90
+ );
91
+
92
+ /* Dashboard */
93
+ } else if ( $this->is_current_page('index') ) {
94
+ add_action(
95
+ 'init',
96
+ array(
97
+ $this,
98
+ 'load_plugin_lang'
99
+ )
100
+ );
101
+
102
+ if ( $this->get_option('dashboard_count') ) {
103
+ if ($this->is_min_wp('3.0')) {
104
+ add_action(
105
+ 'right_now_discussion_table_end',
106
+ array(
107
+ $this,
108
+ 'add_discussion_table_end'
109
+ )
110
+ );
111
+ } else {
112
+ add_action(
113
+ 'right_now_table_end',
114
+ array(
115
+ $this,
116
+ 'add_table_end'
117
+ )
118
+ );
119
+ }
120
+ }
121
+
122
+ if ( $this->get_option('dashboard_chart') ) {
123
+ add_action(
124
+ 'wp_dashboard_setup',
125
+ array(
126
+ $this,
127
+ 'init_dashboard_chart'
128
+ )
129
+ );
130
+ }
131
+
132
+ /* Plugins */
133
+ } else if ( $this->is_current_page('plugins') ) {
134
+ add_action(
135
+ 'init',
136
+ array(
137
+ $this,
138
+ 'load_plugin_lang'
139
+ )
140
+ );
141
+ add_action(
142
+ 'activate_' .$this->base_name,
143
+ array(
144
+ $this,
145
+ 'init_plugin_options'
146
+ )
147
+ );
148
+ add_action(
149
+ 'deactivate_' .$this->base_name,
150
+ array(
151
+ $this,
152
+ 'clear_scheduled_hook'
153
+ )
154
+ );
155
+ add_action(
156
+ 'admin_notices',
157
+ array(
158
+ $this,
159
+ 'show_version_notice'
160
+ )
161
+ );
162
+
163
+
164
+ add_filter(
165
+ 'plugin_row_meta',
166
+ array(
167
+ $this,
168
+ 'init_row_meta'
169
+ ),
170
+ 10,
171
+ 2
172
+ );
173
+ }
174
+
175
+ /* Frontend */
176
+ } else {
177
+ add_action(
178
+ 'template_redirect',
179
+ array(
180
+ $this,
181
+ 'replace_comment_field'
182
+ )
183
+ );
184
+ add_action(
185
+ 'init',
186
+ array(
187
+ $this,
188
+ 'precheck_comment_request'
189
+ )
190
+ );
191
+ add_action(
192
+ 'preprocess_comment',
193
+ array(
194
+ $this,
195
+ 'verify_comment_request'
196
+ ),
197
+ 1
198
+ );
199
+ add_action(
200
+ 'antispam_bee_count',
201
+ array(
202
+ $this,
203
+ 'the_spam_count'
204
+ )
205
+ );
206
+
207
+ add_filter(
208
+ 'comment_notification_text',
209
+ array(
210
+ $this,
211
+ 'replace_whois_link'
212
+ )
213
+ );
214
+ add_filter(
215
+ 'comment_moderation_text',
216
+ array(
217
+ $this,
218
+ 'replace_whois_link'
219
+ )
220
+ );
221
+ }
222
+ }
223
+
224
+
225
+ /**
226
+ * Einbindung der Plugin-Sprache
227
+ *
228
+ * @since 0.1
229
+ * @change 0.1
230
+ */
231
+
232
+ function load_plugin_lang() {
233
+ load_plugin_textdomain(
234
+ 'antispam_bee',
235
+ false,
236
+ 'antispam-bee/lang'
237
+ );
238
+ }
239
+
240
+
241
+ /**
242
+ * Links in der Plugins-Verwaltung
243
+ *
244
+ * @since 0.1
245
+ * @change 2.1
246
+ *
247
+ * @param array $links Array mit Links
248
+ * @param string $file Name des Plugins
249
+ * @return array $links Array mit erweitertem Link
250
+ */
251
+
252
+ function init_row_meta($links, $file) {
253
+ if ( $this->base_name == $file ) {
254
+ return array_merge(
255
+ $links,
256
+ array(
257
+ sprintf(
258
+ '<a href="https://flattr.com/thing/54115/Antispam-Bee-Das-WordPress-Plugin-fur-den-Schutz-gegen-Spam" target="_blank">%s</a>',
259
+ esc_html__('Flattr')
260
+ ),
261
+ sprintf(
262
+ '<a href="options-general.php?page=%s">%s</a>',
263
+ $this->base_name,
264
+ esc_html__('Settings')
265
+ )
266
+ )
267
+ );
268
+ }
269
+
270
+ return $links;
271
+ }
272
+
273
+
274
+ /**
275
+ * Aktion bei Aktivierung des Plugins
276
+ *
277
+ * @since 0.1
278
+ * @change 2.0
279
+ */
280
+
281
+ function init_plugin_options() {
282
+ /* Option anlegen */
283
+ add_option(
284
+ 'antispam_bee',
285
+ array(),
286
+ '',
287
+ 'no'
288
+ );
289
+
290
+ /* Cron aktivieren */
291
+ if ($this->get_option('cronjob_enable')) {
292
+ $this->init_scheduled_hook();
293
+ }
294
+ }
295
+
296
+
297
+ /**
298
+ * Rückgabe eines Optionsfeldes
299
+ *
300
+ * @since 0.1
301
+ * @change 0.1
302
+ *
303
+ * @param string $field Name des Feldes
304
+ * @return mixed Wert des Feldes
305
+ */
306
+
307
+ function get_option($field) {
308
+ if ( !$options = wp_cache_get('antispam_bee') ) {
309
+ $options = get_option('antispam_bee');
310
+
311
+ wp_cache_set(
312
+ 'antispam_bee',
313
+ $options
314
+ );
315
+ }
316
+
317
+ return @$options[$field];
318
+ }
319
+
320
+
321
+ /**
322
+ * Aktualisiert ein Optionsfeld
323
+ *
324
+ * @since 0.1
325
+ * @change 1.6
326
+ *
327
+ * @param string $field Name des Feldes
328
+ * @param mixed Wert des Feldes
329
+ */
330
+
331
+ function update_option($field, $value) {
332
+ $this->update_options(
333
+ array(
334
+ $field => $value
335
+ )
336
+ );
337
+ }
338
+
339
+
340
+ /**
341
+ * Aktualisiert mehrere Optionsfelder
342
+ *
343
+ * @since 0.1
344
+ * @change 1.6
345
+ *
346
+ * @param array $data Array mit Feldern
347
+ */
348
+
349
+ function update_options($data) {
350
+ /* Option zuweisen */
351
+ $options = array_merge(
352
+ (array)get_option('antispam_bee'),
353
+ $data
354
+ );
355
+
356
+ /* DB updaten */
357
+ update_option(
358
+ 'antispam_bee',
359
+ $options
360
+ );
361
+
362
+ /* Cache updaten */
363
+ wp_cache_set(
364
+ 'antispam_bee',
365
+ $options
366
+ );
367
+ }
368
+
369
+
370
+ /**
371
+ * Initialisierung des Cronjobs
372
+ *
373
+ * @since 0.1
374
+ * @change 1.6
375
+ */
376
+
377
+ function init_scheduled_hook() {
378
+ if ( !wp_next_scheduled('antispam_bee_daily_cronjob') ) {
379
+ wp_schedule_event(
380
+ time(),
381
+ 'daily',
382
+ 'antispam_bee_daily_cronjob'
383
+ );
384
+ }
385
+ }
386
+
387
+
388
+ /**
389
+ * Beendigung des Cronjobs
390
+ *
391
+ * @since 0.1
392
+ * @change 1.6
393
+ */
394
+
395
+ function clear_scheduled_hook() {
396
+ if ( wp_next_scheduled('antispam_bee_daily_cronjob') ) {
397
+ wp_clear_scheduled_hook('antispam_bee_daily_cronjob');
398
+ }
399
+ }
400
+
401
+
402
+ /**
403
+ * Ausführung des Cronjobs
404
+ *
405
+ * @since 0.1
406
+ * @change 1.6
407
+ */
408
+
409
+ function exe_daily_cronjob() {
410
+ /* Kein Cronjob? */
411
+ if ( !$this->get_option('cronjob_enable') ) {
412
+ return;
413
+ }
414
+
415
+ /* Timestamp updaten */
416
+ $this->update_option(
417
+ 'cronjob_timestamp',
418
+ time()
419
+ );
420
+
421
+ /* Spam löschen */
422
+ $this->delete_spam_comments();
423
+ }
424
+
425
+
426
+ /**
427
+ * Löschung alter Spamkommentare
428
+ *
429
+ * @since 0.1
430
+ * @change 2.0
431
+ */
432
+
433
+ function delete_spam_comments() {
434
+ /* Anzahl der Tage */
435
+ $days = (int)$this->get_option('cronjob_interval');
436
+
437
+ /* Kein Wert? */
438
+ if ( empty($days) ) {
439
+ return false;
440
+ }
441
+
442
+ /* Global */
443
+ global $wpdb;
444
+
445
+ /* Kommentare löschen */
446
+ $wpdb->query(
447
+ $wpdb->prepare(
448
+ "DELETE FROM `$wpdb->comments` WHERE `comment_approved` = 'spam' AND SUBDATE(NOW(), %d) > comment_date_gmt",
449
+ $days
450
+ )
451
+ );
452
+
453
+ /* DB optimieren */
454
+ $wpdb->query("OPTIMIZE TABLE `$wpdb->comments`");
455
+ }
456
+
457
+
458
+ /**
459
+ * Initialisierung der GUI
460
+ *
461
+ * @since 0.1
462
+ * @change 0.1
463
+ */
464
+
465
+ function init_admin_menu() {
466
+ /* Menü anlegen */
467
+ $page = add_options_page(
468
+ 'Antispam Bee',
469
+ '<img src="' .plugins_url('antispam-bee/img/icon.png'). '" id="ab_icon" alt="Antispam Bee" />Antispam Bee',
470
+ 'manage_options',
471
+ __FILE__,
472
+ array(
473
+ $this,
474
+ 'show_admin_menu'
475
+ )
476
+ );
477
+
478
+ /* JS einbinden */
479
+ add_action(
480
+ 'admin_print_scripts-' . $page,
481
+ array(
482
+ $this,
483
+ 'add_enqueue_script'
484
+ )
485
+ );
486
+
487
+ /* CSS einbinden */
488
+ add_action(
489
+ 'admin_print_styles-' . $page,
490
+ array(
491
+ $this,
492
+ 'add_enqueue_style'
493
+ )
494
+ );
495
+ }
496
+
497
+
498
+ /**
499
+ * Registrierung von Plugin-spezifische Dateien
500
+ *
501
+ * @since 1.6
502
+ * @change 1.6
503
+ */
504
+
505
+ function add_plugin_sources() {
506
+ /* Infos auslesen */
507
+ $data = get_plugin_data(__FILE__);
508
+
509
+ /* JS einbinden */
510
+ wp_register_script(
511
+ 'ab_script',
512
+ plugins_url('antispam-bee/js/script.js'),
513
+ array('jquery'),
514
+ $data['Version']
515
+ );
516
+
517
+ /* CSS einbinden */
518
+ wp_register_style(
519
+ 'ab_style',
520
+ plugins_url('antispam-bee/css/style.css'),
521
+ array(),
522
+ $data['Version']
523
+ );
524
+ }
525
+
526
+
527
+ /**
528
+ * Initialisierung von JavaScript
529
+ *
530
+ * @since 1.6
531
+ * @change 1.6
532
+ */
533
+
534
+ function add_enqueue_script() {
535
+ wp_enqueue_script('ab_script');
536
+ }
537
+
538
+
539
+ /**
540
+ * Initialisierung von Stylesheets
541
+ *
542
+ * @since 1.6
543
+ * @change 1.6
544
+ */
545
+
546
+ function add_enqueue_style() {
547
+ wp_enqueue_style('ab_style');
548
+ }
549
+
550
+
551
+ /**
552
+ * Prüfung der WordPress-Version
553
+ *
554
+ * @since 0.1
555
+ * @change 0.1
556
+ *
557
+ * @param integer $version Gesuchte WP-Version
558
+ * @return boolean TRUE, wenn mindestens gesuchte
559
+ */
560
+
561
+ function is_min_wp($version) {
562
+ return version_compare(
563
+ $GLOBALS['wp_version'],
564
+ $version. 'alpha',
565
+ '>='
566
+ );
567
+ }
568
+
569
+
570
+ /**
571
+ * Prüfung der PHP-Version
572
+ *
573
+ * @since 1.9
574
+ * @change 1.9
575
+ *
576
+ * @param integer $version Gesuchte PHP-Version
577
+ * @return boolean TRUE, wenn mindestens gesuchte
578
+ */
579
+
580
+ function is_min_php($version) {
581
+ return version_compare(
582
+ phpversion(),
583
+ $version,
584
+ '>='
585
+ );
586
+ }
587
+
588
+
589
+ /**
590
+ * Prüfung auf das wpTouch Plugin
591
+ *
592
+ * @since 0.1
593
+ * @change 2.0
594
+ *
595
+ * @return boolean TRUE, wenn Plugin aktiv und aufgerufen
596
+ */
597
+
598
+ function is_mobile() {
599
+ return strpos(TEMPLATEPATH, 'wptouch');
600
+ }
601
+
602
+
603
+ /**
604
+ * Prüfung der Admin-Seite
605
+ *
606
+ * @since 0.1
607
+ * @change 2.0
608
+ *
609
+ * @param integer $page Gesuchte Seite
610
+ * @return boolean TRUE, wenn die aktuelle auch die gesuchte Seite ist
611
+ */
612
+
613
+ function is_current_page($page) {
614
+ switch($page) {
615
+ case 'index':
616
+ return ( empty($GLOBALS['pagenow']) or ( !empty($GLOBALS['pagenow']) && $GLOBALS['pagenow'] == 'index.php' ) );
617
+
618
+ case 'home':
619
+ return ( !empty($_REQUEST['page']) && $_REQUEST['page'] == $this->base_name );
620
+
621
+ case 'plugins':
622
+ return ( !empty($GLOBALS['pagenow']) && $GLOBALS['pagenow'] == 'plugins.php' );
623
+
624
+ default:
625
+ return false;
626
+ }
627
+ }
628
+
629
+
630
+ /**
631
+ * Anzeige des Spam-Counters auf dem Dashboard (bis WP 3.0)
632
+ *
633
+ * @since 0.1
634
+ * @change 1.6
635
+ */
636
+
637
+ function add_table_end() {
638
+ echo sprintf(
639
+ '<tr>
640
+ <td class="first b b-tags"></td>
641
+ <td class="t tags"></td>
642
+ <td class="b b-spam" style="font-size:18px">%s</td>
643
+ <td class="last t">%s</td>
644
+ </tr>',
645
+ esc_html($this->get_spam_count()),
646
+ esc_html__('Blocked', 'antispam_bee')
647
+ );
648
+ }
649
+
650
+
651
+ /**
652
+ * Anzeige des Spam-Counters auf dem Dashboard (ab WP 3.0)
653
+ *
654
+ * @since 0.1
655
+ * @change 1.6
656
+ */
657
+
658
+ function add_discussion_table_end() {
659
+ echo sprintf(
660
+ '<tr>
661
+ <td class="b b-spam" style="font-size:18px">%s</td>
662
+ <td class="last t">%s</td>
663
+ </tr>',
664
+ esc_html($this->get_spam_count()),
665
+ esc_html__('Blocked', 'antispam_bee')
666
+ );
667
+ }
668
+
669
+
670
+ /**
671
+ * Initialisierung des Dashboard-Chart
672
+ *
673
+ * @since 1.9
674
+ * @change 2.0
675
+ */
676
+
677
+ function init_dashboard_chart() {
678
+ /* Keine Rechte? */
679
+ if ( !current_user_can('administrator') or !$this->is_min_php('5.0.2') ) {
680
+ return false;
681
+ }
682
+
683
+ /* Widget hinzufügen */
684
+ wp_add_dashboard_widget(
685
+ 'ab_spam_chart',
686
+ 'Antispam Bee',
687
+ array(
688
+ $this,
689
+ 'show_spam_chart'
690
+ )
691
+ );
692
+
693
+ /* JS laden */
694
+ add_action(
695
+ 'wp_print_scripts',
696
+ array(
697
+ $this,
698
+ 'add_dashboard_js'
699
+ )
700
+ );
701
+
702
+ /* CSS laden */
703
+ add_action(
704
+ 'admin_head',
705
+ array(
706
+ $this,
707
+ 'add_dashboard_css'
708
+ )
709
+ );
710
+ }
711
+
712
+
713
+ /**
714
+ * Ausgabe von Dashboard-CSS
715
+ *
716
+ * @since 1.9
717
+ * @change 2.2
718
+ */
719
+
720
+ function add_dashboard_css() {
721
+ /* Infos auslesen */
722
+ $data = get_plugin_data(__FILE__);
723
+
724
+ /* CSS registrieren */
725
+ wp_register_style(
726
+ 'antispambee',
727
+ plugins_url('antispam-bee/css/dashboard.css'),
728
+ array(),
729
+ $data['Version']
730
+ );
731
+
732
+ /* CSS ausgeben */
733
+ wp_print_styles('antispambee');
734
+ }
735
+
736
+
737
+ /**
738
+ * Ausgabe von Dashboard-JS
739
+ *
740
+ * @since 1.9
741
+ * @change 2.2
742
+ */
743
+
744
+ function add_dashboard_js() {
745
+ /* Init */
746
+ $items = (array)$this->get_option('daily_stats');
747
+
748
+ /* Leer? */
749
+ if ( empty($items) or count($items) == 1 ) {
750
+ return;
751
+ }
752
+
753
+ /* Sortieren */
754
+ krsort($items, SORT_NUMERIC);
755
+
756
+ /* Init */
757
+ $output = array(
758
+ 'created' => array(),
759
+ 'count' => array()
760
+ );
761
+
762
+ /* Init */
763
+ $i = 0;
764
+
765
+ /* Zeilen loopen */
766
+ foreach($items as $timestamp => $count) {
767
+ array_push(
768
+ $output['created'],
769
+ ( $timestamp == strtotime('today', current_time('timestamp')) ? __('Today', 'antispam_bee') : date('d.m', $timestamp) )
770
+ );
771
+ array_push(
772
+ $output['count'],
773
+ (int)$count
774
+ );
775
+ }
776
+
777
+ /* Zusammenfassen */
778
+ $stats = array(
779
+ 'created' => implode(',', $output['created']),
780
+ 'count' => implode(',', $output['count'])
781
+ );
782
+
783
+ /* Infos auslesen */
784
+ $data = get_plugin_data(__FILE__);
785
+
786
+ /* JS einbinden */
787
+ wp_register_script(
788
+ 'ab_chart',
789
+ plugins_url('antispam-bee/js/dashboard.js'),
790
+ array('jquery'),
791
+ $data['Version']
792
+ );
793
+ wp_register_script(
794
+ 'google_jsapi',
795
+ 'http://www.google.com/jsapi',
796
+ false
797
+ );
798
+
799
+ /* Einbinden */
800
+ wp_enqueue_script('google_jsapi');
801
+ wp_enqueue_script('ab_chart');
802
+
803
+ /* Übergeben */
804
+ wp_localize_script(
805
+ 'ab_chart',
806
+ 'antispambee',
807
+ $stats
808
+ );
809
+ }
810
+
811
+
812
+ /**
813
+ * Ausgabe des Dashboard-Chart
814
+ *
815
+ * @since 1.9
816
+ * @change 2.0
817
+ */
818
+
819
+ function show_spam_chart() {
820
+ echo '<div id="ab_chart"></div>';
821
+ }
822
+
823
+
824
+ /**
825
+ * Anzeige des Version-Hinweises
826
+ *
827
+ * @since 0.1
828
+ * @change 2.0
829
+ */
830
+
831
+ function show_version_notice() {
832
+ /* Keine Ausgabe? */
833
+ if ( $this->is_min_wp('2.8') ) {
834
+ return;
835
+ }
836
+
837
+ /* Warnung */
838
+ echo sprintf(
839
+ '<div class="error"><p><strong>Antispam Bee</strong> %s</p></div>',
840
+ esc_html__('requires at least WordPress 2.8', 'antispam_bee')
841
+ );
842
+ }
843
+
844
+
845
+ /**
846
+ * Kürzung der IP-Adressen
847
+ *
848
+ * @since 0.1
849
+ * @change 0.1
850
+ *
851
+ * @param string $ip Ungekürzte IP
852
+ * @return string $ip Gekürzte IP
853
+ */
854
+
855
+ function cut_ip_addr($ip) {
856
+ if ( !empty($ip) ) {
857
+ return str_replace(
858
+ strrchr($ip, '.'),
859
+ '',
860
+ $ip
861
+ );
862
+ }
863
+ }
864
+
865
+
866
+ /**
867
+ * Ersetzung der Kommentar-Textarea
868
+ *
869
+ * @since 0.1
870
+ * @change 2.0
871
+ */
872
+
873
+ function replace_comment_field() {
874
+ /* Nur Frontend */
875
+ if ( is_feed() or is_trackback() or is_robots() or $this->is_mobile() ) {
876
+ return;
877
+ }
878
+
879
+ /* Nur Beiträge */
880
+ if ( !is_singular() && !$this->get_option('always_allowed') ) {
881
+ return;
882
+ }
883
+
884
+ /* Replace! */
885
+ ob_start(
886
+ create_function(
887
+ '$input',
888
+ 'return preg_replace("#<textarea(.*?)name=([\"\'])comment([\"\'])(.+?)</textarea>#s", "<textarea$1name=$2' .$this->md5_sign. '$3$4</textarea><textarea name=\"comment\" style=\"display:none\" rows=\"1\" cols=\"1\"></textarea>", $input, 1);'
889
+ )
890
+ );
891
+ }
892
+
893
+
894
+ /**
895
+ * Prüfung bestehenden Spam
896
+ *
897
+ * @since 2.0
898
+ * @change 2.0
899
+ *
900
+ * @param string $ip IP-Adresse
901
+ * @return boolean TRUE bei vorhandenem Spam
902
+ */
903
+
904
+ function is_ip_spam($ip) {
905
+ /* Leer? */
906
+ if ( empty($ip) ) {
907
+ return true;
908
+ }
909
+
910
+ /* Global */
911
+ global $wpdb;
912
+
913
+ /* Suchen */
914
+ $found = $wpdb->get_var(
915
+ $wpdb->prepare(
916
+ "SELECT `comment_ID` FROM `$wpdb->comments` WHERE `comment_approved` = 'spam' AND `comment_author_IP` = %s LIMIT 1",
917
+ (string)$ip
918
+ )
919
+ );
920
+
921
+ /* Gefunden? */
922
+ if ( $found ) {
923
+ return true;
924
+ }
925
+
926
+ return false;
927
+ }
928
+
929
+
930
+ /**
931
+ * Prüfung auf bereits kommentierte E-Mail-Adresse
932
+ *
933
+ * @since 2.0
934
+ * @change 2.0
935
+ *
936
+ * @param string $email E-Mail-Adresse
937
+ * @return boolean TRUE bei gefundenem Eintrag
938
+ */
939
+
940
+ function is_already_commented($email) {
941
+ /* Leer? */
942
+ if ( empty($email) ) {
943
+ return false;
944
+ }
945
+
946
+ /* Global */
947
+ global $wpdb;
948
+
949
+ /* Suchen */
950
+ $found = $wpdb->get_var(
951
+ $wpdb->prepare(
952
+ "SELECT `comment_ID` FROM `$wpdb->comments` WHERE `comment_approved` = '1' AND `comment_author_email` = %s LIMIT 1",
953
+ (string)$email
954
+ )
955
+ );
956
+
957
+ /* Gefunden? */
958
+ if ( $found ) {
959
+ return true;
960
+ }
961
+
962
+ return false;
963
+ }
964
+
965
+
966
+ /**
967
+ * Prüfung auf erlaubten Ländercode
968
+ *
969
+ * @since 0.1
970
+ * @change 2.0
971
+ *
972
+ * @param string $ip IP-Adresse
973
+ * @return boolean TRUE bei gesperrtem Land
974
+ */
975
+
976
+ function is_blacklist_country($ip) {
977
+ /* API Key */
978
+ $key = $this->get_option('ipinfodb_key');
979
+
980
+ /* Keine Daten? */
981
+ if ( empty($ip) or empty($key) ) {
982
+ return false;
983
+ }
984
+
985
+ /* White & Black */
986
+ $white = preg_split(
987
+ '/ /',
988
+ $this->get_option('country_white'),
989
+ -1,
990
+ PREG_SPLIT_NO_EMPTY
991
+ );
992
+ $black = preg_split(
993
+ '/ /',
994
+ $this->get_option('country_black'),
995
+ -1,
996
+ PREG_SPLIT_NO_EMPTY
997
+ );
998
+
999
+ /* Keine Listen? */
1000
+ if ( empty($white) && empty($black) ) {
1001
+ return false;
1002
+ }
1003
+
1004
+ /* IP abfragen */
1005
+ $response = wp_remote_get(
1006
+ sprintf(
1007
+ 'http://api.ipinfodb.com/v2/ip_query_country.php?key=%s&ip=%s',
1008
+ $key,
1009
+ $ip
1010
+ )
1011
+ );
1012
+
1013
+ /* Fehler? */
1014
+ if ( is_wp_error($response) ) {
1015
+ return false;
1016
+ }
1017
+
1018
+ /* XML lesen */
1019
+ preg_match(
1020
+ '#Code>([A-Z]{2})</Country#i',
1021
+ wp_remote_retrieve_body($response),
1022
+ $matches
1023
+ );
1024
+
1025
+ /* Kein Code? */
1026
+ if ( empty($matches[1]) ) {
1027
+ return false;
1028
+ }
1029
+
1030
+ /* Blacklist */
1031
+ if ( !empty($black) ) {
1032
+ return ( in_array($matches[1], $black) ? true : false );
1033
+ }
1034
+
1035
+ /* Whitelist */
1036
+ return ( in_array($matches[1], $white) ? false : true );
1037
+ }
1038
+
1039
+
1040
+ /**
1041
+ * Prüfung auf Honey Pot Spam
1042
+ *
1043
+ * @since 1.7
1044
+ * @change 2.0
1045
+ *
1046
+ * @param string $ip IP-Adresse
1047
+ * @return boolean TRUE bei gemeldeter IP
1048
+ */
1049
+
1050
+ function is_honey_spam($ip) {
1051
+ /* API Key */
1052
+ $key = $this->get_option('honey_key');
1053
+
1054
+ /* Keine Daten? */
1055
+ if ( empty($ip) or empty($key) ) {
1056
+ return false;
1057
+ }
1058
+
1059
+ /* Host */
1060
+ $host = sprintf(
1061
+ '%s.%s.dnsbl.httpbl.org',
1062
+ $key,
1063
+ implode(
1064
+ '.',
1065
+ array_reverse(
1066
+ explode(
1067
+ '.',
1068
+ $ip
1069
+ )
1070
+ )
1071
+ )
1072
+ );
1073
+
1074
+ /* Response */
1075
+ $bits = explode(
1076
+ '.',
1077
+ gethostbyname($host)
1078
+ );
1079
+
1080
+ return ( $bits[0] == 127 && $bits[3] & 4 );
1081
+ }
1082
+
1083
+
1084
+ /**
1085
+ * Prüfung auf Blacklisted-Sprache
1086
+ *
1087
+ * @since 2.0
1088
+ * @change 2.1
1089
+ *
1090
+ * @param str $content Content
1091
+ * @return bool TRUE bei Spam
1092
+ */
1093
+
1094
+ function is_lang_spam($content)
1095
+ {
1096
+ /* Init */
1097
+ $lang = $this->get_option('translate_lang');
1098
+
1099
+ /* Formatieren */
1100
+ $content = rawurlencode(
1101
+ mb_substr(
1102
+ strip_tags(stripslashes($content)),
1103
+ 0,
1104
+ 200
1105
+ )
1106
+ );
1107
+
1108
+ /* Keine Daten? */
1109
+ if ( empty($lang) or empty($content) ) {
1110
+ return false;
1111
+ }
1112
+
1113
+ /* IP abfragen */
1114
+ $response = wp_remote_get(
1115
+ sprintf(
1116
+ 'http://translate.google.de/translate_a/t?client=x&text=%s',
1117
+ $content
1118
+ )
1119
+ );
1120
+
1121
+ /* Fehler? */
1122
+ if ( is_wp_error($response) ) {
1123
+ return false;
1124
+ }
1125
+
1126
+ /* Parsen */
1127
+ preg_match(
1128
+ '/"src":"(\\D{2})"/',
1129
+ wp_remote_retrieve_body($response),
1130
+ $matches
1131
+ );
1132
+
1133
+ /* Fehler? */
1134
+ if ( empty($matches[1]) ) {
1135
+ return false;
1136
+ }
1137
+
1138
+ return ( $matches[1] != $lang );
1139
+ }
1140
+
1141
+
1142
+ /**
1143
+ * Prüfung auf gefälschte IP
1144
+ *
1145
+ * @since 2.0
1146
+ * @change 2.0
1147
+ *
1148
+ * @param string $ip IP-Adresse
1149
+ * @return boolean TRUE bei gefälschter IP
1150
+ */
1151
+
1152
+ function is_fake_ip($ip)
1153
+ {
1154
+ /* Leer? */
1155
+ if ( empty($ip) ) {
1156
+ return true;
1157
+ }
1158
+
1159
+ /* Suchen */
1160
+ $found = strpos(
1161
+ $ip,
1162
+ $this->cut_ip_addr(
1163
+ gethostbyname(
1164
+ gethostbyaddr($ip)
1165
+ )
1166
+ )
1167
+ );
1168
+
1169
+ return $found === false;
1170
+ }
1171
+
1172
+
1173
+ /**
1174
+ * Kontrolle der POST-Werte
1175
+ *
1176
+ * @since 0.1
1177
+ * @change 0.1
1178
+ */
1179
+
1180
+ function precheck_comment_request() {
1181
+ /* Nur Frontend */
1182
+ if ( is_feed() or is_trackback() or $this->is_mobile() ) {
1183
+ return;
1184
+ }
1185
+
1186
+ /* Allgemeine Werte */
1187
+ $request_url = @$_SERVER['REQUEST_URI'];
1188
+ $hidden_field = @$_POST['comment'];
1189
+ $plugin_field = @$_POST[$this->md5_sign];
1190
+
1191
+ /* Falsch verbunden */
1192
+ if ( empty($_POST) or empty($request_url) or strpos($request_url, 'wp-comments-post.php') === false ) {
1193
+ return;
1194
+ }
1195
+
1196
+ /* Felder prüfen */
1197
+ if (empty($hidden_field) && !empty($plugin_field)) {
1198
+ $_POST['comment'] = $plugin_field;
1199
+ unset($_POST[$this->md5_sign]);
1200
+ } else {
1201
+ $_POST['bee_spam'] = 1;
1202
+ }
1203
+ }
1204
+
1205
+
1206
+ /**
1207
+ * Prüfung und Markierung des Kommentars als Spam
1208
+ *
1209
+ * @since 0.1
1210
+ * @change 2.1
1211
+ *
1212
+ * @param array $comment Unbehandelter Kommentar
1213
+ * @return array $comment Behandelter Kommentar
1214
+ */
1215
+
1216
+ function verify_comment_request($comment) {
1217
+ /* Server-Werte */
1218
+ $request_url = @$_SERVER['REQUEST_URI'];
1219
+ $request_ip = @$_SERVER['REMOTE_ADDR'];
1220
+
1221
+ /* Werte leer? */
1222
+ if ( empty($request_url) or empty($request_ip) ) {
1223
+ return $this->flag_comment_request(
1224
+ $comment,
1225
+ 'Empty Data'
1226
+ );
1227
+ }
1228
+
1229
+ /* Kommentar-Werte */
1230
+ $comment_type = @$comment['comment_type'];
1231
+ $comment_url = @$comment['comment_author_url'];
1232
+ $comment_body = @$comment['comment_content'];
1233
+ $comment_email = @$comment['comment_author_email'];
1234
+
1235
+ /* Ping-Werte */
1236
+ $ping_types = array('pingback', 'trackback', 'pings');
1237
+ $ping_allowed = !$this->get_option('ignore_pings');
1238
+
1239
+ /* Pingback Host */
1240
+ if ( !empty($comment_url) ) {
1241
+ $comment_parse = @parse_url($comment_url);
1242
+ $comment_host = @$comment_parse['host'];
1243
+ }
1244
+
1245
+ /* Kommentar */
1246
+ if ( strpos($request_url, 'wp-comments-post.php') !== false && !empty($_POST) ) {
1247
+
1248
+ /* Bereits kommentiert? */
1249
+ if ( $this->get_option('already_commented') && $this->is_already_commented($comment_email) ) {
1250
+ return $comment;
1251
+ }
1252
+
1253
+ /* Bot erkannt */
1254
+ if ( !empty($_POST['bee_spam']) ) {
1255
+ return $this->flag_comment_request(
1256
+ $comment,
1257
+ 'CSS Hack'
1258
+ );
1259
+ }
1260
+
1261
+ /* Erweiterter Schutz */
1262
+ if ( $this->get_option('advanced_check') && $this->is_fake_ip($request_ip) ) {
1263
+ return $this->flag_comment_request(
1264
+ $comment,
1265
+ 'Server IP'
1266
+ );
1267
+ }
1268
+
1269
+ /* IPs im Spam */
1270
+ if ( $this->get_option('spam_ip') && $this->is_ip_spam($request_ip) ) {
1271
+ return $this->flag_comment_request(
1272
+ $comment,
1273
+ 'Spam IP'
1274
+ );
1275
+ }
1276
+
1277
+ /* Translate API */
1278
+ if ( $this->get_option('translate_api') && $this->is_lang_spam($comment_body) ) {
1279
+ return $this->flag_comment_request(
1280
+ $comment,
1281
+ 'Comment Language'
1282
+ );
1283
+ }
1284
+
1285
+ /* Country Code */
1286
+ if ( $this->get_option('country_code') && $this->is_blacklist_country($request_ip) ) {
1287
+ return $this->flag_comment_request(
1288
+ $comment,
1289
+ 'Country Check'
1290
+ );
1291
+ }
1292
+
1293
+ /* Honey Pot */
1294
+ if ( $this->get_option('honey_pot') && $this->is_honey_spam($request_ip) ) {
1295
+ return $this->flag_comment_request(
1296
+ $comment,
1297
+ 'Honey Pot'
1298
+ );
1299
+ }
1300
+
1301
+ /* Trackback */
1302
+ } else if ( !empty($comment_type) && in_array($comment_type, $ping_types) && $ping_allowed ) {
1303
+ /* Leere Werte ? */
1304
+ if ( empty($comment_url) or empty($comment_body) ) {
1305
+ return $this->flag_comment_request(
1306
+ $comment,
1307
+ 'Empty Data',
1308
+ true
1309
+ );
1310
+ }
1311
+
1312
+ /* IP != Server */
1313
+ if ( !empty($comment_host) && gethostbyname($comment_host) != $request_ip ) {
1314
+ return $this->flag_comment_request(
1315
+ $comment,
1316
+ 'Server IP',
1317
+ true
1318
+ );
1319
+ }
1320
+
1321
+ /* IPs im Spam */
1322
+ if ( $this->get_option('spam_ip') && $this->is_ip_spam($request_ip) === true ) {
1323
+ return $this->flag_comment_request(
1324
+ $comment,
1325
+ 'Spam IP',
1326
+ true
1327
+ );
1328
+ }
1329
+
1330
+ /* Country Code prüfen */
1331
+ if ( $this->get_option('country_code') && $this->is_blacklist_country($request_ip) ) {
1332
+ return $this->flag_comment_request(
1333
+ $comment,
1334
+ 'Country Check',
1335
+ true
1336
+ );
1337
+ }
1338
+
1339
+ /* Honey Pot */
1340
+ if ( $this->get_option('honey_pot') && $this->is_honey_spam($request_ip) ) {
1341
+ return $this->flag_comment_request(
1342
+ $comment,
1343
+ 'Honey Pot',
1344
+ true
1345
+ );
1346
+ }
1347
+ }
1348
+
1349
+ return $comment;
1350
+ }
1351
+
1352
+
1353
+ /**
1354
+ * Ausführung des Markier-Vorgangs
1355
+ *
1356
+ * @since 0.1
1357
+ * @change 1.7
1358
+ *
1359
+ * @param array $comment Unbehandelter Kommentar
1360
+ * @param string $reason Verdachtsgrund
1361
+ * @param boolean $is_ping Ping (ja oder nein) [optional]
1362
+ * @return array $comment Behandelter Kommentar
1363
+ */
1364
+
1365
+ function flag_comment_request($comment, $reason, $is_ping = false) {
1366
+ /* Spam-Einstellungen */
1367
+ $spam_remove = !$this->get_option('flag_spam');
1368
+ $spam_notice = !$this->get_option('no_notice');
1369
+
1370
+ /* Filter-Einstellungen */
1371
+ $ignore_filter = $this->get_option('ignore_filter');
1372
+ $ignore_type = $this->get_option('ignore_type');
1373
+
1374
+ /* Spam hochzählen */
1375
+ $this->update_spam_count();
1376
+ $this->update_daily_stats();
1377
+
1378
+ /* Spam löschen */
1379
+ if ( $spam_remove ) {
1380
+ die('Spam deleted.');
1381
+ }
1382
+
1383
+ /* Typen behandeln */
1384
+ if ( $ignore_filter && (($ignore_type == 1 && $is_ping) or ($ignore_type == 2 && !$is_ping)) ) {
1385
+ die('Spam deleted.');
1386
+ }
1387
+
1388
+ /* Spam-Grund */
1389
+ $this->spam_reason = $reason;
1390
+
1391
+ /* Spam markieren */
1392
+ add_filter(
1393
+ 'pre_comment_approved',
1394
+ create_function(
1395
+ '',
1396
+ 'return "spam";'
1397
+ )
1398
+ );
1399
+
1400
+ /* E-Mail senden */
1401
+ add_filter(
1402
+ 'comment_post',
1403
+ array(
1404
+ $this,
1405
+ 'send_email_notify'
1406
+ )
1407
+ );
1408
+
1409
+ /* Notiz setzen */
1410
+ if ( $spam_notice ) {
1411
+ $comment['comment_content'] = sprintf(
1412
+ '[MARKED AS SPAM BY ANTISPAM BEE | %s]%s%s',
1413
+ $reason,
1414
+ "\n",
1415
+ $comment['comment_content']
1416
+ );
1417
+ }
1418
+
1419
+ return $comment;
1420
+ }
1421
+
1422
+
1423
+ /**
1424
+ * Ersetzung des Whois Links
1425
+ *
1426
+ * @since 1.7
1427
+ * @change 1.7
1428
+ *
1429
+ * @param string $body Body mit Whois
1430
+ * @return string $body Body mit IPinfoDB
1431
+ */
1432
+
1433
+ function replace_whois_link($body) {
1434
+ if ( $this->get_option('country_code') ) {
1435
+ return preg_replace(
1436
+ '/^Whois .+?=(.+?)/m',
1437
+ 'IP Locator: http://ipinfodb.com/ip_locator.php?ip=$1',
1438
+ $body
1439
+ );
1440
+ }
1441
+
1442
+ return $body;
1443
+ }
1444
+
1445
+
1446
+ /**
1447
+ * Versand einer Benachrichtigung via E-Mail
1448
+ *
1449
+ * @since 0.1
1450
+ * @change 2.0
1451
+ */
1452
+
1453
+ function send_email_notify($id) {
1454
+ /* Keine Benachrichtigung? */
1455
+ if ( !$this->get_option('email_notify') ) {
1456
+ return $id;
1457
+ }
1458
+
1459
+ /* Werte initialisieren */
1460
+ $comment = @$GLOBALS['commentdata'];
1461
+ $ip = @$_SERVER['REMOTE_ADDR'];
1462
+
1463
+ /* Keine Werte? */
1464
+ if ( empty($comment) or empty($ip) ) {
1465
+ return $id;
1466
+ }
1467
+
1468
+ /* Beitrag ermitteln */
1469
+ if ( !$post = get_post($comment['comment_post_ID']) ) {
1470
+ return $id;
1471
+ }
1472
+
1473
+ /* Sprache laden */
1474
+ $this->load_plugin_lang();
1475
+
1476
+ /* Betreff */
1477
+ $subject = sprintf(
1478
+ '[%s] %s',
1479
+ get_bloginfo('name'),
1480
+ __('Comment marked as spam', 'antispam_bee')
1481
+ );
1482
+
1483
+ /* Content */
1484
+ if ( !$content = strip_tags(stripslashes($comment['comment_content'])) ) {
1485
+ $content = sprintf(
1486
+ '-- %s --',
1487
+ __('Content removed by Antispam Bee', 'antispam_bee')
1488
+ );
1489
+ }
1490
+
1491
+ /* Body */
1492
+ $body = sprintf(
1493
+ "%s \"%s\"\r\n\r\n",
1494
+ __('New spam comment on your post', 'antispam_bee'),
1495
+ strip_tags($post->post_title)
1496
+ ).sprintf(
1497
+ "%s: %s\r\n",
1498
+ __('Author'),
1499
+ $comment['comment_author'],
1500
+ $ip
1501
+ ).sprintf(
1502
+ "URL: %s\r\n",
1503
+ esc_url($comment['comment_author_url'])
1504
+ ).sprintf(
1505
+ "IP Locator: http://ipinfodb.com/ip_locator.php?ip=%s\r\n",
1506
+ $ip
1507
+ ).sprintf(
1508
+ "%s: %s\r\n\r\n",
1509
+ __('Spam Reason', 'antispam_bee'),
1510
+ __($this->spam_reason, 'antispam_bee')
1511
+ ).sprintf(
1512
+ "%s\r\n\r\n\r\n",
1513
+ $content
1514
+ ).(
1515
+ EMPTY_TRASH_DAYS ? (
1516
+ sprintf(
1517
+ "%s: %s\r\n",
1518
+ __('Trash it', 'antispam_bee'),
1519
+ admin_url('comment.php?action=trash&c=' .$id)
1520
+ )
1521
+ ) : (
1522
+ sprintf(
1523
+ "%s: %s\r\n",
1524
+ __('Delete it', 'antispam_bee'),
1525
+ admin_url('comment.php?action=delete&c=' .$id)
1526
+ )
1527
+ )
1528
+ ).sprintf(
1529
+ "%s: %s\r\n",
1530
+ __('Approve it', 'antispam_bee'),
1531
+ admin_url('comment.php?action=approve&c=' .$id)
1532
+ ).sprintf(
1533
+ "%s: %s\r\n\r\n",
1534
+ __('Spam list', 'antispam_bee'),
1535
+ admin_url('edit-comments.php?comment_status=spam')
1536
+ ).sprintf(
1537
+ "%s\r\n%s\r\n",
1538
+ __('Notify message by Antispam Bee', 'antispam_bee'),
1539
+ __('http://antispambee.com', 'antispam_bee')
1540
+ );
1541
+
1542
+ /* Send */
1543
+ wp_mail(
1544
+ get_bloginfo('admin_email'),
1545
+ $subject,
1546
+ $body
1547
+ );
1548
+
1549
+ return $id;
1550
+ }
1551
+
1552
+
1553
+ /**
1554
+ * Rückgabe der Anzahl von Spam-Kommentaren
1555
+ *
1556
+ * @since 0.1
1557
+ * @change 1.7
1558
+ *
1559
+ * @param intval Anzahl der Spam-Kommentare
1560
+ */
1561
+
1562
+ function get_spam_count() {
1563
+ /* Init */
1564
+ $count = $this->get_option('spam_count');
1565
+
1566
+ /* Fire */
1567
+ return ( get_locale() == 'de_DE' ? number_format($count, 0, '', '.') : number_format_i18n($count) );
1568
+ }
1569
+
1570
+
1571
+ /**
1572
+ * Ausgabe der Anzahl von Spam-Kommentaren
1573
+ *
1574
+ * @since 0.1
1575
+ * @change 0.1
1576
+ */
1577
+
1578
+ function the_spam_count() {
1579
+ echo esc_html($this->get_spam_count());
1580
+ }
1581
+
1582
+
1583
+ /**
1584
+ * Aktualisierung der Anzahl von Spam-Kommentaren
1585
+ *
1586
+ * @since 0.1
1587
+ * @change 0.1
1588
+ */
1589
+
1590
+ function update_spam_count() {
1591
+ $this->update_option(
1592
+ 'spam_count',
1593
+ intval($this->get_option('spam_count') + 1)
1594
+ );
1595
+ }
1596
+
1597
+
1598
+ /**
1599
+ * Aktualisierung der Statistik
1600
+ *
1601
+ * @since 1.9
1602
+ * @change 1.9
1603
+ */
1604
+
1605
+ function update_daily_stats() {
1606
+ /* Init */
1607
+ $stats = (array)$this->get_option('daily_stats');
1608
+ $today = (int)strtotime('today');
1609
+
1610
+ /* Hochzählen */
1611
+ if ( array_key_exists($today, $stats) ) {
1612
+ $stats[$today] ++;
1613
+ } else {
1614
+ $stats[$today] = 1;
1615
+ }
1616
+
1617
+ /* Sortieren */
1618
+ krsort($stats, SORT_NUMERIC);
1619
+
1620
+ /* Speichern */
1621
+ $this->update_option(
1622
+ 'daily_stats',
1623
+ array_slice($stats, 0, 31, true)
1624
+ );
1625
+ }
1626
+
1627
+
1628
+ /**
1629
+ * Anzeige des Hilfe-Links
1630
+ *
1631
+ * @since 0.1
1632
+ * @change 1.6
1633
+ *
1634
+ * @param string $anchor Anker in der Hilfe
1635
+ */
1636
+
1637
+ function show_help_link($anchor) {
1638
+ /* Nicht Deutsch? */
1639
+ if ( get_locale() != 'de_DE' ) {
1640
+ return '';
1641
+ }
1642
+
1643
+ /* Ausgeben */
1644
+ echo sprintf(
1645
+ '[<a href="http://playground.ebiene.de/antispam-bee-wordpress-plugin/#%s" target="_blank">?</a>]',
1646
+ $anchor
1647
+ );
1648
+ }
1649
+
1650
+
1651
+ /**
1652
+ * Anzeige der GUI
1653
+ *
1654
+ * @since 0.1
1655
+ * @change 2.1
1656
+ */
1657
+
1658
+ function show_admin_menu() {
1659
+ if ( !empty($_POST) ) {
1660
+ /* Referer prüfen */
1661
+ check_admin_referer('antispam_bee');
1662
+
1663
+ /* Optionen ermitteln */
1664
+ $options = array(
1665
+ 'flag_spam' => (int)(!empty($_POST['antispam_bee_flag_spam'])),
1666
+ 'ignore_pings' => (int)(!empty($_POST['antispam_bee_ignore_pings'])),
1667
+ 'ignore_filter' => (int)(!empty($_POST['antispam_bee_ignore_filter'])),
1668
+ 'ignore_type' => (int)(@$_POST['antispam_bee_ignore_type']),
1669
+ 'no_notice' => (int)(!empty($_POST['antispam_bee_no_notice'])),
1670
+ 'email_notify' => (int)(!empty($_POST['antispam_bee_email_notify'])),
1671
+ 'cronjob_enable' => (int)(!empty($_POST['antispam_bee_cronjob_enable'])),
1672
+ 'cronjob_interval' => (int)(@$_POST['antispam_bee_cronjob_interval']),
1673
+ 'dashboard_count' => (int)(!empty($_POST['antispam_bee_dashboard_count'])),
1674
+ 'dashboard_chart' => (int)(!empty($_POST['antispam_bee_dashboard_chart'])),
1675
+ 'advanced_check' => (int)(!empty($_POST['antispam_bee_advanced_check'])),
1676
+ 'spam_ip' => (int)(!empty($_POST['antispam_bee_spam_ip'])),
1677
+ 'already_commented' => (int)(!empty($_POST['antispam_bee_already_commented'])),
1678
+ 'always_allowed' => (int)(!empty($_POST['antispam_bee_always_allowed'])),
1679
+
1680
+ 'honey_pot' => (int)(!empty($_POST['antispam_bee_honey_pot'])),
1681
+ 'honey_key' => (string)(@$_POST['antispam_bee_honey_key']),
1682
+
1683
+ 'country_code' => (int)(!empty($_POST['antispam_bee_country_code'])),
1684
+ 'country_black' => (string)(@$_POST['antispam_bee_country_black']),
1685
+ 'country_white' => (string)(@$_POST['antispam_bee_country_white']),
1686
+ 'ipinfodb_key' => (string)(@$_POST['antispam_bee_ipinfodb_key']),
1687
+
1688
+ 'translate_api' => (int)(!empty($_POST['antispam_bee_translate_api'])),
1689
+ 'translate_lang' => (string)(@$_POST['antispam_bee_translate_lang'])
1690
+ );
1691
+
1692
+ /* Kein Tag eingetragen? */
1693
+ if ( empty($options['cronjob_interval']) ) {
1694
+ $options['cronjob_enable'] = 0;
1695
+ }
1696
+
1697
+
1698
+ /* Honey Key reinigen */
1699
+ if ( !empty($options['honey_key']) ) {
1700
+ $options['honey_key'] = preg_replace(
1701
+ '/[^a-z]/',
1702
+ '',
1703
+ strtolower(
1704
+ strip_tags($options['honey_key'])
1705
+ )
1706
+ );
1707
+ }
1708
+
1709
+ /* Kein Honey Key? */
1710
+ if ( empty($options['honey_key']) ) {
1711
+ $options['honey_pot'] = 0;
1712
+ }
1713
+
1714
+
1715
+ /* Translate API */
1716
+ if ( !empty($options['translate_lang']) ) {
1717
+ $options['translate_lang'] = preg_replace(
1718
+ '/[^den]/',
1719
+ '',
1720
+ strip_tags($options['translate_lang'])
1721
+ );
1722
+ }
1723
+ if ( empty($options['translate_lang']) ) {
1724
+ $options['translate_api'] = 0;
1725
+ }
1726
+
1727
+
1728
+ /* Blacklist reinigen */
1729
+ if ( !empty($options['country_black']) ) {
1730
+ $options['country_black'] = preg_replace(
1731
+ '/[^A-Z ]/',
1732
+ '',
1733
+ strtoupper(
1734
+ strip_tags($options['country_black'])
1735
+ )
1736
+ );
1737
+ }
1738
+
1739
+ /* Whitelist reinigen */
1740
+ if ( !empty($options['country_white']) ) {
1741
+ $options['country_white'] = preg_replace(
1742
+ '/[^A-Z ]/',
1743
+ '',
1744
+ strtoupper(
1745
+ strip_tags($options['country_white'])
1746
+ )
1747
+ );
1748
+ }
1749
+
1750
+ /* Kein IPInfoDB Key? */
1751
+ if ( empty($options['ipinfodb_key']) ) {
1752
+ $options['country_code'] = 0;
1753
+ }
1754
+
1755
+ /* Leere Listen? */
1756
+ if ( empty($options['country_black']) && empty($options['country_white']) ) {
1757
+ $options['country_code'] = 0;
1758
+ }
1759
+
1760
+ /* Cron stoppen? */
1761
+ if ( $options['cronjob_enable'] && !$this->get_option('cronjob_enable') ) {
1762
+ $this->init_scheduled_hook();
1763
+ } else if ( !$options['cronjob_enable'] && $this->get_option('cronjob_enable') ) {
1764
+ $this->clear_scheduled_hook();
1765
+ }
1766
+
1767
+ /* Optionen speichern */
1768
+ $this->update_options($options); ?>
1769
+
1770
+ <div id="message" class="updated fade">
1771
+ <p>
1772
+ <strong>
1773
+ <?php esc_html_e('Settings saved.') ?>
1774
+ </strong>
1775
+ </p>
1776
+ </div>
1777
+ <?php } ?>
1778
+
1779
+ <div class="wrap">
1780
+ <div class="icon32"></div>
1781
+
1782
+ <h2>
1783
+ Antispam Bee
1784
+ </h2>
1785
+
1786
+ <form method="post" action="">
1787
+ <?php wp_nonce_field('antispam_bee') ?>
1788
+
1789
+ <div id="poststuff">
1790
+ <div class="postbox">
1791
+ <h3>
1792
+ <?php esc_html_e('Settings') ?>
1793
+ </h3>
1794
+
1795
+ <div class="inside">
1796
+ <ul>
1797
+ <li>
1798
+ <div>
1799
+ <input type="checkbox" name="antispam_bee_flag_spam" id="antispam_bee_flag_spam" value="1" <?php checked($this->get_option('flag_spam'), 1) ?> />
1800
+ <label for="antispam_bee_flag_spam">
1801
+ <?php esc_html_e('Mark as Spam, do not delete', 'antispam_bee') ?> <?php $this->show_help_link('flag_spam') ?>
1802
+ </label>
1803
+ </div>
1804
+
1805
+ <div class="shift <?php echo ($this->get_option('flag_spam') ? '' : 'inact') ?>">
1806
+ <ul>
1807
+ <li>
1808
+ <input type="checkbox" name="antispam_bee_ignore_filter" id="antispam_bee_ignore_filter" value="1" <?php checked($this->get_option('ignore_filter'), 1) ?> />
1809
+ <?php esc_html_e('Limit on', 'antispam_bee') ?> <select name="antispam_bee_ignore_type"><?php foreach(array(1 => 'Comments', 2 => 'Pings') as $key => $value) {
1810
+ echo '<option value="' .esc_attr($key). '" ';
1811
+ selected($this->get_option('ignore_type'), $key);
1812
+ echo '>' .esc_html__($value). '</option>';
1813
+ } ?>
1814
+ </select> <?php $this->show_help_link('ignore_filter') ?>
1815
+ </li>
1816
+ <li>
1817
+ <input type="checkbox" name="antispam_bee_cronjob_enable" id="antispam_bee_cronjob_enable" value="1" <?php checked($this->get_option('cronjob_enable'), 1) ?> />
1818
+ <?php echo sprintf(esc_html__('Spam will be automatically deleted after %s days', 'antispam_bee'), '<input type="text" name="antispam_bee_cronjob_interval" value="' .esc_attr($this->get_option('cronjob_interval')). '" class="small-text" />') ?>&nbsp;<?php $this->show_help_link('cronjob_enable') ?>
1819
+ <?php if ( $this->get_option('cronjob_enable') && $this->get_option('cronjob_timestamp') ) {
1820
+ echo sprintf(
1821
+ '<br />(%s @ %s)',
1822
+ esc_html__('Last check', 'antispam_bee'),
1823
+ date_i18n('d.m.Y H:i:s', ($this->get_option('cronjob_timestamp') + get_option('gmt_offset') * 3600))
1824
+ );
1825
+ } ?>
1826
+ </li>
1827
+ <li>
1828
+ <input type="checkbox" name="antispam_bee_no_notice" id="antispam_bee_no_notice" value="1" <?php checked($this->get_option('no_notice'), 1) ?> />
1829
+ <label for="antispam_bee_no_notice">
1830
+ <?php esc_html_e('Hide the &quot;MARKED AS SPAM&quot; note', 'antispam_bee') ?> <?php $this->show_help_link('no_notice') ?>
1831
+ </label>
1832
+ </li>
1833
+ <li>
1834
+ <input type="checkbox" name="antispam_bee_email_notify" id="antispam_bee_email_notify" value="1" <?php checked($this->get_option('email_notify'), 1) ?> />
1835
+ <label for="antispam_bee_email_notify">
1836
+ <?php esc_html_e('Send an admin email when new spam item incoming', 'antispam_bee') ?> <?php $this->show_help_link('email_notify') ?>
1837
+ </label>
1838
+ </li>
1839
+ </ul>
1840
+ </div>
1841
+ </li>
1842
+ </ul>
1843
+
1844
+ <ul>
1845
+ <li>
1846
+ <div>
1847
+ <input type="checkbox" name="antispam_bee_country_code" id="antispam_bee_country_code" value="1" <?php checked($this->get_option('country_code'), 1) ?> />
1848
+ <label for="antispam_bee_country_code">
1849
+ <?php esc_html_e('Block comments and pings from specific countries', 'antispam_bee') ?> <?php $this->show_help_link('country_code') ?>
1850
+ </label>
1851
+ </div>
1852
+
1853
+ <div class="shift <?php echo ($this->get_option('country_code') ? '' : 'inact') ?>">
1854
+ <ul>
1855
+ <li>
1856
+ <label for="antispam_bee_ipinfodb_key">
1857
+ IPInfoDB API Key (<a href="http://www.ipinfodb.com/register.php" target="_blank"><?php esc_html_e('get free', 'antispam_bee') ?></a>)
1858
+ </label>
1859
+ <input type="text" name="antispam_bee_ipinfodb_key" id="antispam_bee_ipinfodb_key" value="<?php echo esc_attr($this->get_option('ipinfodb_key')); ?>" class="maxi-text code" />
1860
+ </li>
1861
+ </ul>
1862
+
1863
+ <ul>
1864
+ <li>
1865
+ <label for="antispam_bee_country_black">
1866
+ <?php esc_html_e('Blacklist', 'antispam_bee') ?> (<a href="http://www.iso.org/iso/country_names_and_code_elements" target="_blank"><?php esc_html_e('iso codes', 'antispam_bee') ?></a>)
1867
+ </label>
1868
+ <input type="text" name="antispam_bee_country_black" id="antispam_bee_country_black" value="<?php echo esc_attr($this->get_option('country_black')); ?>" class="regular-text code" />
1869
+ </li>
1870
+ <li>
1871
+ &nbsp;
1872
+ <br />
1873
+ <?php esc_html_e('or', 'antispam_bee') ?>
1874
+ </li>
1875
+ <li>
1876
+ <label for="antispam_bee_country_white">
1877
+ <?php esc_html_e('Whitelist', 'antispam_bee') ?> (<a href="http://www.iso.org/iso/country_names_and_code_elements" target="_blank"><?php esc_html_e('iso codes', 'antispam_bee') ?></a>)
1878
+ </label>
1879
+ <input type="text" name="antispam_bee_country_white" id="antispam_bee_country_white" value="<?php echo esc_attr($this->get_option('country_white')); ?>" class="regular-text code" />
1880
+ </li>
1881
+ </ul>
1882
+ </div>
1883
+ </li>
1884
+ </ul>
1885
+
1886
+ <ul>
1887
+ <li>
1888
+ <div>
1889
+ <input type="checkbox" name="antispam_bee_honey_pot" id="antispam_bee_honey_pot" value="1" <?php checked($this->get_option('honey_pot'), 1) ?> />
1890
+ <label for="antispam_bee_honey_pot">
1891
+ <?php esc_html_e('Search comment spammers in the Project Honey Pot', 'antispam_bee') ?> <?php $this->show_help_link('honey_pot') ?>
1892
+ </label>
1893
+ </div>
1894
+
1895
+ <ul class="shift <?php echo ($this->get_option('honey_pot') ? '' : 'inact') ?>">
1896
+ <li>
1897
+ <label for="antispam_bee_honey_key">
1898
+ Honey Pot API Key (<a href="http://www.projecthoneypot.org/httpbl_configure.php" target="_blank"><?php esc_html_e('get free', 'antispam_bee') ?></a>)
1899
+ </label>
1900
+ <input type="text" name="antispam_bee_honey_key" id="antispam_bee_honey_key" value="<?php echo esc_attr($this->get_option('honey_key')); ?>" class="maxi-text code" />
1901
+ </li>
1902
+ </ul>
1903
+ </li>
1904
+ </ul>
1905
+
1906
+ <ul>
1907
+ <li>
1908
+ <div>
1909
+ <input type="checkbox" name="antispam_bee_translate_api" id="antispam_bee_translate_api" value="1" <?php checked($this->get_option('translate_api'), 1) ?> />
1910
+ <label for="antispam_bee_translate_api">
1911
+ <?php esc_html_e('Allow comments only in certain language', 'antispam_bee') ?> <?php $this->show_help_link('translate_api') ?>
1912
+ </label>
1913
+ </div>
1914
+
1915
+ <div class="shift <?php echo ($this->get_option('translate_api') ? '' : 'inact') ?>">
1916
+ <ul>
1917
+ <li>
1918
+ <label for="antispam_bee_translate_lang">
1919
+ <?php esc_html_e('Language', 'antispam_bee') ?>
1920
+ </label>
1921
+ <select name="antispam_bee_translate_lang">
1922
+ <?php foreach(array('de' => 'German', 'en' => 'English') as $k => $v) { ?>
1923
+ <option <?php selected($this->get_option('translate_lang'), $k); ?> value="<?php echo esc_attr($k) ?>"><?php esc_html_e($v, 'antispam_bee') ?></option>
1924
+ <?php } ?>
1925
+ </select>
1926
+ </li>
1927
+ <li>
1928
+ </ul>
1929
+ </div>
1930
+ </li>
1931
+ </ul>
1932
+
1933
+ <ul>
1934
+ <li>
1935
+ <input type="checkbox" name="antispam_bee_advanced_check" id="antispam_bee_advanced_check" value="1" <?php checked($this->get_option('advanced_check'), 1) ?> />
1936
+ <label for="antispam_bee_advanced_check">
1937
+ <?php esc_html_e('Enable stricter inspection for incomming comments', 'antispam_bee') ?> <?php $this->show_help_link('advanced_check') ?>
1938
+ </label>
1939
+ </li>
1940
+ <li>
1941
+ <input type="checkbox" name="antispam_bee_spam_ip" id="antispam_bee_spam_ip" value="1" <?php checked($this->get_option('spam_ip'), 1) ?> />
1942
+ <label for="antispam_bee_spam_ip">
1943
+ <?php esc_html_e('Consider comments which are already marked as spam', 'antispam_bee') ?> <?php $this->show_help_link('spam_ip') ?>
1944
+ </label>
1945
+ </li>
1946
+ <li>
1947
+ <input type="checkbox" name="antispam_bee_already_commented" id="antispam_bee_already_commented" value="1" <?php checked($this->get_option('already_commented'), 1) ?> />
1948
+ <label for="antispam_bee_already_commented">
1949
+ <?php esc_html_e('Do not check if the comment author has already approved', 'antispam_bee') ?> <?php $this->show_help_link('already_commented') ?>
1950
+ </label>
1951
+ </li>
1952
+ </ul>
1953
+
1954
+ <ul>
1955
+ <li>
1956
+ <input type="checkbox" name="antispam_bee_dashboard_count" id="antispam_bee_dashboard_count" value="1" <?php checked($this->get_option('dashboard_count'), 1) ?> />
1957
+ <label for="antispam_bee_dashboard_count">
1958
+ <?php esc_html_e('Display blocked comments count on the dashboard', 'antispam_bee') ?> <?php $this->show_help_link('dashboard_count') ?>
1959
+ </label>
1960
+ </li>
1961
+ <?php if ( $this->is_min_php('5.0.2') ) { ?>
1962
+ <li>
1963
+ <input type="checkbox" name="antispam_bee_dashboard_chart" id="antispam_bee_dashboard_chart" value="1" <?php checked($this->get_option('dashboard_chart'), 1) ?> />
1964
+ <label for="antispam_bee_dashboard_chart">
1965
+ <?php esc_html_e('Display statistics on the dashboard', 'antispam_bee') ?> <?php $this->show_help_link('dashboard_chart') ?>
1966
+ </label>
1967
+ </li>
1968
+ <?php } ?>
1969
+ <li>
1970
+ <input type="checkbox" name="antispam_bee_ignore_pings" id="antispam_bee_ignore_pings" value="1" <?php checked($this->get_option('ignore_pings'), 1) ?> />
1971
+ <label for="antispam_bee_ignore_pings">
1972
+ <?php esc_html_e('Do not check trackbacks / pingbacks', 'antispam_bee') ?> <?php $this->show_help_link('ignore_pings') ?>
1973
+ </label>
1974
+ </li>
1975
+ <li>
1976
+ <input type="checkbox" name="antispam_bee_always_allowed" id="antispam_bee_always_allowed" value="1" <?php checked($this->get_option('always_allowed'), 1) ?> />
1977
+ <label for="antispam_bee_always_allowed">
1978
+ <?php esc_html_e('Comments are also used outside of posts and pages', 'antispam_bee') ?> <?php $this->show_help_link('always_allowed') ?>
1979
+ </label>
1980
+ </li>
1981
+ </ul>
1982
+
1983
+ <p>
1984
+ <input type="submit" name="antispam_bee_submit" class="button-primary" value="<?php esc_html_e('Save Changes') ?>" />
1985
+ </p>
1986
+ </div>
1987
+ </div>
1988
+
1989
+ </div>
1990
+ </form>
1991
+ </div>
1992
+ <?php }
1993
+ }
1994
+
1995
+
1996
+ /* Fire! */
1997
+ new Antispam_Bee();
antispam_bee.php ADDED
@@ -0,0 +1,1216 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /*
3
+ Plugin Name: Antispam Bee
4
+ Text Domain: antispam_bee
5
+ Domain Path: /lang
6
+ Description: Easy and extremely productive spam-fighting plugin with many sophisticated solutions. Includes protection again trackback spam.
7
+ Author: Sergej M&uuml;ller
8
+ Author URI: http://wpseo.de
9
+ Plugin URI: http://antispambee.com
10
+ Version: 2.3
11
+ */
12
+
13
+
14
+ if ( !class_exists('WP') ) {
15
+ header('Status: 403 Forbidden');
16
+ header('HTTP/1.1 403 Forbidden');
17
+ exit();
18
+ }
19
+ class Antispam_Bee {
20
+ var $md5_sign;
21
+ var $base_name;
22
+ var $spam_reason;
23
+ function Antispam_Bee() {
24
+ if ( (defined('DOING_AJAX') && DOING_AJAX) or (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) ) {
25
+ return;
26
+ }
27
+ $this->base_name = plugin_basename(__FILE__);
28
+ $this->md5_sign = 'comment-' .substr(md5(get_bloginfo('url')), 0, 8);
29
+ if ( defined('DOING_CRON') ) {
30
+ add_action(
31
+ 'antispam_bee_daily_cronjob',
32
+ array(
33
+ $this,
34
+ 'exe_daily_cronjob'
35
+ )
36
+ );
37
+ } elseif ( is_admin() ) {
38
+ add_action(
39
+ 'admin_menu',
40
+ array(
41
+ $this,
42
+ 'init_admin_menu'
43
+ )
44
+ );
45
+ if ( $this->is_current_page('home') ) {
46
+ add_action(
47
+ 'init',
48
+ array(
49
+ $this,
50
+ 'load_plugin_lang'
51
+ )
52
+ );
53
+ add_action(
54
+ 'admin_init',
55
+ array(
56
+ $this,
57
+ 'add_plugin_sources'
58
+ )
59
+ );
60
+ } else if ( $this->is_current_page('index') ) {
61
+ add_action(
62
+ 'init',
63
+ array(
64
+ $this,
65
+ 'load_plugin_lang'
66
+ )
67
+ );
68
+ if ( $this->get_option('dashboard_count') ) {
69
+ if ($this->is_min_wp('3.0')) {
70
+ add_action(
71
+ 'right_now_discussion_table_end',
72
+ array(
73
+ $this,
74
+ 'add_discussion_table_end'
75
+ )
76
+ );
77
+ } else {
78
+ add_action(
79
+ 'right_now_table_end',
80
+ array(
81
+ $this,
82
+ 'add_table_end'
83
+ )
84
+ );
85
+ }
86
+ }
87
+ if ( $this->get_option('dashboard_chart') ) {
88
+ add_action(
89
+ 'wp_dashboard_setup',
90
+ array(
91
+ $this,
92
+ 'init_dashboard_chart'
93
+ )
94
+ );
95
+ }
96
+ } else if ( $this->is_current_page('plugins') ) {
97
+ add_action(
98
+ 'init',
99
+ array(
100
+ $this,
101
+ 'load_plugin_lang'
102
+ )
103
+ );
104
+ add_action(
105
+ 'activate_' .$this->base_name,
106
+ array(
107
+ $this,
108
+ 'init_plugin_options'
109
+ )
110
+ );
111
+ add_action(
112
+ 'deactivate_' .$this->base_name,
113
+ array(
114
+ $this,
115
+ 'clear_scheduled_hook'
116
+ )
117
+ );
118
+ add_action(
119
+ 'admin_notices',
120
+ array(
121
+ $this,
122
+ 'show_version_notice'
123
+ )
124
+ );
125
+ add_filter(
126
+ 'plugin_row_meta',
127
+ array(
128
+ $this,
129
+ 'init_row_meta'
130
+ ),
131
+ 10,
132
+ 2
133
+ );
134
+ }
135
+ } else {
136
+ add_action(
137
+ 'template_redirect',
138
+ array(
139
+ $this,
140
+ 'replace_comment_field'
141
+ )
142
+ );
143
+ add_action(
144
+ 'init',
145
+ array(
146
+ $this,
147
+ 'precheck_comment_request'
148
+ )
149
+ );
150
+ add_action(
151
+ 'preprocess_comment',
152
+ array(
153
+ $this,
154
+ 'verify_comment_request'
155
+ ),
156
+ 1
157
+ );
158
+ add_action(
159
+ 'antispam_bee_count',
160
+ array(
161
+ $this,
162
+ 'the_spam_count'
163
+ )
164
+ );
165
+ add_filter(
166
+ 'comment_notification_text',
167
+ array(
168
+ $this,
169
+ 'replace_whois_link'
170
+ )
171
+ );
172
+ add_filter(
173
+ 'comment_moderation_text',
174
+ array(
175
+ $this,
176
+ 'replace_whois_link'
177
+ )
178
+ );
179
+ }
180
+ }
181
+ function load_plugin_lang() {
182
+ load_plugin_textdomain(
183
+ 'antispam_bee',
184
+ false,
185
+ 'antispam-bee/lang'
186
+ );
187
+ }
188
+ function init_row_meta($links, $file) {
189
+ if ( $this->base_name == $file ) {
190
+ return array_merge(
191
+ $links,
192
+ array(
193
+ sprintf(
194
+ '<a href="https://flattr.com/thing/54115/Antispam-Bee-Das-WordPress-Plugin-fur-den-Schutz-gegen-Spam" target="_blank">%s</a>',
195
+ esc_html__('Flattr')
196
+ ),
197
+ sprintf(
198
+ '<a href="options-general.php?page=%s">%s</a>',
199
+ $this->base_name,
200
+ esc_html__('Settings')
201
+ )
202
+ )
203
+ );
204
+ }
205
+ return $links;
206
+ }
207
+ function init_plugin_options() {
208
+ add_option(
209
+ 'antispam_bee',
210
+ array(),
211
+ '',
212
+ 'no'
213
+ );
214
+ if ($this->get_option('cronjob_enable')) {
215
+ $this->init_scheduled_hook();
216
+ }
217
+ }
218
+ function get_option($field) {
219
+ if ( !$options = wp_cache_get('antispam_bee') ) {
220
+ $options = get_option('antispam_bee');
221
+ wp_cache_set(
222
+ 'antispam_bee',
223
+ $options
224
+ );
225
+ }
226
+ return @$options[$field];
227
+ }
228
+ function update_option($field, $value) {
229
+ $this->update_options(
230
+ array(
231
+ $field => $value
232
+ )
233
+ );
234
+ }
235
+ function update_options($data) {
236
+ $options = array_merge(
237
+ (array)get_option('antispam_bee'),
238
+ $data
239
+ );
240
+ update_option(
241
+ 'antispam_bee',
242
+ $options
243
+ );
244
+ wp_cache_set(
245
+ 'antispam_bee',
246
+ $options
247
+ );
248
+ }
249
+ function init_scheduled_hook() {
250
+ if ( !wp_next_scheduled('antispam_bee_daily_cronjob') ) {
251
+ wp_schedule_event(
252
+ time(),
253
+ 'daily',
254
+ 'antispam_bee_daily_cronjob'
255
+ );
256
+ }
257
+ }
258
+ function clear_scheduled_hook() {
259
+ if ( wp_next_scheduled('antispam_bee_daily_cronjob') ) {
260
+ wp_clear_scheduled_hook('antispam_bee_daily_cronjob');
261
+ }
262
+ }
263
+ function exe_daily_cronjob() {
264
+ if ( !$this->get_option('cronjob_enable') ) {
265
+ return;
266
+ }
267
+ $this->update_option(
268
+ 'cronjob_timestamp',
269
+ time()
270
+ );
271
+ $this->delete_spam_comments();
272
+ }
273
+ function delete_spam_comments() {
274
+ $days = (int)$this->get_option('cronjob_interval');
275
+ if ( empty($days) ) {
276
+ return false;
277
+ }
278
+ global $wpdb;
279
+ $wpdb->query(
280
+ $wpdb->prepare(
281
+ "DELETE FROM `$wpdb->comments` WHERE `comment_approved` = 'spam' AND SUBDATE(NOW(), %d) > comment_date_gmt",
282
+ $days
283
+ )
284
+ );
285
+ $wpdb->query("OPTIMIZE TABLE `$wpdb->comments`");
286
+ }
287
+ function init_admin_menu() {
288
+ $page = add_options_page(
289
+ 'Antispam Bee',
290
+ '<img src="' .plugins_url('antispam-bee/img/icon.png'). '" id="ab_icon" alt="Antispam Bee" />Antispam Bee',
291
+ 'manage_options',
292
+ __FILE__,
293
+ array(
294
+ $this,
295
+ 'show_admin_menu'
296
+ )
297
+ );
298
+ add_action(
299
+ 'admin_print_scripts-' . $page,
300
+ array(
301
+ $this,
302
+ 'add_enqueue_script'
303
+ )
304
+ );
305
+ add_action(
306
+ 'admin_print_styles-' . $page,
307
+ array(
308
+ $this,
309
+ 'add_enqueue_style'
310
+ )
311
+ );
312
+ }
313
+ function add_plugin_sources() {
314
+ $data = get_plugin_data(__FILE__);
315
+ wp_register_script(
316
+ 'ab_script',
317
+ plugins_url('antispam-bee/js/script.js'),
318
+ array('jquery'),
319
+ $data['Version']
320
+ );
321
+ wp_register_style(
322
+ 'ab_style',
323
+ plugins_url('antispam-bee/css/style.css'),
324
+ array(),
325
+ $data['Version']
326
+ );
327
+ }
328
+ function add_enqueue_script() {
329
+ wp_enqueue_script('ab_script');
330
+ }
331
+ function add_enqueue_style() {
332
+ wp_enqueue_style('ab_style');
333
+ }
334
+ function is_min_wp($version) {
335
+ return version_compare(
336
+ $GLOBALS['wp_version'],
337
+ $version. 'alpha',
338
+ '>='
339
+ );
340
+ }
341
+ function is_min_php($version) {
342
+ return version_compare(
343
+ phpversion(),
344
+ $version,
345
+ '>='
346
+ );
347
+ }
348
+ function is_mobile() {
349
+ return strpos(TEMPLATEPATH, 'wptouch');
350
+ }
351
+ function is_current_page($page) {
352
+ switch($page) {
353
+ case 'index':
354
+ return ( empty($GLOBALS['pagenow']) or ( !empty($GLOBALS['pagenow']) && $GLOBALS['pagenow'] == 'index.php' ) );
355
+ case 'home':
356
+ return ( !empty($_REQUEST['page']) && $_REQUEST['page'] == $this->base_name );
357
+ case 'plugins':
358
+ return ( !empty($GLOBALS['pagenow']) && $GLOBALS['pagenow'] == 'plugins.php' );
359
+ default:
360
+ return false;
361
+ }
362
+ }
363
+ function add_table_end() {
364
+ echo sprintf(
365
+ '<tr>
366
+ <td class="first b b-tags"></td>
367
+ <td class="t tags"></td>
368
+ <td class="b b-spam" style="font-size:18px">%s</td>
369
+ <td class="last t">%s</td>
370
+ </tr>',
371
+ esc_html($this->get_spam_count()),
372
+ esc_html__('Blocked', 'antispam_bee')
373
+ );
374
+ }
375
+ function add_discussion_table_end() {
376
+ echo sprintf(
377
+ '<tr>
378
+ <td class="b b-spam" style="font-size:18px">%s</td>
379
+ <td class="last t">%s</td>
380
+ </tr>',
381
+ esc_html($this->get_spam_count()),
382
+ esc_html__('Blocked', 'antispam_bee')
383
+ );
384
+ }
385
+ function init_dashboard_chart() {
386
+ if ( !current_user_can('administrator') or !$this->is_min_php('5.0.2') ) {
387
+ return false;
388
+ }
389
+ wp_add_dashboard_widget(
390
+ 'ab_spam_chart',
391
+ 'Antispam Bee',
392
+ array(
393
+ $this,
394
+ 'show_spam_chart'
395
+ )
396
+ );
397
+ add_action(
398
+ 'wp_print_scripts',
399
+ array(
400
+ $this,
401
+ 'add_dashboard_js'
402
+ )
403
+ );
404
+ add_action(
405
+ 'admin_head',
406
+ array(
407
+ $this,
408
+ 'add_dashboard_css'
409
+ )
410
+ );
411
+ }
412
+ function add_dashboard_css() {
413
+ $data = get_plugin_data(__FILE__);
414
+ wp_register_style(
415
+ 'antispambee',
416
+ plugins_url('antispam-bee/css/dashboard.css'),
417
+ array(),
418
+ $data['Version']
419
+ );
420
+ wp_print_styles('antispambee');
421
+ }
422
+ function add_dashboard_js() {
423
+ $items = (array)$this->get_option('daily_stats');
424
+ if ( empty($items) or count($items) == 1 ) {
425
+ return;
426
+ }
427
+ krsort($items, SORT_NUMERIC);
428
+ $output = array(
429
+ 'created' => array(),
430
+ 'count' => array()
431
+ );
432
+ $i = 0;
433
+ foreach($items as $timestamp => $count) {
434
+ array_push(
435
+ $output['created'],
436
+ ( $timestamp == strtotime('today', current_time('timestamp')) ? __('Today', 'antispam_bee') : date('d.m', $timestamp) )
437
+ );
438
+ array_push(
439
+ $output['count'],
440
+ (int)$count
441
+ );
442
+ }
443
+ $stats = array(
444
+ 'created' => implode(',', $output['created']),
445
+ 'count' => implode(',', $output['count'])
446
+ );
447
+ $data = get_plugin_data(__FILE__);
448
+ wp_register_script(
449
+ 'ab_chart',
450
+ plugins_url('antispam-bee/js/dashboard.js'),
451
+ array('jquery'),
452
+ $data['Version']
453
+ );
454
+ wp_register_script(
455
+ 'google_jsapi',
456
+ 'http://www.google.com/jsapi',
457
+ false
458
+ );
459
+ wp_enqueue_script('google_jsapi');
460
+ wp_enqueue_script('ab_chart');
461
+ wp_localize_script(
462
+ 'ab_chart',
463
+ 'antispambee',
464
+ $stats
465
+ );
466
+ }
467
+ function show_spam_chart() {
468
+ echo '<div id="ab_chart"></div>';
469
+ }
470
+ function show_version_notice() {
471
+ if ( $this->is_min_wp('2.8') ) {
472
+ return;
473
+ }
474
+ echo sprintf(
475
+ '<div class="error"><p><strong>Antispam Bee</strong> %s</p></div>',
476
+ esc_html__('requires at least WordPress 2.8', 'antispam_bee')
477
+ );
478
+ }
479
+ function cut_ip_addr($ip) {
480
+ if ( !empty($ip) ) {
481
+ return str_replace(
482
+ strrchr($ip, '.'),
483
+ '',
484
+ $ip
485
+ );
486
+ }
487
+ }
488
+ function replace_comment_field() {
489
+ if ( is_feed() or is_trackback() or is_robots() or $this->is_mobile() ) {
490
+ return;
491
+ }
492
+ if ( !is_singular() && !$this->get_option('always_allowed') ) {
493
+ return;
494
+ }
495
+ ob_start(
496
+ create_function(
497
+ '$input',
498
+ 'return preg_replace("#<textarea(.*?)name=([\"\'])comment([\"\'])(.+?)</textarea>#s", "<textarea$1name=$2' .$this->md5_sign. '$3$4</textarea><textarea name=\"comment\" style=\"display:none\" rows=\"1\" cols=\"1\"></textarea>", $input, 1);'
499
+ )
500
+ );
501
+ }
502
+ function is_ip_spam($ip) {
503
+ if ( empty($ip) ) {
504
+ return true;
505
+ }
506
+ global $wpdb;
507
+ $found = $wpdb->get_var(
508
+ $wpdb->prepare(
509
+ "SELECT `comment_ID` FROM `$wpdb->comments` WHERE `comment_approved` = 'spam' AND `comment_author_IP` = %s LIMIT 1",
510
+ (string)$ip
511
+ )
512
+ );
513
+ if ( $found ) {
514
+ return true;
515
+ }
516
+ return false;
517
+ }
518
+ function is_already_commented($email) {
519
+ if ( empty($email) ) {
520
+ return false;
521
+ }
522
+ global $wpdb;
523
+ $found = $wpdb->get_var(
524
+ $wpdb->prepare(
525
+ "SELECT `comment_ID` FROM `$wpdb->comments` WHERE `comment_approved` = '1' AND `comment_author_email` = %s LIMIT 1",
526
+ (string)$email
527
+ )
528
+ );
529
+ if ( $found ) {
530
+ return true;
531
+ }
532
+ return false;
533
+ }
534
+ function is_blacklist_country($ip) {
535
+ $key = $this->get_option('ipinfodb_key');
536
+ if ( empty($ip) or empty($key) ) {
537
+ return false;
538
+ }
539
+ $white = preg_split(
540
+ '/ /',
541
+ $this->get_option('country_white'),
542
+ -1,
543
+ PREG_SPLIT_NO_EMPTY
544
+ );
545
+ $black = preg_split(
546
+ '/ /',
547
+ $this->get_option('country_black'),
548
+ -1,
549
+ PREG_SPLIT_NO_EMPTY
550
+ );
551
+ if ( empty($white) && empty($black) ) {
552
+ return false;
553
+ }
554
+ $response = wp_remote_get(
555
+ sprintf(
556
+ 'http://api.ipinfodb.com/v2/ip_query_country.php?key=%s&ip=%s',
557
+ $key,
558
+ $ip
559
+ )
560
+ );
561
+ if ( is_wp_error($response) ) {
562
+ return false;
563
+ }
564
+ preg_match(
565
+ '#Code>([A-Z]{2})</Country#i',
566
+ wp_remote_retrieve_body($response),
567
+ $matches
568
+ );
569
+ if ( empty($matches[1]) ) {
570
+ return false;
571
+ }
572
+ if ( !empty($black) ) {
573
+ return ( in_array($matches[1], $black) ? true : false );
574
+ }
575
+ return ( in_array($matches[1], $white) ? false : true );
576
+ }
577
+ function is_honey_spam($ip) {
578
+ $key = $this->get_option('honey_key');
579
+ if ( empty($ip) or empty($key) ) {
580
+ return false;
581
+ }
582
+ $host = sprintf(
583
+ '%s.%s.dnsbl.httpbl.org',
584
+ $key,
585
+ implode(
586
+ '.',
587
+ array_reverse(
588
+ explode(
589
+ '.',
590
+ $ip
591
+ )
592
+ )
593
+ )
594
+ );
595
+ $bits = explode(
596
+ '.',
597
+ gethostbyname($host)
598
+ );
599
+ return ( $bits[0] == 127 && $bits[3] & 4 );
600
+ }
601
+ function is_lang_spam($content)
602
+ {
603
+ $lang = $this->get_option('translate_lang');
604
+ $content = rawurlencode(
605
+ mb_substr(
606
+ strip_tags(stripslashes($content)),
607
+ 0,
608
+ 200
609
+ )
610
+ );
611
+ if ( empty($lang) or empty($content) ) {
612
+ return false;
613
+ }
614
+ $response = wp_remote_get(
615
+ sprintf(
616
+ 'http://translate.google.de/translate_a/t?client=x&text=%s',
617
+ $content
618
+ )
619
+ );
620
+ if ( is_wp_error($response) ) {
621
+ return false;
622
+ }
623
+ preg_match(
624
+ '/"src":"(\\D{2})"/',
625
+ wp_remote_retrieve_body($response),
626
+ $matches
627
+ );
628
+ if ( empty($matches[1]) ) {
629
+ return false;
630
+ }
631
+ return ( $matches[1] != $lang );
632
+ }
633
+ function is_fake_ip($ip)
634
+ {
635
+ if ( empty($ip) ) {
636
+ return true;
637
+ }
638
+ $found = strpos(
639
+ $ip,
640
+ $this->cut_ip_addr(
641
+ gethostbyname(
642
+ gethostbyaddr($ip)
643
+ )
644
+ )
645
+ );
646
+ return $found === false;
647
+ }
648
+ function precheck_comment_request() {
649
+ if ( is_feed() or is_trackback() or $this->is_mobile() ) {
650
+ return;
651
+ }
652
+ $request_url = @$_SERVER['REQUEST_URI'];
653
+ $hidden_field = @$_POST['comment'];
654
+ $plugin_field = @$_POST[$this->md5_sign];
655
+ if ( empty($_POST) or empty($request_url) or strpos($request_url, 'wp-comments-post.php') === false ) {
656
+ return;
657
+ }
658
+ if (empty($hidden_field) && !empty($plugin_field)) {
659
+ $_POST['comment'] = $plugin_field;
660
+ unset($_POST[$this->md5_sign]);
661
+ } else {
662
+ $_POST['bee_spam'] = 1;
663
+ }
664
+ }
665
+ function verify_comment_request($comment) {
666
+ $request_url = @$_SERVER['REQUEST_URI'];
667
+ $request_ip = @$_SERVER['REMOTE_ADDR'];
668
+ if ( empty($request_url) or empty($request_ip) ) {
669
+ return $this->flag_comment_request(
670
+ $comment,
671
+ 'Empty Data'
672
+ );
673
+ }
674
+ $comment_type = @$comment['comment_type'];
675
+ $comment_url = @$comment['comment_author_url'];
676
+ $comment_body = @$comment['comment_content'];
677
+ $comment_email = @$comment['comment_author_email'];
678
+ $ping_types = array('pingback', 'trackback', 'pings');
679
+ $ping_allowed = !$this->get_option('ignore_pings');
680
+ if ( !empty($comment_url) ) {
681
+ $comment_parse = @parse_url($comment_url);
682
+ $comment_host = @$comment_parse['host'];
683
+ }
684
+ if ( strpos($request_url, 'wp-comments-post.php') !== false && !empty($_POST) ) {
685
+ if ( $this->get_option('already_commented') && $this->is_already_commented($comment_email) ) {
686
+ return $comment;
687
+ }
688
+ if ( !empty($_POST['bee_spam']) ) {
689
+ return $this->flag_comment_request(
690
+ $comment,
691
+ 'CSS Hack'
692
+ );
693
+ }
694
+ if ( $this->get_option('advanced_check') && $this->is_fake_ip($request_ip) ) {
695
+ return $this->flag_comment_request(
696
+ $comment,
697
+ 'Server IP'
698
+ );
699
+ }
700
+ if ( $this->get_option('spam_ip') && $this->is_ip_spam($request_ip) ) {
701
+ return $this->flag_comment_request(
702
+ $comment,
703
+ 'Spam IP'
704
+ );
705
+ }
706
+ if ( $this->get_option('translate_api') && $this->is_lang_spam($comment_body) ) {
707
+ return $this->flag_comment_request(
708
+ $comment,
709
+ 'Comment Language'
710
+ );
711
+ }
712
+ if ( $this->get_option('country_code') && $this->is_blacklist_country($request_ip) ) {
713
+ return $this->flag_comment_request(
714
+ $comment,
715
+ 'Country Check'
716
+ );
717
+ }
718
+ if ( $this->get_option('honey_pot') && $this->is_honey_spam($request_ip) ) {
719
+ return $this->flag_comment_request(
720
+ $comment,
721
+ 'Honey Pot'
722
+ );
723
+ }
724
+ } else if ( !empty($comment_type) && in_array($comment_type, $ping_types) && $ping_allowed ) {
725
+ if ( empty($comment_url) or empty($comment_body) ) {
726
+ return $this->flag_comment_request(
727
+ $comment,
728
+ 'Empty Data',
729
+ true
730
+ );
731
+ }
732
+ if ( !empty($comment_host) && gethostbyname($comment_host) != $request_ip ) {
733
+ return $this->flag_comment_request(
734
+ $comment,
735
+ 'Server IP',
736
+ true
737
+ );
738
+ }
739
+ if ( $this->get_option('spam_ip') && $this->is_ip_spam($request_ip) === true ) {
740
+ return $this->flag_comment_request(
741
+ $comment,
742
+ 'Spam IP',
743
+ true
744
+ );
745
+ }
746
+ if ( $this->get_option('country_code') && $this->is_blacklist_country($request_ip) ) {
747
+ return $this->flag_comment_request(
748
+ $comment,
749
+ 'Country Check',
750
+ true
751
+ );
752
+ }
753
+ if ( $this->get_option('honey_pot') && $this->is_honey_spam($request_ip) ) {
754
+ return $this->flag_comment_request(
755
+ $comment,
756
+ 'Honey Pot',
757
+ true
758
+ );
759
+ }
760
+ }
761
+ return $comment;
762
+ }
763
+ function flag_comment_request($comment, $reason, $is_ping = false) {
764
+ $spam_remove = !$this->get_option('flag_spam');
765
+ $spam_notice = !$this->get_option('no_notice');
766
+ $ignore_filter = $this->get_option('ignore_filter');
767
+ $ignore_type = $this->get_option('ignore_type');
768
+ $this->update_spam_count();
769
+ $this->update_daily_stats();
770
+ if ( $spam_remove ) {
771
+ die('Spam deleted.');
772
+ }
773
+ if ( $ignore_filter && (($ignore_type == 1 && $is_ping) or ($ignore_type == 2 && !$is_ping)) ) {
774
+ die('Spam deleted.');
775
+ }
776
+ $this->spam_reason = $reason;
777
+ add_filter(
778
+ 'pre_comment_approved',
779
+ create_function(
780
+ '',
781
+ 'return "spam";'
782
+ )
783
+ );
784
+ add_filter(
785
+ 'comment_post',
786
+ array(
787
+ $this,
788
+ 'send_email_notify'
789
+ )
790
+ );
791
+ if ( $spam_notice ) {
792
+ $comment['comment_content'] = sprintf(
793
+ '[MARKED AS SPAM BY ANTISPAM BEE | %s]%s%s',
794
+ $reason,
795
+ "\n",
796
+ $comment['comment_content']
797
+ );
798
+ }
799
+ return $comment;
800
+ }
801
+ function replace_whois_link($body) {
802
+ if ( $this->get_option('country_code') ) {
803
+ return preg_replace(
804
+ '/^Whois .+?=(.+?)/m',
805
+ 'IP Locator: http://ipinfodb.com/ip_locator.php?ip=$1',
806
+ $body
807
+ );
808
+ }
809
+ return $body;
810
+ }
811
+ function send_email_notify($id) {
812
+ if ( !$this->get_option('email_notify') ) {
813
+ return $id;
814
+ }
815
+ $comment = @$GLOBALS['commentdata'];
816
+ $ip = @$_SERVER['REMOTE_ADDR'];
817
+ if ( empty($comment) or empty($ip) ) {
818
+ return $id;
819
+ }
820
+ if ( !$post = get_post($comment['comment_post_ID']) ) {
821
+ return $id;
822
+ }
823
+ $this->load_plugin_lang();
824
+ $subject = sprintf(
825
+ '[%s] %s',
826
+ get_bloginfo('name'),
827
+ __('Comment marked as spam', 'antispam_bee')
828
+ );
829
+ if ( !$content = strip_tags(stripslashes($comment['comment_content'])) ) {
830
+ $content = sprintf(
831
+ '-- %s --',
832
+ __('Content removed by Antispam Bee', 'antispam_bee')
833
+ );
834
+ }
835
+ $body = sprintf(
836
+ "%s \"%s\"\r\n\r\n",
837
+ __('New spam comment on your post', 'antispam_bee'),
838
+ strip_tags($post->post_title)
839
+ ).sprintf(
840
+ "%s: %s\r\n",
841
+ __('Author'),
842
+ $comment['comment_author'],
843
+ $ip
844
+ ).sprintf(
845
+ "URL: %s\r\n",
846
+ esc_url($comment['comment_author_url'])
847
+ ).sprintf(
848
+ "IP Locator: http://ipinfodb.com/ip_locator.php?ip=%s\r\n",
849
+ $ip
850
+ ).sprintf(
851
+ "%s: %s\r\n\r\n",
852
+ __('Spam Reason', 'antispam_bee'),
853
+ __($this->spam_reason, 'antispam_bee')
854
+ ).sprintf(
855
+ "%s\r\n\r\n\r\n",
856
+ $content
857
+ ).(
858
+ EMPTY_TRASH_DAYS ? (
859
+ sprintf(
860
+ "%s: %s\r\n",
861
+ __('Trash it', 'antispam_bee'),
862
+ admin_url('comment.php?action=trash&c=' .$id)
863
+ )
864
+ ) : (
865
+ sprintf(
866
+ "%s: %s\r\n",
867
+ __('Delete it', 'antispam_bee'),
868
+ admin_url('comment.php?action=delete&c=' .$id)
869
+ )
870
+ )
871
+ ).sprintf(
872
+ "%s: %s\r\n",
873
+ __('Approve it', 'antispam_bee'),
874
+ admin_url('comment.php?action=approve&c=' .$id)
875
+ ).sprintf(
876
+ "%s: %s\r\n\r\n",
877
+ __('Spam list', 'antispam_bee'),
878
+ admin_url('edit-comments.php?comment_status=spam')
879
+ ).sprintf(
880
+ "%s\r\n%s\r\n",
881
+ __('Notify message by Antispam Bee', 'antispam_bee'),
882
+ __('http://antispambee.com', 'antispam_bee')
883
+ );
884
+ wp_mail(
885
+ get_bloginfo('admin_email'),
886
+ $subject,
887
+ $body
888
+ );
889
+ return $id;
890
+ }
891
+ function get_spam_count() {
892
+ $count = $this->get_option('spam_count');
893
+ return ( get_locale() == 'de_DE' ? number_format($count, 0, '', '.') : number_format_i18n($count) );
894
+ }
895
+ function the_spam_count() {
896
+ echo esc_html($this->get_spam_count());
897
+ }
898
+ function update_spam_count() {
899
+ $this->update_option(
900
+ 'spam_count',
901
+ intval($this->get_option('spam_count') + 1)
902
+ );
903
+ }
904
+ function update_daily_stats() {
905
+ $stats = (array)$this->get_option('daily_stats');
906
+ $today = (int)strtotime('today');
907
+ if ( array_key_exists($today, $stats) ) {
908
+ $stats[$today] ++;
909
+ } else {
910
+ $stats[$today] = 1;
911
+ }
912
+ krsort($stats, SORT_NUMERIC);
913
+ $this->update_option(
914
+ 'daily_stats',
915
+ array_slice($stats, 0, 31, true)
916
+ );
917
+ }
918
+ function show_help_link($anchor) {
919
+ if ( get_locale() != 'de_DE' ) {
920
+ return '';
921
+ }
922
+ echo sprintf(
923
+ '[<a href="http://playground.ebiene.de/antispam-bee-wordpress-plugin/#%s" target="_blank">?</a>]',
924
+ $anchor
925
+ );
926
+ }
927
+ function show_admin_menu() {
928
+ if ( !empty($_POST) ) {
929
+ check_admin_referer('antispam_bee');
930
+ $options = array(
931
+ 'flag_spam'=> (int)(!empty($_POST['antispam_bee_flag_spam'])),
932
+ 'ignore_pings'=> (int)(!empty($_POST['antispam_bee_ignore_pings'])),
933
+ 'ignore_filter'=> (int)(!empty($_POST['antispam_bee_ignore_filter'])),
934
+ 'ignore_type'=> (int)(@$_POST['antispam_bee_ignore_type']),
935
+ 'no_notice'=> (int)(!empty($_POST['antispam_bee_no_notice'])),
936
+ 'email_notify'=> (int)(!empty($_POST['antispam_bee_email_notify'])),
937
+ 'cronjob_enable'=> (int)(!empty($_POST['antispam_bee_cronjob_enable'])),
938
+ 'cronjob_interval'=> (int)(@$_POST['antispam_bee_cronjob_interval']),
939
+ 'dashboard_count'=> (int)(!empty($_POST['antispam_bee_dashboard_count'])),
940
+ 'dashboard_chart'=> (int)(!empty($_POST['antispam_bee_dashboard_chart'])),
941
+ 'advanced_check'=> (int)(!empty($_POST['antispam_bee_advanced_check'])),
942
+ 'spam_ip'=> (int)(!empty($_POST['antispam_bee_spam_ip'])),
943
+ 'already_commented'=> (int)(!empty($_POST['antispam_bee_already_commented'])),
944
+ 'always_allowed'=> (int)(!empty($_POST['antispam_bee_always_allowed'])),
945
+ 'honey_pot'=> (int)(!empty($_POST['antispam_bee_honey_pot'])),
946
+ 'honey_key'=> (string)(@$_POST['antispam_bee_honey_key']),
947
+ 'country_code'=> (int)(!empty($_POST['antispam_bee_country_code'])),
948
+ 'country_black'=> (string)(@$_POST['antispam_bee_country_black']),
949
+ 'country_white'=> (string)(@$_POST['antispam_bee_country_white']),
950
+ 'ipinfodb_key'=> (string)(@$_POST['antispam_bee_ipinfodb_key']),
951
+ 'translate_api'=> (int)(!empty($_POST['antispam_bee_translate_api'])),
952
+ 'translate_lang'=> (string)(@$_POST['antispam_bee_translate_lang'])
953
+ );
954
+ if ( empty($options['cronjob_interval']) ) {
955
+ $options['cronjob_enable'] = 0;
956
+ }
957
+ if ( !empty($options['honey_key']) ) {
958
+ $options['honey_key'] = preg_replace(
959
+ '/[^a-z]/',
960
+ '',
961
+ strtolower(
962
+ strip_tags($options['honey_key'])
963
+ )
964
+ );
965
+ }
966
+ if ( empty($options['honey_key']) ) {
967
+ $options['honey_pot'] = 0;
968
+ }
969
+ if ( !empty($options['translate_lang']) ) {
970
+ $options['translate_lang'] = preg_replace(
971
+ '/[^den]/',
972
+ '',
973
+ strip_tags($options['translate_lang'])
974
+ );
975
+ }
976
+ if ( empty($options['translate_lang']) ) {
977
+ $options['translate_api'] = 0;
978
+ }
979
+ if ( !empty($options['country_black']) ) {
980
+ $options['country_black'] = preg_replace(
981
+ '/[^A-Z ]/',
982
+ '',
983
+ strtoupper(
984
+ strip_tags($options['country_black'])
985
+ )
986
+ );
987
+ }
988
+ if ( !empty($options['country_white']) ) {
989
+ $options['country_white'] = preg_replace(
990
+ '/[^A-Z ]/',
991
+ '',
992
+ strtoupper(
993
+ strip_tags($options['country_white'])
994
+ )
995
+ );
996
+ }
997
+ if ( empty($options['ipinfodb_key']) ) {
998
+ $options['country_code'] = 0;
999
+ }
1000
+ if ( empty($options['country_black']) && empty($options['country_white']) ) {
1001
+ $options['country_code'] = 0;
1002
+ }
1003
+ if ( $options['cronjob_enable'] && !$this->get_option('cronjob_enable') ) {
1004
+ $this->init_scheduled_hook();
1005
+ } else if ( !$options['cronjob_enable'] && $this->get_option('cronjob_enable') ) {
1006
+ $this->clear_scheduled_hook();
1007
+ }
1008
+ $this->update_options($options); ?>
1009
+ <div id="message" class="updated fade">
1010
+ <p>
1011
+ <strong>
1012
+ <?php esc_html_e('Settings saved.') ?>
1013
+ </strong>
1014
+ </p>
1015
+ </div>
1016
+ <?php } ?>
1017
+ <div class="wrap">
1018
+ <div class="icon32"></div>
1019
+ <h2>
1020
+ Antispam Bee
1021
+ </h2>
1022
+ <form method="post" action="">
1023
+ <?php wp_nonce_field('antispam_bee') ?>
1024
+ <div id="poststuff">
1025
+ <div class="postbox">
1026
+ <h3>
1027
+ <?php esc_html_e('Settings') ?>
1028
+ </h3>
1029
+ <div class="inside">
1030
+ <ul>
1031
+ <li>
1032
+ <div>
1033
+ <input type="checkbox" name="antispam_bee_flag_spam" id="antispam_bee_flag_spam" value="1" <?php checked($this->get_option('flag_spam'), 1) ?> />
1034
+ <label for="antispam_bee_flag_spam">
1035
+ <?php esc_html_e('Mark as Spam, do not delete', 'antispam_bee') ?> <?php $this->show_help_link('flag_spam') ?>
1036
+ </label>
1037
+ </div>
1038
+ <div class="shift <?php echo ($this->get_option('flag_spam') ? '' : 'inact') ?>">
1039
+ <ul>
1040
+ <li>
1041
+ <input type="checkbox" name="antispam_bee_ignore_filter" id="antispam_bee_ignore_filter" value="1" <?php checked($this->get_option('ignore_filter'), 1) ?> />
1042
+ <?php esc_html_e('Limit on', 'antispam_bee') ?> <select name="antispam_bee_ignore_type"><?php foreach(array(1 => 'Comments', 2 => 'Pings') as $key => $value) {
1043
+ echo '<option value="' .esc_attr($key). '" ';
1044
+ selected($this->get_option('ignore_type'), $key);
1045
+ echo '>' .esc_html__($value). '</option>';
1046
+ } ?>
1047
+ </select> <?php $this->show_help_link('ignore_filter') ?>
1048
+ </li>
1049
+ <li>
1050
+ <input type="checkbox" name="antispam_bee_cronjob_enable" id="antispam_bee_cronjob_enable" value="1" <?php checked($this->get_option('cronjob_enable'), 1) ?> />
1051
+ <?php echo sprintf(esc_html__('Spam will be automatically deleted after %s days', 'antispam_bee'), '<input type="text" name="antispam_bee_cronjob_interval" value="' .esc_attr($this->get_option('cronjob_interval')). '" class="small-text" />') ?>&nbsp;<?php $this->show_help_link('cronjob_enable') ?>
1052
+ <?php if ( $this->get_option('cronjob_enable') && $this->get_option('cronjob_timestamp') ) {
1053
+ echo sprintf(
1054
+ '<br />(%s @ %s)',
1055
+ esc_html__('Last check', 'antispam_bee'),
1056
+ date_i18n('d.m.Y H:i:s', ($this->get_option('cronjob_timestamp') + get_option('gmt_offset') * 3600))
1057
+ );
1058
+ } ?>
1059
+ </li>
1060
+ <li>
1061
+ <input type="checkbox" name="antispam_bee_no_notice" id="antispam_bee_no_notice" value="1" <?php checked($this->get_option('no_notice'), 1) ?> />
1062
+ <label for="antispam_bee_no_notice">
1063
+ <?php esc_html_e('Hide the &quot;MARKED AS SPAM&quot; note', 'antispam_bee') ?> <?php $this->show_help_link('no_notice') ?>
1064
+ </label>
1065
+ </li>
1066
+ <li>
1067
+ <input type="checkbox" name="antispam_bee_email_notify" id="antispam_bee_email_notify" value="1" <?php checked($this->get_option('email_notify'), 1) ?> />
1068
+ <label for="antispam_bee_email_notify">
1069
+ <?php esc_html_e('Send an admin email when new spam item incoming', 'antispam_bee') ?> <?php $this->show_help_link('email_notify') ?>
1070
+ </label>
1071
+ </li>
1072
+ </ul>
1073
+ </div>
1074
+ </li>
1075
+ </ul>
1076
+ <ul>
1077
+ <li>
1078
+ <div>
1079
+ <input type="checkbox" name="antispam_bee_country_code" id="antispam_bee_country_code" value="1" <?php checked($this->get_option('country_code'), 1) ?> />
1080
+ <label for="antispam_bee_country_code">
1081
+ <?php esc_html_e('Block comments and pings from specific countries', 'antispam_bee') ?> <?php $this->show_help_link('country_code') ?>
1082
+ </label>
1083
+ </div>
1084
+ <div class="shift <?php echo ($this->get_option('country_code') ? '' : 'inact') ?>">
1085
+ <ul>
1086
+ <li>
1087
+ <label for="antispam_bee_ipinfodb_key">
1088
+ IPInfoDB API Key (<a href="http://www.ipinfodb.com/register.php" target="_blank"><?php esc_html_e('get free', 'antispam_bee') ?></a>)
1089
+ </label>
1090
+ <input type="text" name="antispam_bee_ipinfodb_key" id="antispam_bee_ipinfodb_key" value="<?php echo esc_attr($this->get_option('ipinfodb_key')); ?>" class="maxi-text code" />
1091
+ </li>
1092
+ </ul>
1093
+ <ul>
1094
+ <li>
1095
+ <label for="antispam_bee_country_black">
1096
+ <?php esc_html_e('Blacklist', 'antispam_bee') ?> (<a href="http://www.iso.org/iso/country_names_and_code_elements" target="_blank"><?php esc_html_e('iso codes', 'antispam_bee') ?></a>)
1097
+ </label>
1098
+ <input type="text" name="antispam_bee_country_black" id="antispam_bee_country_black" value="<?php echo esc_attr($this->get_option('country_black')); ?>" class="regular-text code" />
1099
+ </li>
1100
+ <li>
1101
+ &nbsp;
1102
+ <br />
1103
+ <?php esc_html_e('or', 'antispam_bee') ?>
1104
+ </li>
1105
+ <li>
1106
+ <label for="antispam_bee_country_white">
1107
+ <?php esc_html_e('Whitelist', 'antispam_bee') ?> (<a href="http://www.iso.org/iso/country_names_and_code_elements" target="_blank"><?php esc_html_e('iso codes', 'antispam_bee') ?></a>)
1108
+ </label>
1109
+ <input type="text" name="antispam_bee_country_white" id="antispam_bee_country_white" value="<?php echo esc_attr($this->get_option('country_white')); ?>" class="regular-text code" />
1110
+ </li>
1111
+ </ul>
1112
+ </div>
1113
+ </li>
1114
+ </ul>
1115
+ <ul>
1116
+ <li>
1117
+ <div>
1118
+ <input type="checkbox" name="antispam_bee_honey_pot" id="antispam_bee_honey_pot" value="1" <?php checked($this->get_option('honey_pot'), 1) ?> />
1119
+ <label for="antispam_bee_honey_pot">
1120
+ <?php esc_html_e('Search comment spammers in the Project Honey Pot', 'antispam_bee') ?> <?php $this->show_help_link('honey_pot') ?>
1121
+ </label>
1122
+ </div>
1123
+ <ul class="shift <?php echo ($this->get_option('honey_pot') ? '' : 'inact') ?>">
1124
+ <li>
1125
+ <label for="antispam_bee_honey_key">
1126
+ Honey Pot API Key (<a href="http://www.projecthoneypot.org/httpbl_configure.php" target="_blank"><?php esc_html_e('get free', 'antispam_bee') ?></a>)
1127
+ </label>
1128
+ <input type="text" name="antispam_bee_honey_key" id="antispam_bee_honey_key" value="<?php echo esc_attr($this->get_option('honey_key')); ?>" class="maxi-text code" />
1129
+ </li>
1130
+ </ul>
1131
+ </li>
1132
+ </ul>
1133
+ <ul>
1134
+ <li>
1135
+ <div>
1136
+ <input type="checkbox" name="antispam_bee_translate_api" id="antispam_bee_translate_api" value="1" <?php checked($this->get_option('translate_api'), 1) ?> />
1137
+ <label for="antispam_bee_translate_api">
1138
+ <?php esc_html_e('Allow comments only in certain language', 'antispam_bee') ?> <?php $this->show_help_link('translate_api') ?>
1139
+ </label>
1140
+ </div>
1141
+ <div class="shift <?php echo ($this->get_option('translate_api') ? '' : 'inact') ?>">
1142
+ <ul>
1143
+ <li>
1144
+ <label for="antispam_bee_translate_lang">
1145
+ <?php esc_html_e('Language', 'antispam_bee') ?>
1146
+ </label>
1147
+ <select name="antispam_bee_translate_lang">
1148
+ <?php foreach(array('de' => 'German', 'en' => 'English') as $k => $v) { ?>
1149
+ <option <?php selected($this->get_option('translate_lang'), $k); ?> value="<?php echo esc_attr($k) ?>"><?php esc_html_e($v, 'antispam_bee') ?></option>
1150
+ <?php } ?>
1151
+ </select>
1152
+ </li>
1153
+ <li>
1154
+ </ul>
1155
+ </div>
1156
+ </li>
1157
+ </ul>
1158
+ <ul>
1159
+ <li>
1160
+ <input type="checkbox" name="antispam_bee_advanced_check" id="antispam_bee_advanced_check" value="1" <?php checked($this->get_option('advanced_check'), 1) ?> />
1161
+ <label for="antispam_bee_advanced_check">
1162
+ <?php esc_html_e('Enable stricter inspection for incomming comments', 'antispam_bee') ?> <?php $this->show_help_link('advanced_check') ?>
1163
+ </label>
1164
+ </li>
1165
+ <li>
1166
+ <input type="checkbox" name="antispam_bee_spam_ip" id="antispam_bee_spam_ip" value="1" <?php checked($this->get_option('spam_ip'), 1) ?> />
1167
+ <label for="antispam_bee_spam_ip">
1168
+ <?php esc_html_e('Consider comments which are already marked as spam', 'antispam_bee') ?> <?php $this->show_help_link('spam_ip') ?>
1169
+ </label>
1170
+ </li>
1171
+ <li>
1172
+ <input type="checkbox" name="antispam_bee_already_commented" id="antispam_bee_already_commented" value="1" <?php checked($this->get_option('already_commented'), 1) ?> />
1173
+ <label for="antispam_bee_already_commented">
1174
+ <?php esc_html_e('Do not check if the comment author has already approved', 'antispam_bee') ?> <?php $this->show_help_link('already_commented') ?>
1175
+ </label>
1176
+ </li>
1177
+ </ul>
1178
+ <ul>
1179
+ <li>
1180
+ <input type="checkbox" name="antispam_bee_dashboard_count" id="antispam_bee_dashboard_count" value="1" <?php checked($this->get_option('dashboard_count'), 1) ?> />
1181
+ <label for="antispam_bee_dashboard_count">
1182
+ <?php esc_html_e('Display blocked comments count on the dashboard', 'antispam_bee') ?> <?php $this->show_help_link('dashboard_count') ?>
1183
+ </label>
1184
+ </li>
1185
+ <?php if ( $this->is_min_php('5.0.2') ) { ?>
1186
+ <li>
1187
+ <input type="checkbox" name="antispam_bee_dashboard_chart" id="antispam_bee_dashboard_chart" value="1" <?php checked($this->get_option('dashboard_chart'), 1) ?> />
1188
+ <label for="antispam_bee_dashboard_chart">
1189
+ <?php esc_html_e('Display statistics on the dashboard', 'antispam_bee') ?> <?php $this->show_help_link('dashboard_chart') ?>
1190
+ </label>
1191
+ </li>
1192
+ <?php } ?>
1193
+ <li>
1194
+ <input type="checkbox" name="antispam_bee_ignore_pings" id="antispam_bee_ignore_pings" value="1" <?php checked($this->get_option('ignore_pings'), 1) ?> />
1195
+ <label for="antispam_bee_ignore_pings">
1196
+ <?php esc_html_e('Do not check trackbacks / pingbacks', 'antispam_bee') ?> <?php $this->show_help_link('ignore_pings') ?>
1197
+ </label>
1198
+ </li>
1199
+ <li>
1200
+ <input type="checkbox" name="antispam_bee_always_allowed" id="antispam_bee_always_allowed" value="1" <?php checked($this->get_option('always_allowed'), 1) ?> />
1201
+ <label for="antispam_bee_always_allowed">
1202
+ <?php esc_html_e('Comments are also used outside of posts and pages', 'antispam_bee') ?> <?php $this->show_help_link('always_allowed') ?>
1203
+ </label>
1204
+ </li>
1205
+ </ul>
1206
+ <p>
1207
+ <input type="submit" name="antispam_bee_submit" class="button-primary" value="<?php esc_html_e('Save Changes') ?>" />
1208
+ </p>
1209
+ </div>
1210
+ </div>
1211
+ </div>
1212
+ </form>
1213
+ </div>
1214
+ <?php }
1215
+ }
1216
+ new Antispam_Bee();
css/dashboard.css ADDED
@@ -0,0 +1 @@
 
1
+ #ab_chart{height:120px;}
css/dashboard.original.css ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ #ab_chart {
2
+ height: 120px;
3
+ }
css/style.css ADDED
@@ -0,0 +1 @@
 
1
+ div.icon32{background:url(../img/icon32.png) no-repeat;}div.postbox h3{cursor:default;}div.postbox:first-child div.inside{background:url(../img/icon200.png) no-repeat right bottom;}img#ab_icon{width:11px;height:9px;border:0;}.inside ul{margin:12px 6px;}.inside>ul{clear:both;width:460px;border:1px solid rgb(223,223,223);padding:6px 12px 1px;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;box-shadow:inset 0 1px 0 white;-moz-box-shadow:inset 0 1px 0 white;-webkit-box-shadow:inset 0 1px 0 white;}.inside ul li{padding:3px 0 2px;}.inside ul li ul{margin:10px 0 -6px 14px;height:1%;overflow:hidden;}.inside ul li .inact{display:none;}.inside ul li ul li{padding:0 4px 8px;font-size:11px;}.inside ul li ul li:first-child{margin:0 0 1px;}.inside ul li ul li select{width:100px;}.inside ul li .shift li{float:left;}.inside ul li .shift li label{margin:0 3px;}.inside ul li .shift li .code,.inside ul li .shift li .block{display:block;}input.small-text{width:40px;margin:-2px 0;}input.regular-text{width:160px;}input.maxi-text{width:350px;}
css/style.original.css ADDED
@@ -0,0 +1,78 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /* @group GUI */
2
+
3
+ div.icon32 {
4
+ background: url(../img/icon32.png) no-repeat;
5
+ }
6
+ div.postbox h3 {
7
+ cursor: default;
8
+ }
9
+ div.postbox:first-child div.inside {
10
+ background: url(../img/icon200.png) no-repeat right bottom;
11
+ }
12
+ img#ab_icon {
13
+ width: 11px;
14
+ height: 9px;
15
+ border: 0;
16
+ }
17
+
18
+ .inside ul {
19
+ margin: 12px 6px;
20
+ }
21
+ .inside > ul {
22
+ clear: both;
23
+ width: 460px;
24
+ border: 1px solid rgb(223, 223, 223);
25
+ padding: 6px 12px 1px;
26
+
27
+ border-radius: 3px;
28
+ -moz-border-radius: 3px;
29
+ -webkit-border-radius: 3px;
30
+
31
+ box-shadow: inset 0 1px 0 white;
32
+ -moz-box-shadow: inset 0 1px 0 white;
33
+ -webkit-box-shadow: inset 0 1px 0 white;
34
+ }
35
+ .inside ul li {
36
+ padding: 3px 0 2px;
37
+ }
38
+ .inside ul li ul {
39
+ margin: 10px 0 -6px 14px;
40
+ height: 1%;
41
+ overflow: hidden;
42
+ }
43
+ .inside ul li .inact {
44
+ display: none;
45
+ }
46
+ .inside ul li ul li {
47
+ padding: 0 4px 8px;
48
+ font-size: 11px;
49
+ }
50
+ .inside ul li ul li:first-child {
51
+ margin: 0 0 1px;
52
+ }
53
+ .inside ul li ul li select {
54
+ width: 100px;
55
+ }
56
+ .inside ul li .shift li {
57
+ float: left;
58
+ }
59
+ .inside ul li .shift li label {
60
+ margin: 0 3px;
61
+ }
62
+ .inside ul li .shift li .code,
63
+ .inside ul li .shift li .block {
64
+ display: block;
65
+ }
66
+
67
+ input.small-text {
68
+ width: 40px;
69
+ margin: -2px 0;
70
+ }
71
+ input.regular-text {
72
+ width: 160px;
73
+ }
74
+ input.maxi-text {
75
+ width: 350px;
76
+ }
77
+
78
+ /* @end group */
img/icon.png ADDED
Binary file
img/icon200.png ADDED
Binary file
img/icon32.png ADDED
Binary file
js/dashboard.js ADDED
@@ -0,0 +1,3 @@
 
 
 
1
+ google.load("visualization","1",{packages:["corechart"]});google.setOnLoadCallback(drawChart);
2
+ function drawChart(){var a,c=[],d=document.getElementById("ab_chart"),b=new google.visualization.DataTable;if(d&&antispambee.created.length){var e=antispambee.created.split(","),f=antispambee.count.split(",");for(a in e)c[a]=[e[a],parseInt(f[a],10)];b.addColumn("string","Date");b.addColumn("number","Spam");b.addRows(c);(new google.visualization.AreaChart(d)).draw(b,{width:parseInt(jQuery("#ab_chart").parent().width(),10),height:120,legend:"none",pointSize:6,lineWidth:3,gridlineColor:"#ececec",colors:["#3399CC"],
3
+ reverseCategories:!0,backgroundColor:"transparent",vAxis:{baselineColor:"transparent",textPosition:"in",textStyle:{color:"#8F8F8F",fontSize:10}},hAxis:{textStyle:{color:"#3399CC",fontSize:10}},chartArea:{width:"100%",height:"100%"}})}};
js/dashboard.original.js ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ google.load("visualization", "1", {packages:["corechart"]});
2
+ google.setOnLoadCallback(drawChart);
3
+
4
+ function drawChart() {
5
+ /* Init */
6
+ var id,
7
+ rows = [],
8
+ output = document.getElementById('ab_chart'),
9
+ data = new google.visualization.DataTable();
10
+
11
+ /* Leer? */
12
+ if ( !output || !antispambee.created.length ) {
13
+ return;
14
+ }
15
+
16
+ /* Extrahieren */
17
+ var created = antispambee.created.split(','),
18
+ count = antispambee.count.split(',');
19
+
20
+ /* Loopen */
21
+ for (id in created) {
22
+ rows[id] = [created[id], parseInt(count[id], 10)];
23
+ }
24
+
25
+ data.addColumn('string', 'Date');
26
+ data.addColumn('number', 'Spam');
27
+ data.addRows(rows);
28
+
29
+ var chart = new google.visualization.AreaChart(output);
30
+ chart.draw(
31
+ data,
32
+ {
33
+ width: parseInt(jQuery('#ab_chart').parent().width(), 10),
34
+ height: 120,
35
+ legend: 'none',
36
+ pointSize: 6,
37
+ lineWidth: 3,
38
+ gridlineColor: '#ececec',
39
+ colors:['#3399CC'],
40
+ reverseCategories: true,
41
+ backgroundColor: 'transparent',
42
+ vAxis: {
43
+ baselineColor: 'transparent',
44
+ textPosition: 'in',
45
+ textStyle: {
46
+ color: '#8F8F8F',
47
+ fontSize: 10
48
+ }
49
+ },
50
+ hAxis: {
51
+ textStyle: {
52
+ color: '#3399CC',
53
+ fontSize: 10
54
+ }
55
+ },
56
+ chartArea: {
57
+ width: "100%",
58
+ height: "100%"
59
+ }
60
+ }
61
+ );
62
+ }
js/script.js ADDED
@@ -0,0 +1 @@
 
1
+ jQuery(document).ready(function(a){function f(b){var c=a(b).parents("li").find(".shift");c.slideToggle("fast",function(){c.children().find(":input").attr("disabled",!a(b).attr("checked"))})}var d,e=["antispam_bee_flag_spam","antispam_bee_country_code","antispam_bee_honey_pot","antispam_bee_translate_api"];for(d in e)a("#"+e[d]).click(function(){f(this)})});
js/script.original.js ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ jQuery(document).ready(
2
+ function($) {
3
+ /* Init */
4
+ var ab_num, ab_obj = [
5
+ 'antispam_bee_flag_spam',
6
+ 'antispam_bee_country_code',
7
+ 'antispam_bee_honey_pot',
8
+ 'antispam_bee_translate_api'
9
+ ];
10
+
11
+ /* Checkboxen markieren */
12
+ function manage_options(checkbox) {
13
+ var obj = $(checkbox).parents('li').find('.shift');
14
+
15
+ obj.slideToggle(
16
+ 'fast',
17
+ function() {
18
+ obj.children().find(':input').attr('disabled', !$(checkbox).attr('checked'));
19
+ }
20
+ );
21
+ }
22
+
23
+ /* Event zuweisen */
24
+ for (ab_num in ab_obj) {
25
+ $('#' + ab_obj[ab_num]).click(
26
+ function() {
27
+ manage_options(this);
28
+ }
29
+ );
30
+ }
31
+ }
32
+ );
lang/antispam_bee-ca.mo ADDED
Binary file
lang/antispam_bee-ca.po ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Antispam Bee\n"
4
+ "POT-Creation-Date: \n"
5
+ "PO-Revision-Date: \n"
6
+ "Last-Translator: Sergej Müller\n"
7
+ "Language-Team: Sergej Müller\n"
8
+ "MIME-Version: 1.0\n"
9
+ "Content-Type: text/plain; charset=utf-8\n"
10
+ "Content-Transfer-Encoding: 8bit\n"
11
+ "X-Poedit-Language: Catalan\n"
12
+ "X-Poedit-Country: SPAIN\n"
13
+ "X-Poedit-SourceCharset: utf-8\n"
14
+ "X-Poedit-KeywordsList: __;_e\n"
15
+ "X-Poedit-Basepath: .\n"
16
+ "X-Poedit-SearchPath-0: .\n"
17
+
18
+ msgid "Mark as Spam, do not delete"
19
+ msgstr "Marca com Spam, no l'esborris."
20
+
21
+ msgid "Limit on"
22
+ msgstr "Limit on"
23
+
24
+ msgid "Spam will be automatically deleted after %s days"
25
+ msgstr "Spam serà automàticament esborrat després de %s dies"
26
+
27
+ msgid "Do not check trackbacks / pingbacks"
28
+ msgstr "No marquis vincles / pingbacks"
29
+
30
+ msgid "Hide the &quot;MARKED AS SPAM&quot; note"
31
+ msgstr "Amaga la nota &quot;MARCAT COM SPAM&quot;"
32
+
33
+ msgid "Last check"
34
+ msgstr "Últim"
35
+
36
+ msgid "About"
37
+ msgstr "Quant a"
38
+
39
+ msgid "requires at least WordPress 2.7"
40
+ msgstr "requires at least WordPress 2.7"
41
+
lang/antispam_bee-de_DE.mo ADDED
Binary file
lang/antispam_bee-de_DE.po ADDED
@@ -0,0 +1,152 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Antispam Bee\n"
4
+ "POT-Creation-Date: \n"
5
+ "PO-Revision-Date: \n"
6
+ "Last-Translator: Sergej Müller\n"
7
+ "Language-Team: Sergej Müller\n"
8
+ "MIME-Version: 1.0\n"
9
+ "Content-Type: text/plain; charset=utf-8\n"
10
+ "Content-Transfer-Encoding: 8bit\n"
11
+ "X-Poedit-Language: German\n"
12
+ "X-Poedit-Country: GERMANY\n"
13
+ "X-Poedit-SourceCharset: utf-8\n"
14
+ "X-Poedit-KeywordsList: __;_e\n"
15
+ "X-Poedit-Basepath: .\n"
16
+ "X-Poedit-SearchPath-0: .\n"
17
+
18
+ msgid "Mark as Spam, do not delete"
19
+ msgstr "Spam markieren, nicht löschen"
20
+
21
+ msgid "Limit on"
22
+ msgstr "Beschränken auf"
23
+
24
+ msgid "Spam will be automatically deleted after %s days"
25
+ msgstr "Spam nach %s Tagen automatisch löschen"
26
+
27
+ msgid "Send an admin email when new spam item incoming"
28
+ msgstr "Bei Neuzugängen via E-Mail benachrichtigen"
29
+
30
+ msgid "Do not check trackbacks / pingbacks"
31
+ msgstr "Track- und Pingbacks nicht prüfen"
32
+
33
+ msgid "Hide the &quot;MARKED AS SPAM&quot; note"
34
+ msgstr "Hinweis &quot;MARKED AS SPAM&quot; unterdrücken"
35
+
36
+ msgid "Display blocked comments count on the dashboard"
37
+ msgstr "Anzahl der Spamkommentare auf dem Dashboard zeigen"
38
+
39
+ msgid "Display statistics on the dashboard"
40
+ msgstr "Statistik auf dem Dashboard zeigen"
41
+
42
+ msgid "Comments are also used outside of posts and pages"
43
+ msgstr "Kommentare finden auch außerhalb von Beiträgen Verwendung"
44
+
45
+ msgid "Enable stricter inspection for incomming comments"
46
+ msgstr "Schärfere Prüfung für eingehende Kommentare anwenden"
47
+
48
+ msgid "Do not check if the comment author has already approved"
49
+ msgstr "Autoren mit bereits genehmigten Kommentaren vertrauen"
50
+
51
+ msgid "Comment marked as spam"
52
+ msgstr "Kommentar als Spam markiert"
53
+
54
+ msgid "New spam comment on your post"
55
+ msgstr "Neuer Spam-Kommentar zum Artikel"
56
+
57
+ msgid "Block comments and pings from specific countries"
58
+ msgstr "Kommentare und Pings aus bestimmten Ländern verhindern"
59
+
60
+ msgid "Search comment spammers in the Project Honey Pot"
61
+ msgstr "Project Honey Pot als Spammer-Quelle heranziehen"
62
+
63
+ msgid "Consider comments which are already marked as spam"
64
+ msgstr "Bereits als Spam markierte Kommentare berücksichtigen"
65
+
66
+ msgid "Allow comments only in certain language"
67
+ msgstr "Kommentare nur in bestimmter Sprache zulassen"
68
+
69
+ msgid "Language"
70
+ msgstr "Sprache"
71
+
72
+ msgid "English"
73
+ msgstr "Englisch"
74
+
75
+ msgid "German"
76
+ msgstr "Deutsch"
77
+
78
+ msgid "get free"
79
+ msgstr "anfordern"
80
+
81
+ msgid "Spam Reason"
82
+ msgstr "Spamgrund"
83
+
84
+ msgid "Empty Data"
85
+ msgstr "Leere Daten"
86
+
87
+ msgid "CSS Hack"
88
+ msgstr "CSS Hack"
89
+
90
+ msgid "Server IP"
91
+ msgstr "Server IP"
92
+
93
+ msgid "Spam IP"
94
+ msgstr "Spam IP"
95
+
96
+ msgid "Comment Language"
97
+ msgstr "Kommentarsprache"
98
+
99
+ msgid "Country Check"
100
+ msgstr "Ländercode"
101
+
102
+ msgid "Honey Pot"
103
+ msgstr "Honey Pot"
104
+
105
+ msgid "Blacklist"
106
+ msgstr "Blacklist"
107
+
108
+ msgid "Whitelist"
109
+ msgstr "Whitelist"
110
+
111
+ msgid "iso codes"
112
+ msgstr "ISO Codes"
113
+
114
+ msgid "Approve it"
115
+ msgstr "Freigeben"
116
+
117
+ msgid "Delete it"
118
+ msgstr "Löschen"
119
+
120
+ msgid "Trash it"
121
+ msgstr "In Papierkorb"
122
+
123
+ msgid "Spam list"
124
+ msgstr "Spamliste"
125
+
126
+ msgid "Notify message by Antispam Bee"
127
+ msgstr "Benachrichtigung von Antispam Bee"
128
+
129
+ msgid "Content removed by Antispam Bee"
130
+ msgstr "Inhalt entfernt von Antispam Bee"
131
+
132
+ msgid "or"
133
+ msgstr "oder"
134
+
135
+ msgid "Last check"
136
+ msgstr "Zuletzt"
137
+
138
+ msgid "requires at least WordPress 2.8"
139
+ msgstr "benötigt WordPress 2.8"
140
+
141
+ msgid "Blocked"
142
+ msgstr "Blockiert"
143
+
144
+ msgid "Today"
145
+ msgstr "Heute"
146
+
147
+ msgid "Easy and extremely productive spam-fighting plugin with many sophisticated solutions. Includes protection again trackback spam."
148
+ msgstr "Simples, äußerst effektives Plugin zur Bekämpfung von Spam-Kommentaren. Datenschutzkonform, funktionsreich und unkompliziert."
149
+
150
+ msgid "http://antispambee.com"
151
+ msgstr "http://antispambee.de"
152
+
lang/antispam_bee-es_ES.mo ADDED
Binary file
lang/antispam_bee-es_ES.po ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Antispam Bee\n"
4
+ "POT-Creation-Date: \n"
5
+ "PO-Revision-Date: \n"
6
+ "Last-Translator: Sergej Müller\n"
7
+ "Language-Team: Sergej Müller\n"
8
+ "MIME-Version: 1.0\n"
9
+ "Content-Type: text/plain; charset=utf-8\n"
10
+ "Content-Transfer-Encoding: 8bit\n"
11
+ "X-Poedit-Language: Spanish\n"
12
+ "X-Poedit-Country: SPAIN\n"
13
+ "X-Poedit-SourceCharset: utf-8\n"
14
+ "X-Poedit-KeywordsList: __;_e\n"
15
+ "X-Poedit-Basepath: .\n"
16
+ "X-Poedit-SearchPath-0: .\n"
17
+
18
+ msgid "Mark as Spam, do not delete"
19
+ msgstr "Marcar com Spam, no borrar."
20
+
21
+ msgid "Limit on"
22
+ msgstr "Limit on"
23
+
24
+ msgid "Spam will be automatically deleted after %s days"
25
+ msgstr "El Spam será automáticamente eliminado después de %s días"
26
+
27
+ msgid "Do not check trackbacks / pingbacks"
28
+ msgstr "No marcar vínculos / pingbacks"
29
+
30
+ msgid "Hide the &quot;MARKED AS SPAM&quot; note"
31
+ msgstr "Esconder la nota &quot;MARCADO COMO SPAM&quot;"
32
+
33
+ msgid "Last check"
34
+ msgstr "Último"
35
+
36
+ msgid "About"
37
+ msgstr "Acerca de"
38
+
39
+ msgid "requires at least WordPress 2.7"
40
+ msgstr "requires at least WordPress 2.7"
41
+
lang/antispam_bee-fr_FR.mo ADDED
Binary file
lang/antispam_bee-fr_FR.po ADDED
@@ -0,0 +1,168 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Antispam Bee\n"
4
+ "POT-Creation-Date: \n"
5
+ "PO-Revision-Date: \n"
6
+ "Last-Translator: Sergej Müller\n"
7
+ "Language-Team: Sergej Müller\n"
8
+ "MIME-Version: 1.0\n"
9
+ "Content-Type: text/plain; charset=utf-8\n"
10
+ "Content-Transfer-Encoding: 8bit\n"
11
+ "X-Poedit-Language: German\n"
12
+ "X-Poedit-Country: GERMANY\n"
13
+ "X-Poedit-SourceCharset: utf-8\n"
14
+ "X-Poedit-KeywordsList: __;_e\n"
15
+ "X-Poedit-Basepath: .\n"
16
+ "X-Poedit-SearchPath-0: .\n"
17
+
18
+ msgid "Mark as Spam, do not delete"
19
+ msgstr "Bloquer les éléments indésirables sans les supprimer"
20
+
21
+ msgid "Limit on"
22
+ msgstr "Applicable aux"
23
+
24
+ msgid "Spam will be automatically deleted after %s days"
25
+ msgstr "Purger au bout de %s jours"
26
+
27
+ msgid "Send an admin email when new spam item incoming"
28
+ msgstr "Avertir l'administrateur par email dès l'arrivée de nouveaux éléments"
29
+
30
+ msgid "Do not check trackbacks / pingbacks"
31
+ msgstr "Ne vérifier ni les pings ni les rétroliens"
32
+
33
+ msgid "Hide the &quot;MARKED AS SPAM&quot; note"
34
+ msgstr "Masquer le label &quot;indésirable&quot;"
35
+
36
+ msgid "Display blocked comments count on the dashboard"
37
+ msgstr "Afficher le nombre d'éléments bloqués sur le tableau de bord"
38
+
39
+ msgid "Display statistics on the dashboard"
40
+ msgstr "Afficher les statistiques sur le tableau de bord"
41
+
42
+ msgid "Comments are also used outside of posts and pages"
43
+ msgstr "Les commentaires sont aussi utilisés en dehors des articles et des pages"
44
+
45
+ msgid "Enable stricter inspection for incomming comments"
46
+ msgstr "Activer le filtrage avancé des commentaires"
47
+
48
+ msgid "Do not check if the comment author has already approved"
49
+ msgstr "Faire confiance aux utilisateurs ayant déjà des commentaires approuvés."
50
+
51
+ msgid "Comment marked as spam"
52
+ msgstr "Labellisé indésirable"
53
+
54
+ msgid "New spam comment on your post"
55
+ msgstr "Nouveau commentaire indésirable sur votre article"
56
+
57
+ msgid "Block comments and pings from specific countries"
58
+ msgstr "Bloquer les commentaires et les pings en provenance de certains pays"
59
+
60
+ msgid "Search comment spammers in the Project Honey Pot"
61
+ msgstr "Utiliser la base de données de spammeurs du \"Projet Pot de Miel\""
62
+
63
+ msgid "Consider comments which are already marked as spam"
64
+ msgstr "Prendre en compte les commentaires déjà marqués indésirables"
65
+
66
+ msgid "Allow comments only in certain language"
67
+ msgstr "N'autoriser que les commentaires rédigés dans une lanque"
68
+
69
+ msgid "Language"
70
+ msgstr "Langue"
71
+
72
+ msgid "English"
73
+ msgstr "Anglais"
74
+
75
+ msgid "German"
76
+ msgstr "Allemand"
77
+
78
+ msgid "get free"
79
+ msgstr "En obtenir une gratuitement"
80
+
81
+ msgid "Spam Reason"
82
+ msgstr "Raison du blocage"
83
+
84
+ msgid "Empty Data"
85
+ msgstr "Champ vide"
86
+
87
+ msgid "CSS Hack"
88
+ msgstr "Hack CSS"
89
+
90
+ msgid "Server IP"
91
+ msgstr "IP du serveur"
92
+
93
+ msgid "Spam IP"
94
+ msgstr "IP du spammeur"
95
+
96
+ msgid "Comment Language"
97
+ msgstr "Commentaire rédigé en"
98
+
99
+ msgid "Country Check"
100
+ msgstr "Vérfication du pays"
101
+
102
+ msgid "Honey Pot"
103
+ msgstr "Pot de miel"
104
+
105
+ msgid "Blacklist"
106
+ msgstr "Liste noire"
107
+
108
+ msgid "Whitelist"
109
+ msgstr "Liste blanche"
110
+
111
+ msgid "iso codes"
112
+ msgstr "Codes ISO"
113
+
114
+ msgid "Approve it"
115
+ msgstr "Approuver"
116
+
117
+ msgid "Delete it"
118
+ msgstr "Supprimer"
119
+
120
+ msgid "Trash it"
121
+ msgstr "Corbeille"
122
+
123
+ msgid "Spam list"
124
+ msgstr "Liste des indésirables"
125
+
126
+ msgid "Notify message by Antispam Bee"
127
+ msgstr "Notification Antispam Bee"
128
+
129
+ msgid "Content removed by Antispam Bee"
130
+ msgstr "Texte effacé par Antispam Bee"
131
+
132
+ msgid "or"
133
+ msgstr "ou"
134
+
135
+ msgid "Last check"
136
+ msgstr "Dernière vérification"
137
+
138
+ msgid "About"
139
+ msgstr "À propos"
140
+
141
+ msgid "requires at least WordPress 2.8"
142
+ msgstr "Nécessite une version de WordPress suppérieure à 2.8"
143
+
144
+ msgid "Blocked"
145
+ msgstr "Bloqué"
146
+
147
+ msgid "Learn about wpSEO"
148
+ msgstr "Découvrir wpSEO"
149
+
150
+ msgid "Follow on Twitter"
151
+ msgstr "Suivre sur Twitter"
152
+
153
+ msgid "by"
154
+ msgstr "par"
155
+
156
+ #, fuzzy
157
+ msgid "ago"
158
+ msgstr ""
159
+
160
+ msgid "Today"
161
+ msgstr "Aujourd'hui"
162
+
163
+ msgid "Easy and extremely productive spam-fighting plugin with many sophisticated solutions. Includes protection again trackback spam."
164
+ msgstr "Une plugin anti-spam simple et excessivement efficace intégrant des méthodes sophistiquées. Protège aussi contre les spams de rétroliens"
165
+
166
+ msgid "http://antispambee.com"
167
+ msgstr "http://antispambee.com"
168
+
lang/antispam_bee-hu-HU.mo ADDED
Binary file
lang/antispam_bee-hu-HU.po ADDED
@@ -0,0 +1,137 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Antispam Bee\n"
4
+ "POT-Creation-Date: \n"
5
+ "PO-Revision-Date: \n"
6
+ "Last-Translator: Feriman <info@feriman.com>\n"
7
+ "Language-Team: Sergej Müller\n"
8
+ "MIME-Version: 1.0\n"
9
+ "Content-Type: text/plain; charset=utf-8\n"
10
+ "Content-Transfer-Encoding: 8bit\n"
11
+ "X-Poedit-Language: German\n"
12
+ "X-Poedit-Country: GERMANY\n"
13
+ "X-Poedit-SourceCharset: utf-8\n"
14
+ "X-Poedit-KeywordsList: __;_e\n"
15
+ "X-Poedit-Basepath: .\n"
16
+ "X-Poedit-SearchPath-0: .\n"
17
+
18
+ msgid "Mark as Spam, do not delete"
19
+ msgstr "Spamnal jelölés, ne töröld"
20
+
21
+ msgid "Limit on"
22
+ msgstr "Korlátozás"
23
+
24
+ msgid "Spam will be automatically deleted after %s days"
25
+ msgstr "Spamnak jelölés automatikusan, majd törlés % nap után."
26
+
27
+ msgid "Send an admin email when new spam item incoming"
28
+ msgstr "Email küldése az admin címre, ha új spam érkezik"
29
+
30
+ msgid "Do not check trackbacks / pingbacks"
31
+ msgstr "Ne ellenőrizd a track- és pingbackot"
32
+
33
+ msgid "Hide the &quot;MARKED AS SPAM&quot; note"
34
+ msgstr "Rejtsd el a &quot;SPAMNAK JELÖLT&quot; szöveget"
35
+
36
+ msgid "Display blocked comments count on the dashboard"
37
+ msgstr "Jelenítsd meg a blokkolt kommenteket a Vezérlőpulton"
38
+
39
+ msgid "Comments are also used outside of posts and pages"
40
+ msgstr "Használd a kommenetket a bejegyzéseken és az oldalakon kívül is"
41
+
42
+ msgid "Enable stricter inspection for incomming comments"
43
+ msgstr "Szigorúbb komment ellenőrzések bekapcsolása"
44
+
45
+ msgid "Do not check if the comment author has already approved"
46
+ msgstr "Ne ellenőrizd, ami már jóvá van hagyva"
47
+
48
+ msgid "Comment marked as spam"
49
+ msgstr "Spamnak jelölés"
50
+
51
+ msgid "New spam comment on your post"
52
+ msgstr "Új spam komment a bejegyzésedben"
53
+
54
+ msgid "Block comments and pings from specific countries"
55
+ msgstr "Blokkold a hozzászólásokat az alábbi országokból"
56
+
57
+ msgid "Search comment spammers in the Project Honey Pot"
58
+ msgstr "Keresd a komment spammelőket a Project Honey Pot-ban"
59
+
60
+ msgid "get free"
61
+ msgstr "ingyenes"
62
+
63
+ msgid "Spam Reason"
64
+ msgstr "Spam oka"
65
+
66
+ msgid "Empty Data"
67
+ msgstr "Üres adat"
68
+
69
+ msgid "CSS Hack"
70
+ msgstr "CSS módosítás"
71
+
72
+ msgid "Server IP"
73
+ msgstr "Szerver IP"
74
+
75
+ msgid "Country Check"
76
+ msgstr "Ország ellenőrzése"
77
+
78
+ msgid "Honey Pot"
79
+ msgstr "Honey Pot"
80
+
81
+ msgid "Blacklist"
82
+ msgstr "Feketelista"
83
+
84
+ msgid "Whitelist"
85
+ msgstr "Fehérlista"
86
+
87
+ msgid "iso codes"
88
+ msgstr "ISO kódok"
89
+
90
+ msgid "IP Locator"
91
+ msgstr "IP Lokátor"
92
+
93
+ msgid "Approve it"
94
+ msgstr "Jóváhagy"
95
+
96
+ msgid "Delete it"
97
+ msgstr "Töröld"
98
+
99
+ msgid "Trash it"
100
+ msgstr "Kukába"
101
+
102
+ msgid "Spam list"
103
+ msgstr "Spam lista"
104
+
105
+ msgid "Notify message by Antispam Bee"
106
+ msgstr "Értesítés a Antispam Bee-nek"
107
+
108
+ msgid "http://antispambee.com"
109
+ msgstr "http://antispambee.com"
110
+
111
+ msgid "or"
112
+ msgstr "vagy"
113
+
114
+ msgid "Last check"
115
+ msgstr "Utolsó ellenőrzés"
116
+
117
+ msgid "About"
118
+ msgstr "Információ"
119
+
120
+ msgid "requires at least WordPress 2.7"
121
+ msgstr "Ajánlott WordPress 2.7 vagy újabb"
122
+
123
+ msgid "Blocked"
124
+ msgstr "Blokkolt"
125
+
126
+ msgid "Learn about wpSEO"
127
+ msgstr "Tudj meg többet: wpSEO"
128
+
129
+ msgid "Follow on Twitter"
130
+ msgstr "Kövess Twitteren"
131
+
132
+ msgid "by"
133
+ msgstr "által"
134
+
135
+ msgid "Easy and extremely productive spam-fighting plugin with many sophisticated solutions. Includes protection again trackback spam."
136
+ msgstr "Könnyű és rendkívül hatékony spamszűrő plugin sok kifinomult megoldással. Magában foglalja a trackback védelmet is."
137
+
lang/antispam_bee-it_IT.mo ADDED
Binary file
lang/antispam_bee-it_IT.po ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Antispam Bee\n"
4
+ "POT-Creation-Date: \n"
5
+ "PO-Revision-Date: \n"
6
+ "Last-Translator: Sergej Müller\n"
7
+ "Language-Team: Sergej Müller\n"
8
+ "MIME-Version: 1.0\n"
9
+ "Content-Type: text/plain; charset=utf-8\n"
10
+ "Content-Transfer-Encoding: 8bit\n"
11
+ "X-Poedit-Language: Italian\n"
12
+ "X-Poedit-Country: ITALY\n"
13
+ "X-Poedit-SourceCharset: utf-8\n"
14
+ "X-Poedit-KeywordsList: __;_e\n"
15
+ "X-Poedit-Basepath: .\n"
16
+ "X-Poedit-SearchPath-0: .\n"
17
+
18
+ msgid "Mark as Spam, do not delete"
19
+ msgstr "Segnala come Spam, non eliminare"
20
+
21
+ msgid "Limit on"
22
+ msgstr "Limit on"
23
+
24
+ msgid "Spam will be automatically deleted after %s days"
25
+ msgstr "I messaggi contrassegnati come spam verranno cancellati automaticamente dopo %s giorni"
26
+
27
+ msgid "Do not check trackbacks / pingbacks"
28
+ msgstr "Non controllare i trackback / pingback"
29
+
30
+ msgid "Hide the &quot;MARKED FOR SPAM&quot; note"
31
+ msgstr "Nascondi la nota &quot;MARKED FOR SPAM&quot;"
32
+
33
+ msgid "Last check"
34
+ msgstr "Ultimo"
35
+
36
+ msgid "About"
37
+ msgstr "Info"
38
+
39
+ msgid "requires at least WordPress 2.7"
40
+ msgstr "requires at least WordPress 2.7"
41
+
lang/antispam_bee-pl_PL.mo ADDED
Binary file
lang/antispam_bee-pl_PL.po ADDED
@@ -0,0 +1,232 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Antispam Bee v1.7\n"
4
+ "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: \n"
6
+ "PO-Revision-Date: 2010-06-09 10:34+0100\n"
7
+ "Last-Translator: LeXuS <lexus@intrakardial.de>\n"
8
+ "Language-Team: LeXuS <lexus@intrakardial.de>\n"
9
+ "MIME-Version: 1.0\n"
10
+ "Content-Type: text/plain; charset=UTF-8\n"
11
+ "Content-Transfer-Encoding: 8bit\n"
12
+ "Plural-Forms: nplurals=2; plural=n != 1;\n"
13
+ "X-Poedit-Language: Polish\n"
14
+ "X-Poedit-Country: POLAND\n"
15
+ "X-Poedit-SourceCharset: utf-8\n"
16
+ "X-Poedit-KeywordsList: __;_e;__ngettext:1,2;_n:1,2;__ngettext_noop:1,2;_n_noop:1,2;_c,_nc:4c,1,2;_x:1,2c;_nx:4c,1,2;_nx_noop:4c,1,2\n"
17
+ "X-Poedit-Basepath: ../\n"
18
+ "X-Textdomain-Support: yes\n"
19
+ "X-Poedit-SearchPath-0: .\n"
20
+
21
+ #: antispam_bee.php:198
22
+ #: antispam_bee.php:214
23
+ #: antispam_bee.php:851
24
+ msgid "Settings"
25
+ msgstr ""
26
+
27
+ #@ antispam_bee
28
+ #: antispam_bee.php:409
29
+ #: antispam_bee.php:419
30
+ msgid "Blocked"
31
+ msgstr "Zablokowane"
32
+
33
+ #@ antispam_bee
34
+ #: antispam_bee.php:428
35
+ msgid "requires at least WordPress 2.7"
36
+ msgstr "wymaga przynajmniej WordPress 2.7"
37
+
38
+ #@ antispam_bee
39
+ #: antispam_bee.php:436
40
+ msgid "by"
41
+ msgstr "przez"
42
+
43
+ #@ antispam_bee
44
+ #: antispam_bee.php:437
45
+ msgid "Follow on Twitter"
46
+ msgstr "Śledź na Twitterze"
47
+
48
+ #@ antispam_bee
49
+ #: antispam_bee.php:439
50
+ msgid "Learn about wpSEO"
51
+ msgstr "Dowiedz się więcej o wpSEO"
52
+
53
+ #@ antispam_bee
54
+ #: antispam_bee.php:683
55
+ msgid "Comment marked as spam"
56
+ msgstr "Komentarz zaznaczony jako spam"
57
+
58
+ #@ antispam_bee
59
+ #: antispam_bee.php:687
60
+ msgid "New spam comment on your post"
61
+ msgstr "Nowy komentarz spam na twoim poście"
62
+
63
+ #: antispam_bee.php:691
64
+ msgid "Author"
65
+ msgstr ""
66
+
67
+ #: antispam_bee.php:695
68
+ #, php-format
69
+ msgid "%s: %s\\r\n"
70
+ msgstr ""
71
+
72
+ #: antispam_bee.php:696
73
+ msgid "URL"
74
+ msgstr ""
75
+
76
+ #: antispam_bee.php:700
77
+ msgid "IP Locator"
78
+ msgstr ""
79
+
80
+ #@ antispam_bee
81
+ #: antispam_bee.php:704
82
+ msgid "Spam Reason"
83
+ msgstr "Powód spamu"
84
+
85
+ #@ antispam_bee
86
+ #: antispam_bee.php:713
87
+ msgid "Trash it"
88
+ msgstr "Do śmieci"
89
+
90
+ #@ antispam_bee
91
+ #: antispam_bee.php:719
92
+ msgid "Delete it"
93
+ msgstr "Usuń"
94
+
95
+ #@ antispam_bee
96
+ #: antispam_bee.php:725
97
+ msgid "Approve it"
98
+ msgstr "Zaakceptuj"
99
+
100
+ #@ antispam_bee
101
+ #: antispam_bee.php:729
102
+ msgid "Spam list"
103
+ msgstr "Lista Spamu"
104
+
105
+ #@ antispam_bee
106
+ #: antispam_bee.php:733
107
+ msgid "Notify message by Antispam Bee"
108
+ msgstr "Zawiadomienie przez Antispam Bee"
109
+
110
+ #@ antispam_bee
111
+ #: antispam_bee.php:734
112
+ msgid "http://antispambee.com"
113
+ msgstr "http://antispambee.com"
114
+
115
+ #: antispam_bee.php:836
116
+ msgid "Settings saved."
117
+ msgstr ""
118
+
119
+ #@ antispam_bee
120
+ #: antispam_bee.php:859
121
+ msgid "Mark as Spam, do not delete"
122
+ msgstr "Oznacz jako spam, nie usuwaj"
123
+
124
+ #@ antispam_bee
125
+ #: antispam_bee.php:865
126
+ msgid "Limit on"
127
+ msgstr "Ogranicz na"
128
+
129
+ #: antispam_bee.php:865
130
+ msgid "Comments"
131
+ msgstr ""
132
+
133
+ #: antispam_bee.php:865
134
+ msgid "Pings"
135
+ msgstr ""
136
+
137
+ #@ antispam_bee
138
+ #: antispam_bee.php:874
139
+ #, php-format
140
+ msgid "Spam will be automatically deleted after %s days"
141
+ msgstr "Spam będzie automatycznie usuwany po %s dniach"
142
+
143
+ #@ antispam_bee
144
+ #: antispam_bee.php:878
145
+ msgid "Last check"
146
+ msgstr "Ostatnia kontrola"
147
+
148
+ #@ antispam_bee
149
+ #: antispam_bee.php:886
150
+ msgid "Hide the &quot;MARKED AS SPAM&quot; note"
151
+ msgstr "Ukryj &quot;ZAZNACZONE JAKO SPAM&quot; notatkę"
152
+
153
+ #@ antispam_bee
154
+ #: antispam_bee.php:892
155
+ msgid "Send an admin email when new spam item incoming"
156
+ msgstr "Wyślij do mnie e-mail o nowo przybytym spamie"
157
+
158
+ #@ antispam_bee
159
+ #: antispam_bee.php:901
160
+ msgid "Block comments and pings from specific countries"
161
+ msgstr "Blokuj komentarze i pingi z poszczególnych krajów"
162
+
163
+ #@ antispam_bee
164
+ #: antispam_bee.php:907
165
+ msgid "Blacklist"
166
+ msgstr "Czarna lista"
167
+
168
+ #@ antispam_bee
169
+ #: antispam_bee.php:907
170
+ #: antispam_bee.php:918
171
+ msgid "iso codes"
172
+ msgstr "kody ISO"
173
+
174
+ #@ antispam_bee
175
+ #: antispam_bee.php:914
176
+ msgid "or"
177
+ msgstr "lub"
178
+
179
+ #@ antispam_bee
180
+ #: antispam_bee.php:918
181
+ msgid "Whitelist"
182
+ msgstr "Biała lista"
183
+
184
+ #@ antispam_bee
185
+ #: antispam_bee.php:928
186
+ msgid "Search comment spammers in the Project Honey Pot"
187
+ msgstr "Szukaj spamerów komentarzy w Project Honey Pot"
188
+
189
+ #@ antispam_bee
190
+ #: antispam_bee.php:934
191
+ msgid "API Key"
192
+ msgstr "Klucz API"
193
+
194
+ #@ antispam_bee
195
+ #: antispam_bee.php:934
196
+ msgid "get free"
197
+ msgstr "otrzymaj za darmo"
198
+
199
+ #@ antispam_bee
200
+ #: antispam_bee.php:943
201
+ msgid "Do not check trackbacks / pingbacks"
202
+ msgstr "Nie sprawdzaj Trackbacków / Pingbacków"
203
+
204
+ #@ antispam_bee
205
+ #: antispam_bee.php:949
206
+ msgid "Display blocked comments count on the dashboard"
207
+ msgstr "Wyświetl ilość zablokowanych komentarzy na tablicy informacyjnej"
208
+
209
+ #@ antispam_bee
210
+ #: antispam_bee.php:955
211
+ msgid "Enable stricter inspection for incomming comments"
212
+ msgstr "Umożliw bardziej rygorystyczną kontrolę dla przybywających komentarzy"
213
+
214
+ #@ antispam_bee
215
+ #: antispam_bee.php:961
216
+ msgid "Do not check if the comment author has already approved"
217
+ msgstr "Nie sprawdzaj, jeśli autor komentarza był już raz zaakceptowany"
218
+
219
+ #@ antispam_bee
220
+ #: antispam_bee.php:967
221
+ msgid "Comments are also used outside of posts and pages"
222
+ msgstr "Komentarze są również wykorzystywane poza postami i na innych stronach"
223
+
224
+ #: antispam_bee.php:972
225
+ msgid "Save Changes"
226
+ msgstr ""
227
+
228
+ #@ antispam_bee
229
+ #: antispam_bee.php:978
230
+ msgid "About"
231
+ msgstr "O"
232
+
lang/antispam_bee-pt_BR.mo ADDED
Binary file
lang/antispam_bee-pt_BR.po ADDED
@@ -0,0 +1,124 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Antispam Bee v1.5\n"
4
+ "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2010-03-12 17:59-0300\n"
6
+ "PO-Revision-Date: \n"
7
+ "Last-Translator: Sergej Müller\n"
8
+ "Language-Team: Fernando Lopes <contato@fernandolopes.com.br>\n"
9
+ "MIME-Version: 1.0\n"
10
+ "Content-Type: text/plain; charset=UTF-8\n"
11
+ "Content-Transfer-Encoding: 8bit\n"
12
+ "X-Poedit-Language: Portuguese\n"
13
+ "X-Poedit-Country: BRAZIL\n"
14
+ "X-Poedit-SourceCharset: utf-8\n"
15
+ "X-Poedit-KeywordsList: __;_e\n"
16
+ "X-Poedit-Basepath: .\n"
17
+
18
+ #: D:\www\wordpress\wp-content\plugins\antispam-bee/antispam_bee.php:172
19
+ #: D:\www\wordpress\wp-content\plugins\antispam-bee/antispam_bee.php:188
20
+ #: D:\www\wordpress\wp-content\plugins\antispam-bee/antispam_bee.php:622
21
+ msgid "Settings"
22
+ msgstr "Configurações"
23
+
24
+ #: D:\www\wordpress\wp-content\plugins\antispam-bee/antispam_bee.php:350
25
+ msgid "Blocked"
26
+ msgstr "Bloqueado"
27
+
28
+ #: D:\www\wordpress\wp-content\plugins\antispam-bee/antispam_bee.php:356
29
+ msgid "requires at least WordPress 2.3"
30
+ msgstr "necessita de pelo menos WordPress v2.3 "
31
+
32
+ #: D:\www\wordpress\wp-content\plugins\antispam-bee/antispam_bee.php:363
33
+ msgid "Plugin"
34
+ msgstr "Plugin"
35
+
36
+ #: D:\www\wordpress\wp-content\plugins\antispam-bee/antispam_bee.php:365
37
+ msgid "Version"
38
+ msgstr "Versão"
39
+
40
+ #: D:\www\wordpress\wp-content\plugins\antispam-bee/antispam_bee.php:367
41
+ msgid "Author"
42
+ msgstr "Autor"
43
+
44
+ #: D:\www\wordpress\wp-content\plugins\antispam-bee/antispam_bee.php:368
45
+ msgid "Follow on Twitter"
46
+ msgstr "Seguir no Twitter"
47
+
48
+ #: D:\www\wordpress\wp-content\plugins\antispam-bee/antispam_bee.php:370
49
+ msgid "Learn about wpSEO"
50
+ msgstr "Saiba mais sobre wpSEO"
51
+
52
+ #: D:\www\wordpress\wp-content\plugins\antispam-bee/antispam_bee.php:505
53
+ msgid "Comment marked as spam"
54
+ msgstr "Comentário marcados como spam"
55
+
56
+ #: D:\www\wordpress\wp-content\plugins\antispam-bee/antispam_bee.php:510
57
+ msgid "Spam list"
58
+ msgstr "Lista de spam"
59
+
60
+ #: D:\www\wordpress\wp-content\plugins\antispam-bee/antispam_bee.php:605
61
+ msgid "Settings saved."
62
+ msgstr "Configurações salvas."
63
+
64
+ #: D:\www\wordpress\wp-content\plugins\antispam-bee/antispam_bee.php:630
65
+ msgid "Mark as Spam, do not delete"
66
+ msgstr "Marcar como Spam, mas não excluir"
67
+
68
+ #: D:\www\wordpress\wp-content\plugins\antispam-bee/antispam_bee.php:637
69
+ msgid "Limit on"
70
+ msgstr "Limitar a"
71
+
72
+ #: D:\www\wordpress\wp-content\plugins\antispam-bee/antispam_bee.php:637
73
+ msgid "Comments"
74
+ msgstr "Comentários"
75
+
76
+ #: D:\www\wordpress\wp-content\plugins\antispam-bee/antispam_bee.php:637
77
+ msgid "Pings"
78
+ msgstr "Pings"
79
+
80
+ #: D:\www\wordpress\wp-content\plugins\antispam-bee/antispam_bee.php:648
81
+ #, php-format
82
+ msgid "Spam will be automatically deleted after %s days"
83
+ msgstr "Spam será automaticamente excluído após %s dias"
84
+
85
+ #: D:\www\wordpress\wp-content\plugins\antispam-bee/antispam_bee.php:649
86
+ msgid "Last check"
87
+ msgstr "Último"
88
+
89
+ #: D:\www\wordpress\wp-content\plugins\antispam-bee/antispam_bee.php:656
90
+ msgid "Hide the &quot;MARKED AS SPAM&quot; note"
91
+ msgstr "Ocultar a nota &quot;MARCADO COMO SPAM&quot;"
92
+
93
+ #: D:\www\wordpress\wp-content\plugins\antispam-bee/antispam_bee.php:664
94
+ msgid "Send an admin email when new spam item incoming"
95
+ msgstr "Enviar ao administrador um email quando receber novo spam"
96
+
97
+ #: D:\www\wordpress\wp-content\plugins\antispam-bee/antispam_bee.php:674
98
+ msgid "Do not check trackbacks / pingbacks"
99
+ msgstr "Não verificar trackbacks / pingbacks"
100
+
101
+ #: D:\www\wordpress\wp-content\plugins\antispam-bee/antispam_bee.php:683
102
+ msgid "Display blocked comments count on the dashboard"
103
+ msgstr "Exibir contagem de comentários bloqueados no Painel"
104
+
105
+ #: D:\www\wordpress\wp-content\plugins\antispam-bee/antispam_bee.php:692
106
+ msgid "Enable stricter inspection for incomming comments"
107
+ msgstr "Ativar inspeção rigorosa nos comentários recebidos"
108
+
109
+ #: D:\www\wordpress\wp-content\plugins\antispam-bee/antispam_bee.php:700
110
+ msgid "Do not check if the author has already commented and approved"
111
+ msgstr "Não verificar se o autor já comentou e foi aprovado"
112
+
113
+ #: D:\www\wordpress\wp-content\plugins\antispam-bee/antispam_bee.php:708
114
+ msgid "Comments are also used outside of posts and pages"
115
+ msgstr "Comentários também são usados fora dos posts e páginas"
116
+
117
+ #: D:\www\wordpress\wp-content\plugins\antispam-bee/antispam_bee.php:714
118
+ msgid "Save Changes"
119
+ msgstr "Salvar Mudanças"
120
+
121
+ #: D:\www\wordpress\wp-content\plugins\antispam-bee/antispam_bee.php:720
122
+ msgid "About"
123
+ msgstr "Sobre"
124
+
lang/antispam_bee-ro_RO.mo ADDED
Binary file
lang/antispam_bee-ro_RO.po ADDED
@@ -0,0 +1,281 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: AntispamBee for WordPress\n"
4
+ "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2010-08-16 20:53+0200\n"
6
+ "PO-Revision-Date: \n"
7
+ "Last-Translator: Sergej Müller\n"
8
+ "Language-Team: Cipri Palamariu <cheeprey@cheeprey.ro>\n"
9
+ "MIME-Version: 1.0\n"
10
+ "Content-Type: text/plain; charset=UTF-8\n"
11
+ "Content-Transfer-Encoding: 8bit\n"
12
+ "X-Poedit-KeywordsList: __;_e\n"
13
+ "X-Poedit-Basepath: .\n"
14
+ "X-Poedit-Language: Romanian\n"
15
+ "X-Poedit-Country: ROMANIA\n"
16
+ "X-Poedit-SourceCharset: utf-8\n"
17
+
18
+ #: C:\Documents
19
+ #: and
20
+ #: Settings\Administrator\Desktop\quotes-collection\languages\antispam-bee/antispam_bee.php:198
21
+ #: Settings\Administrator\Desktop\quotes-collection\languages\antispam-bee/antispam_bee.php:214
22
+ #: Settings\Administrator\Desktop\quotes-collection\languages\antispam-bee/antispam_bee.php:851
23
+ msgid "Settings"
24
+ msgstr "Setări"
25
+
26
+ #: C:\Documents
27
+ #: and
28
+ #: Settings\Administrator\Desktop\quotes-collection\languages\antispam-bee/antispam_bee.php:409
29
+ #: Settings\Administrator\Desktop\quotes-collection\languages\antispam-bee/antispam_bee.php:419
30
+ msgid "Blocked"
31
+ msgstr "Blocat"
32
+
33
+ #: C:\Documents
34
+ #: and
35
+ #: Settings\Administrator\Desktop\quotes-collection\languages\antispam-bee/antispam_bee.php:428
36
+ msgid "requires at least WordPress 2.7"
37
+ msgstr "necesită WordPress 2.7 sau mai recent"
38
+
39
+ #: C:\Documents
40
+ #: and
41
+ #: Settings\Administrator\Desktop\quotes-collection\languages\antispam-bee/antispam_bee.php:436
42
+ msgid "by"
43
+ msgstr "de"
44
+
45
+ #: C:\Documents
46
+ #: and
47
+ #: Settings\Administrator\Desktop\quotes-collection\languages\antispam-bee/antispam_bee.php:437
48
+ msgid "Follow on Twitter"
49
+ msgstr "Urmărește pe Twitter"
50
+
51
+ #: C:\Documents
52
+ #: and
53
+ #: Settings\Administrator\Desktop\quotes-collection\languages\antispam-bee/antispam_bee.php:439
54
+ msgid "Learn about wpSEO"
55
+ msgstr "Află despre wpSEO"
56
+
57
+ #: C:\Documents
58
+ #: and
59
+ #: Settings\Administrator\Desktop\quotes-collection\languages\antispam-bee/antispam_bee.php:683
60
+ msgid "Comment marked as spam"
61
+ msgstr "Comentariul a fost marcat ca spam"
62
+
63
+ #: C:\Documents
64
+ #: and
65
+ #: Settings\Administrator\Desktop\quotes-collection\languages\antispam-bee/antispam_bee.php:687
66
+ msgid "New spam comment on your post"
67
+ msgstr "Un nou comentariu spam la articolul tău "
68
+
69
+ #: C:\Documents
70
+ #: and
71
+ #: Settings\Administrator\Desktop\quotes-collection\languages\antispam-bee/antispam_bee.php:691
72
+ msgid "Author"
73
+ msgstr "Autor"
74
+
75
+ #: C:\Documents
76
+ #: and
77
+ #: Settings\Administrator\Desktop\quotes-collection\languages\antispam-bee/antispam_bee.php:695
78
+ #, php-format
79
+ msgid "%s: %s\r\n"
80
+ msgstr "%s: %s\r\n"
81
+
82
+ #: C:\Documents
83
+ #: and
84
+ #: Settings\Administrator\Desktop\quotes-collection\languages\antispam-bee/antispam_bee.php:696
85
+ msgid "URL"
86
+ msgstr "URL"
87
+
88
+ #: C:\Documents
89
+ #: and
90
+ #: Settings\Administrator\Desktop\quotes-collection\languages\antispam-bee/antispam_bee.php:700
91
+ msgid "IP Locator"
92
+ msgstr "IP Locator"
93
+
94
+ #: C:\Documents
95
+ #: and
96
+ #: Settings\Administrator\Desktop\quotes-collection\languages\antispam-bee/antispam_bee.php:704
97
+ msgid "Spam Reason"
98
+ msgstr "Motiv spam"
99
+
100
+ #: C:\Documents
101
+ #: and
102
+ #: Settings\Administrator\Desktop\quotes-collection\languages\antispam-bee/antispam_bee.php:713
103
+ msgid "Trash it"
104
+ msgstr "Aruncă-l la gunoi"
105
+
106
+ #: C:\Documents
107
+ #: and
108
+ #: Settings\Administrator\Desktop\quotes-collection\languages\antispam-bee/antispam_bee.php:719
109
+ msgid "Delete it"
110
+ msgstr "Șterge-l"
111
+
112
+ #: C:\Documents
113
+ #: and
114
+ #: Settings\Administrator\Desktop\quotes-collection\languages\antispam-bee/antispam_bee.php:725
115
+ msgid "Approve it"
116
+ msgstr "Aprobă-l"
117
+
118
+ #: C:\Documents
119
+ #: and
120
+ #: Settings\Administrator\Desktop\quotes-collection\languages\antispam-bee/antispam_bee.php:729
121
+ msgid "Spam list"
122
+ msgstr "Listă spam"
123
+
124
+ #: C:\Documents
125
+ #: and
126
+ #: Settings\Administrator\Desktop\quotes-collection\languages\antispam-bee/antispam_bee.php:733
127
+ msgid "Notify message by Antispam Bee"
128
+ msgstr "Mesaj de notificare de la Antispam Bee"
129
+
130
+ #: C:\Documents
131
+ #: and
132
+ #: Settings\Administrator\Desktop\quotes-collection\languages\antispam-bee/antispam_bee.php:734
133
+ msgid "http://antispambee.com"
134
+ msgstr "http://antispambee.com"
135
+
136
+ #: C:\Documents
137
+ #: and
138
+ #: Settings\Administrator\Desktop\quotes-collection\languages\antispam-bee/antispam_bee.php:836
139
+ msgid "Settings saved."
140
+ msgstr "Setările au fost salvate."
141
+
142
+ #: C:\Documents
143
+ #: and
144
+ #: Settings\Administrator\Desktop\quotes-collection\languages\antispam-bee/antispam_bee.php:859
145
+ msgid "Mark as Spam, do not delete"
146
+ msgstr "Marchează ca spam, dar nu șterge"
147
+
148
+ #: C:\Documents
149
+ #: and
150
+ #: Settings\Administrator\Desktop\quotes-collection\languages\antispam-bee/antispam_bee.php:865
151
+ msgid "Limit on"
152
+ msgstr "Limitează la"
153
+
154
+ #: C:\Documents
155
+ #: and
156
+ #: Settings\Administrator\Desktop\quotes-collection\languages\antispam-bee/antispam_bee.php:865
157
+ msgid "Comments"
158
+ msgstr "Comentarii"
159
+
160
+ #: C:\Documents
161
+ #: and
162
+ #: Settings\Administrator\Desktop\quotes-collection\languages\antispam-bee/antispam_bee.php:865
163
+ msgid "Pings"
164
+ msgstr "Ping-uri"
165
+
166
+ #: C:\Documents
167
+ #: and
168
+ #: Settings\Administrator\Desktop\quotes-collection\languages\antispam-bee/antispam_bee.php:874
169
+ #, php-format
170
+ msgid "Spam will be automatically deleted after %s days"
171
+ msgstr "Spam-urile vor fi șterse automat după %s zile"
172
+
173
+ #: C:\Documents
174
+ #: and
175
+ #: Settings\Administrator\Desktop\quotes-collection\languages\antispam-bee/antispam_bee.php:878
176
+ msgid "Last check"
177
+ msgstr "Ultima verificare"
178
+
179
+ #: C:\Documents
180
+ #: and
181
+ #: Settings\Administrator\Desktop\quotes-collection\languages\antispam-bee/antispam_bee.php:886
182
+ msgid "Hide the &quot;MARKED AS SPAM&quot; note"
183
+ msgstr "Ascunde nota &quot;MARCAT CA SPAM&quot;"
184
+
185
+ #: C:\Documents
186
+ #: and
187
+ #: Settings\Administrator\Desktop\quotes-collection\languages\antispam-bee/antispam_bee.php:892
188
+ msgid "Send an admin email when new spam item incoming"
189
+ msgstr "Trimite-mi un email când sosește un nou element spam"
190
+
191
+ #: C:\Documents
192
+ #: and
193
+ #: Settings\Administrator\Desktop\quotes-collection\languages\antispam-bee/antispam_bee.php:901
194
+ msgid "Block comments and pings from specific countries"
195
+ msgstr "Blochează comentariile și ping-urile de la anumite țări"
196
+
197
+ #: C:\Documents
198
+ #: and
199
+ #: Settings\Administrator\Desktop\quotes-collection\languages\antispam-bee/antispam_bee.php:907
200
+ msgid "Blacklist"
201
+ msgstr "Lista neagră"
202
+
203
+ #: C:\Documents
204
+ #: and
205
+ #: Settings\Administrator\Desktop\quotes-collection\languages\antispam-bee/antispam_bee.php:907
206
+ #: Settings\Administrator\Desktop\quotes-collection\languages\antispam-bee/antispam_bee.php:918
207
+ msgid "iso codes"
208
+ msgstr "coduri iso"
209
+
210
+ #: C:\Documents
211
+ #: and
212
+ #: Settings\Administrator\Desktop\quotes-collection\languages\antispam-bee/antispam_bee.php:914
213
+ msgid "or"
214
+ msgstr "sau"
215
+
216
+ #: C:\Documents
217
+ #: and
218
+ #: Settings\Administrator\Desktop\quotes-collection\languages\antispam-bee/antispam_bee.php:918
219
+ msgid "Whitelist"
220
+ msgstr "Lista albă"
221
+
222
+ #: C:\Documents
223
+ #: and
224
+ #: Settings\Administrator\Desktop\quotes-collection\languages\antispam-bee/antispam_bee.php:928
225
+ msgid "Search comment spammers in the Project Honey Pot"
226
+ msgstr "Caută spammerii în Project Honey Pot"
227
+
228
+ #: C:\Documents
229
+ #: and
230
+ #: Settings\Administrator\Desktop\quotes-collection\languages\antispam-bee/antispam_bee.php:934
231
+ msgid "API Key"
232
+ msgstr "Cheie API"
233
+
234
+ #: C:\Documents
235
+ #: and
236
+ #: Settings\Administrator\Desktop\quotes-collection\languages\antispam-bee/antispam_bee.php:934
237
+ msgid "get free"
238
+ msgstr "obține gratuit"
239
+
240
+ #: C:\Documents
241
+ #: and
242
+ #: Settings\Administrator\Desktop\quotes-collection\languages\antispam-bee/antispam_bee.php:943
243
+ msgid "Do not check trackbacks / pingbacks"
244
+ msgstr "Nu verifica trackback-uri / pingback-uri"
245
+
246
+ #: C:\Documents
247
+ #: and
248
+ #: Settings\Administrator\Desktop\quotes-collection\languages\antispam-bee/antispam_bee.php:949
249
+ msgid "Display blocked comments count on the dashboard"
250
+ msgstr "Afișează numărătoarea comentariilor blocate pe panoul de control"
251
+
252
+ #: C:\Documents
253
+ #: and
254
+ #: Settings\Administrator\Desktop\quotes-collection\languages\antispam-bee/antispam_bee.php:955
255
+ msgid "Enable stricter inspection for incomming comments"
256
+ msgstr "Activează o inspecție mai strictă a comentariilor"
257
+
258
+ #: C:\Documents
259
+ #: and
260
+ #: Settings\Administrator\Desktop\quotes-collection\languages\antispam-bee/antispam_bee.php:961
261
+ msgid "Do not check if the comment author has already approved"
262
+ msgstr "Nu verifica dacă autorul comentariului a fost deja aprobat"
263
+
264
+ #: C:\Documents
265
+ #: and
266
+ #: Settings\Administrator\Desktop\quotes-collection\languages\antispam-bee/antispam_bee.php:967
267
+ msgid "Comments are also used outside of posts and pages"
268
+ msgstr "De asemeni, comentariile sunt folosite în afara articolelor și paginilor"
269
+
270
+ #: C:\Documents
271
+ #: and
272
+ #: Settings\Administrator\Desktop\quotes-collection\languages\antispam-bee/antispam_bee.php:972
273
+ msgid "Save Changes"
274
+ msgstr "Salvează schimbările"
275
+
276
+ #: C:\Documents
277
+ #: and
278
+ #: Settings\Administrator\Desktop\quotes-collection\languages\antispam-bee/antispam_bee.php:978
279
+ msgid "About"
280
+ msgstr "Despre"
281
+
lang/antispam_bee-ru_RU.mo ADDED
Binary file
lang/antispam_bee-ru_RU.po ADDED
@@ -0,0 +1,74 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Antispam Bee\n"
4
+ "POT-Creation-Date: \n"
5
+ "PO-Revision-Date: \n"
6
+ "Last-Translator: Sergej Müller\n"
7
+ "Language-Team: Sergej Müller\n"
8
+ "MIME-Version: 1.0\n"
9
+ "Content-Type: text/plain; charset=utf-8\n"
10
+ "Content-Transfer-Encoding: 8bit\n"
11
+ "X-Poedit-Language: German\n"
12
+ "X-Poedit-Country: GERMANY\n"
13
+ "X-Poedit-SourceCharset: utf-8\n"
14
+ "X-Poedit-KeywordsList: __;_e\n"
15
+ "X-Poedit-Basepath: .\n"
16
+ "X-Poedit-SearchPath-0: .\n"
17
+
18
+ msgid "Mark as Spam, do not delete"
19
+ msgstr "Отметить как спам, не удалять"
20
+
21
+ msgid "Limit on"
22
+ msgstr "Ограничить на"
23
+
24
+ msgid "Spam will be automatically deleted after %s days"
25
+ msgstr "Спам машинально удалять через %s дней"
26
+
27
+ msgid "Send an admin email when new spam item incoming"
28
+ msgstr "Отправить емайл при новом спаме"
29
+
30
+ msgid "Do not check trackbacks / pingbacks"
31
+ msgstr "Не проверять trackbacks и pingbacks"
32
+
33
+ msgid "Hide the &quot;MARKED AS SPAM&quot; note"
34
+ msgstr "Скрыть замечание &quot;MARKED AS SPAM&quot;"
35
+
36
+ msgid "Display blocked comments count on the dashboard"
37
+ msgstr "Заблокированный спам показать на приборной панели"
38
+
39
+ msgid "Comments are also used outside of posts and pages"
40
+ msgstr "Комментарии также используются вне постов и страниц"
41
+
42
+ msgid "Enable stricter inspection for incomming comments"
43
+ msgstr "Включите строгий контроль на входящие комментарии"
44
+
45
+ msgid "Do not check if the author has already commented and approved"
46
+ msgstr "Не проверять, если автор уже комментировал и был утвержден"
47
+
48
+ msgid "Comment marked as spam"
49
+ msgstr "Комментарии помечено как спам"
50
+
51
+ msgid "Spam list"
52
+ msgstr "Спам список"
53
+
54
+ msgid "Last check"
55
+ msgstr "Последний раз"
56
+
57
+ msgid "About"
58
+ msgstr "О плагине"
59
+
60
+ msgid "requires at least WordPress 2.7"
61
+ msgstr "нужен WordPress 2.7"
62
+
63
+ msgid "Blocked"
64
+ msgstr "Блокированные"
65
+
66
+ msgid "Learn about wpSEO"
67
+ msgstr "Узнать о wpSEO"
68
+
69
+ msgid "Follow on Twitter"
70
+ msgstr "Следить на Twitterе"
71
+
72
+ msgid "by"
73
+ msgstr "от"
74
+
lang/antispam_bee-tr_TR.mo ADDED
Binary file
lang/antispam_bee-tr_TR.po ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Antispam Bee\n"
4
+ "POT-Creation-Date: \n"
5
+ "PO-Revision-Date: \n"
6
+ "Last-Translator: Sergej Müller\n"
7
+ "Language-Team: Sergej Müller\n"
8
+ "MIME-Version: 1.0\n"
9
+ "Content-Type: text/plain; charset=utf-8\n"
10
+ "Content-Transfer-Encoding: 8bit\n"
11
+ "X-Poedit-Language: Turkish\n"
12
+ "X-Poedit-Country: TURKEY\n"
13
+ "X-Poedit-SourceCharset: utf-8\n"
14
+ "X-Poedit-KeywordsList: __;_e\n"
15
+ "X-Poedit-Basepath: .\n"
16
+ "X-Poedit-SearchPath-0: .\n"
17
+
18
+ msgid "Mark as Spam, do not delete"
19
+ msgstr "Spam olarak işaretle, silme"
20
+
21
+ msgid "Limit on"
22
+ msgstr "Limit on"
23
+
24
+ msgid "Spam will be automatically deleted after %s days"
25
+ msgstr "Spami %s gün sonra otomatikmen sil"
26
+
27
+ msgid "Do not check trackbacks / pingbacks"
28
+ msgstr "Track- ve Pingbackleri kontrol etme"
29
+
30
+ msgid "Hide the &quot;MARKED AS SPAM&quot; note"
31
+ msgstr "&quot;MARKED AS SPAM&quot; işaretini gösterme"
32
+
33
+ msgid "Last"
34
+ msgstr "en son"
35
+
36
+ msgid "About"
37
+ msgstr "bilgi"
38
+
39
+ msgid "requires at least WordPress 2.7"
40
+ msgstr "requires at least WordPress 2.7"
41
+
lang/antispam_bee-zh_CN.mo ADDED
Binary file
lang/antispam_bee-zh_CN.po ADDED
@@ -0,0 +1,85 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ msgid ""
2
+ msgstr ""
3
+ "Project-Id-Version: Antispam Bee\n"
4
+ "Report-Msgid-Bugs-To: \n"
5
+ "POT-Creation-Date: 2009-07-13 13:18+0800\n"
6
+ "PO-Revision-Date: \n"
7
+ "Last-Translator: Sergej Müller\n"
8
+ "Language-Team: Donald\n"
9
+ "MIME-Version: 1.0\n"
10
+ "Content-Type: text/plain; charset=UTF-8\n"
11
+ "Content-Transfer-Encoding: 8bit\n"
12
+ "X-Poedit-Language: Simplified Chinese\n"
13
+ "X-Poedit-Country: CHINA\n"
14
+ "X-Poedit-SourceCharset: utf-8\n"
15
+ "X-Poedit-KeywordsList: __;_e\n"
16
+ "X-Poedit-Basepath: .\n"
17
+ "X-Poedit-SearchPath-0: .\n"
18
+
19
+ #: antispam_bee.php:137
20
+ #: antispam_bee.php:153
21
+ #: antispam_bee.php:352
22
+ msgid "Settings"
23
+ msgstr "设置"
24
+
25
+ #: antispam_bee.php:254
26
+ msgid "requires at least WordPress 2.7"
27
+ msgstr "需要至少WordPres 2.7 或更新版本"
28
+
29
+ #: antispam_bee.php:261
30
+ msgid "Plugin"
31
+ msgstr "插件"
32
+
33
+ #: antispam_bee.php:263
34
+ msgid "Version"
35
+ msgstr "版本"
36
+
37
+ #: antispam_bee.php:265
38
+ msgid "Author"
39
+ msgstr "作者"
40
+
41
+ #: antispam_bee.php:335
42
+ msgid "Settings saved."
43
+ msgstr "设置已保存。"
44
+
45
+ #: antispam_bee.php:360
46
+ msgid "Mark as Spam, do not delete"
47
+ msgstr "标记垃圾评论,但并不删除"
48
+
49
+ #: antispam_bee.php:367
50
+ msgid "Limit on"
51
+ msgstr "限制用于"
52
+
53
+ #: antispam_bee.php:367
54
+ msgid "Comments"
55
+ msgstr "评论"
56
+
57
+ #: antispam_bee.php:367
58
+ msgid "Pings"
59
+ msgstr "Ping"
60
+
61
+ #: antispam_bee.php:378
62
+ #, php-format
63
+ msgid "Spam will be automatically deleted after %s days"
64
+ msgstr "垃圾评论会在 %s 天后自动删除"
65
+
66
+ #: antispam_bee.php:379
67
+ msgid "Last check"
68
+ msgstr "最新一次执行于"
69
+
70
+ #: antispam_bee.php:386
71
+ msgid "Hide the &quot;MARKED AS SPAM&quot; note"
72
+ msgstr "隐藏自动标记到垃圾评论上的 &quot;MARKED AS SPAM&quot; 标识"
73
+
74
+ #: antispam_bee.php:396
75
+ msgid "Do not check trackbacks / pingbacks"
76
+ msgstr "不检查 trackback / pingback"
77
+
78
+ #: antispam_bee.php:402
79
+ msgid "Save Changes"
80
+ msgstr "保存修改"
81
+
82
+ #: antispam_bee.php:408
83
+ msgid "About"
84
+ msgstr "关于"
85
+
readme.txt ADDED
@@ -0,0 +1,142 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ === Antispam Bee ===
2
+ Contributors: sergej.mueller
3
+ Tags: antispam, spam, comments, trackback
4
+ Donate link: http://flattr.com/profile/sergej.mueller
5
+ Requires at least: 2.8
6
+ Tested up to: 3.3
7
+ Stable tag: trunk
8
+
9
+
10
+
11
+ Anonymous and independent antispam solution. Detect comment and trackback spam. Includes statistics and notifications.
12
+
13
+
14
+
15
+ == Description ==
16
+
17
+ = Kill spam =
18
+ Antispam Bee is simple to use, has many options and filters. Does not store data on remote servers. Really.
19
+
20
+ = Features =
21
+ * Very fast execution
22
+ * Spam counter on dashboard
23
+ * Anonymous and confidential
24
+ * Trackback and pingback check
25
+ * Saves no data on remote servers
26
+ * No need to adjust any templates
27
+ * Cleaning up after plugin removal
28
+ * Accordingly no outgoing connection
29
+ * Interactive statistics on dashboard
30
+ * Automatically cleanup the spam folder
31
+ * Allow comments only in certain language
32
+ * Spam may be marked or deleted immediately
33
+ * Email notifications about new spam comments
34
+ * Quick & Dirty: activate, set settings, done!
35
+ * Optional strict check for incomming comments
36
+ * Block comments and pings from specific countries
37
+ * WordPress 3.x ready: Design as well as technical
38
+ * Consider comments which are already marked as spam
39
+
40
+ = Counter =
41
+ `<?php do_action('antispam_bee_count') ?> spam comments blocked by
42
+ <a href="http://antispambee.com">Antispam Bee</a>`
43
+
44
+ = Documentation =
45
+ * [Antispam Bee: Antispam für WordPress](http://playground.ebiene.de/antispam-bee-wordpress-plugin/ "Antispam für WordPress") (DE)
46
+
47
+ = Author =
48
+ * [Google+](https://plus.google.com/110569673423509816572 "Google+")
49
+ * [Portfolio](http://ebiene.de "Portfolio")
50
+
51
+
52
+
53
+ == Changelog ==
54
+
55
+ = 2.3 =
56
+ * Xmas Edition
57
+
58
+ = 2.2 =
59
+ * Interactive Dashboard Stats
60
+
61
+ = 2.1 =
62
+ * Remove Google Translate API support
63
+
64
+ = 2.0 =
65
+ * Allow comments only in certain language (English/German)
66
+ * Consider comments which are already marked as spam
67
+ * Dashboard Stats: Change from canvas to image format
68
+ * System requirements: WordPress 2.8
69
+ * Removal of the migration script
70
+ * Increase plugin security
71
+
72
+ = 1.9 =
73
+ * Dashboard History Stats (HTML5 Canvas)
74
+
75
+ = 1.8 =
76
+ * Support for the new IPInfoDB API (including API Key)
77
+
78
+ = 1.7 =
79
+ * Black and whitelisting for specific countries
80
+ * "Project Honey Pot" as a optional spammer source
81
+ * Spam reason in the notification email
82
+ * Visual refresh of the notification email
83
+ * Advanced GUI changes + Fold-out options
84
+
85
+ = 1.6 =
86
+ * Support for WordPress 3.0
87
+ * System requirements: WordPress 2.7
88
+ * Code optimization
89
+
90
+ = 1.5 =
91
+ * Compatibility with WPtouch
92
+ * Add support for do_action
93
+ * Translation to Portuguese of Brazil
94
+
95
+ = 1.4 =
96
+ * Enable stricter inspection for incomming comments
97
+ * Do not check if the author has already commented and approved
98
+
99
+ = 1.3 =
100
+ * New code structure
101
+ * Email notifications about new spam comments
102
+ * Novel Algorithm: Advanced spam checking
103
+
104
+ = 1.2 =
105
+ * Antispam Bee spam counter on dashboard
106
+
107
+ = 1.1 =
108
+ * Adds support for WordPress new changelog readme.txt standard
109
+ * Various changes for more speed, usability and security
110
+
111
+ = 1.0 =
112
+ * Adds WordPress 2.8 support
113
+
114
+ = 0.9 =
115
+ * Mark as spam only comments or only pings
116
+
117
+ = 0.8 =
118
+ * Optical adjustments of the settings page
119
+ * Translation for Simplified Chinese, Spanish and Catalan
120
+
121
+ = 0.7 =
122
+ * Spam folder cleanup after X days
123
+ * Optional hide the &quot;MARKED AS SPAM&quot; note
124
+ * Language support for Italian and Turkish
125
+
126
+ = 0.6 =
127
+ * Language support for English, German, Russian
128
+
129
+ = 0.5 =
130
+ * Workaround for empty comments
131
+
132
+ = 0.4 =
133
+ * Option for trackback and pingback protection
134
+
135
+ = 0.3 =
136
+ * Trackback and Pingback spam protection
137
+
138
+
139
+
140
+ == Screenshots ==
141
+
142
+ 1. Antispam Bee settings
screenshot-1.png ADDED
Binary file
uninstall.php ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ <?php
2
+ /* Remove settings */
3
+ delete_option('antispam_bee');
4
+
5
+ /* Clean DB */
6
+ $GLOBALS['wpdb']->query("OPTIMIZE TABLE `" .$GLOBALS['wpdb']->options. "`");