Antispam Bee - Version 2.6.1

Version Description

  • EN: Code refactoring of options management
  • DE: berarbeitung der Optionen-Verwaltung
  • EN: Support for HTTP_FORWARDED_FOR header
  • DE: Bercksichtigung der Header HTTP_FORWARDED_FOR
  • EN: Release time investment (Development & QA): 8,5 h
  • DE: Release-Zeitaufwand (Development & QA): 8,5 Stunden
Download this release

Release Info

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

Code changes from version 2.6.0 to 2.6.1

antispam_bee.php CHANGED
@@ -7,7 +7,26 @@ Description: Easy and extremely productive spam-fighting plugin with many sophis
7
  Author: Sergej Müller
8
  Author URI: http://wpcoder.de
9
  Plugin URI: http://antispambee.com
10
- Version: 2.6.0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
  */
12
 
13
 
@@ -38,7 +57,7 @@ class Antispam_Bee {
38
  * "Konstruktor" der Klasse
39
  *
40
  * @since 0.1
41
- * @change 2.6.0
42
  */
43
 
44
  public static function init()
@@ -184,6 +203,13 @@ class Antispam_Bee {
184
  10,
185
  2
186
  );
 
 
 
 
 
 
 
187
  }
188
  }
189
 
@@ -315,7 +341,7 @@ class Antispam_Bee {
315
  'ignore_pings' => 0,
316
  'always_allowed' => 0,
317
 
318
- 'dashboard_chart' => 1,
319
  'dashboard_count' => 0,
320
 
321
  /* Filter */
@@ -332,7 +358,7 @@ class Antispam_Bee {
332
  /* Erweitert */
333
  'flag_spam' => 1,
334
  'email_notify' => 1,
335
- 'no_notice' => 1,
336
  'cronjob_enable' => 0,
337
  'cronjob_interval' => 0,
338
 
@@ -395,7 +421,7 @@ class Antispam_Bee {
395
  return ( empty($GLOBALS['pagenow']) or ( !empty($GLOBALS['pagenow']) && $GLOBALS['pagenow'] == 'index.php' ) );
396
 
397
  case 'options':
398
- return ( !empty($_REQUEST['page']) && $_REQUEST['page'] == 'antispam_bee' );
399
 
400
  case 'plugins':
401
  return ( !empty($GLOBALS['pagenow']) && $GLOBALS['pagenow'] == 'plugins.php' );
@@ -439,7 +465,7 @@ class Antispam_Bee {
439
  public static function init_action_links($data)
440
  {
441
  /* Rechte? */
442
- if ( !current_user_can('manage_options') ) {
443
  return $data;
444
  }
445
 
@@ -465,7 +491,7 @@ class Antispam_Bee {
465
  * Meta-Links des Plugins
466
  *
467
  * @since 0.1
468
- * @change 2.4.4
469
  *
470
  * @param array $input Bereits vorhandene Links
471
  * @param string $file Aktuelle Seite
@@ -483,7 +509,8 @@ class Antispam_Bee {
483
  $input,
484
  array(
485
  '<a href="https://flattr.com/t/1323822" target="_blank">Flattr</a>',
486
- '<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&amp;hosted_button_id=5RDDW9FEHGLG6" target="_blank">PayPal</a>'
 
487
  )
488
  );
489
  }
@@ -834,44 +861,43 @@ class Antispam_Bee {
834
 
835
 
836
  /**
837
- * Rückgabe der Optionen
838
  *
839
  * @since 2.4
840
- * @change 2.4
841
  *
842
- * @return array $options Array mit Optionen
843
  */
844
 
845
  public static function get_options()
846
  {
847
- if ( !$options = wp_cache_get('antispam_bee') ) {
848
- $options = wp_parse_args(
849
- get_option('antispam_bee'),
850
- self::$defaults['options']
851
- );
852
-
853
  wp_cache_set(
854
  'antispam_bee',
855
- $options
856
  );
857
  }
858
 
859
- return $options;
 
 
 
860
  }
861
 
862
 
863
  /**
864
- * Rückgabe eines Optionsfeldes
865
  *
866
  * @since 0.1
867
  * @change 2.4.2
868
  *
869
- * @param string $field Name des Feldes
870
- * @return mixed Wert des Feldes
871
  */
872
 
873
  public static function get_option($field)
874
  {
 
875
  $options = self::get_options();
876
 
877
  return self::get_key($options, $field);
@@ -879,13 +905,13 @@ class Antispam_Bee {
879
 
880
 
881
  /**
882
- * Aktualisiert ein Optionsfeld
883
  *
884
  * @since 0.1
885
  * @change 2.4
886
  *
887
- * @param string $field Name des Feldes
888
- * @param mixed Wert des Feldes
889
  */
890
 
891
  private static function _update_option($field, $value)
@@ -899,29 +925,36 @@ class Antispam_Bee {
899
 
900
 
901
  /**
902
- * Aktualisiert mehrere Optionsfelder
903
  *
904
  * @since 0.1
905
- * @change 2.4
906
  *
907
- * @param array $data Array mit Feldern
908
  */
909
 
910
  public static function update_options($data)
911
  {
912
- /* Option zuweisen */
913
- $options = array_merge(
914
- (array)get_option('antispam_bee'),
915
- $data
916
- );
 
 
 
 
 
 
 
917
 
918
- /* DB updaten */
919
  update_option(
920
  'antispam_bee',
921
  $options
922
  );
923
 
924
- /* Cache updaten */
925
  wp_cache_set(
926
  'antispam_bee',
927
  $options
@@ -1073,7 +1106,7 @@ class Antispam_Bee {
1073
  * Prüfung der eingehenden Anfragen auf Spam
1074
  *
1075
  * @since 0.1
1076
- * @change 2.4.2
1077
  *
1078
  * @param array $comment Unbehandelter Kommentar
1079
  * @return array $comment Behandelter Kommentar
@@ -1081,6 +1114,17 @@ class Antispam_Bee {
1081
 
1082
  public static function handle_incoming_request($comment)
1083
  {
 
 
 
 
 
 
 
 
 
 
 
1084
  /* Server-Werte */
1085
  $url = self::get_key($_SERVER, 'REQUEST_URI');
1086
 
@@ -1195,7 +1239,7 @@ class Antispam_Bee {
1195
  * Prüfung der Trackbacks
1196
  *
1197
  * @since 2.4
1198
- * @change 2.5.4
1199
  *
1200
  * @param array $comment Daten des Trackbacks
1201
  * @return array Array mit dem Verdachtsgrund [optional]
@@ -1203,10 +1247,8 @@ class Antispam_Bee {
1203
 
1204
  private static function _verify_trackback_request($comment)
1205
  {
1206
- /* IP */
1207
- $ip = self::get_key($_SERVER, 'REMOTE_ADDR');
1208
-
1209
  /* Kommentarwerte */
 
1210
  $url = self::get_key($comment, 'comment_author_url');
1211
  $body = self::get_key($comment, 'comment_content');
1212
 
@@ -1218,7 +1260,7 @@ class Antispam_Bee {
1218
  }
1219
 
1220
  /* IP? */
1221
- if ( empty($ip) or (function_exists('filter_var') && !filter_var($ip, FILTER_VALIDATE_IP)) ) {
1222
  return array(
1223
  'reason' => 'empty'
1224
  );
@@ -1268,7 +1310,7 @@ class Antispam_Bee {
1268
  * Prüfung den Kommentar
1269
  *
1270
  * @since 2.4
1271
- * @change 2.5.6
1272
  *
1273
  * @param array $comment Daten des Kommentars
1274
  * @return array Array mit dem Verdachtsgrund [optional]
@@ -1276,10 +1318,8 @@ class Antispam_Bee {
1276
 
1277
  private static function _verify_comment_request($comment)
1278
  {
1279
- /* IP */
1280
- $ip = self::get_key($_SERVER, 'REMOTE_ADDR');
1281
-
1282
  /* Kommentarwerte */
 
1283
  $url = self::get_key($comment, 'comment_author_url');
1284
  $body = self::get_key($comment, 'comment_content');
1285
  $email = self::get_key($comment, 'comment_author_email');
@@ -1293,7 +1333,7 @@ class Antispam_Bee {
1293
  }
1294
 
1295
  /* IP? */
1296
- if ( empty($ip) or (function_exists('filter_var') && !filter_var($ip, FILTER_VALIDATE_IP)) ) {
1297
  return array(
1298
  'reason' => 'empty'
1299
  );
@@ -2000,7 +2040,7 @@ class Antispam_Bee {
2000
  * Logfile mit erkanntem Spam
2001
  *
2002
  * @since 2.5.7
2003
- * @change 2.5.7
2004
  *
2005
  * @param array $comment Array mit Kommentardaten
2006
  * @return mixed FALSE im Fehlerfall
@@ -2009,7 +2049,7 @@ class Antispam_Bee {
2009
  private static function _update_spam_log($comment)
2010
  {
2011
  /* Skip logfile? */
2012
- if ( ! defined('ANTISPAM_BEE_LOG_FILE') OR ! ANTISPAM_BEE_LOG_FILE OR ! is_writable(ANTISPAM_BEE_LOG_FILE) ) {
2013
  return false;
2014
  }
2015
 
@@ -2018,7 +2058,7 @@ class Antispam_Bee {
2018
  '%s comment for post=%d from host=%s marked as spam%s',
2019
  current_time('mysql'),
2020
  $comment['comment_post_ID'],
2021
- self::get_key($_SERVER, 'REMOTE_ADDR'),
2022
  PHP_EOL
2023
  );
2024
 
@@ -2045,6 +2085,53 @@ class Antispam_Bee {
2045
  }
2046
 
2047
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2048
  /**
2049
  * Add spam reason as comment data
2050
  *
@@ -2251,11 +2338,16 @@ class Antispam_Bee {
2251
  * Aktualisierung der Anzahl von Spam-Kommentaren
2252
  *
2253
  * @since 0.1
2254
- * @change 2.4
2255
  */
2256
 
2257
  private static function _update_spam_count()
2258
  {
 
 
 
 
 
2259
  self::_update_option(
2260
  'spam_count',
2261
  intval( self::get_option('spam_count') + 1 )
@@ -2267,11 +2359,16 @@ class Antispam_Bee {
2267
  * Aktualisierung der Statistik
2268
  *
2269
  * @since 1.9
2270
- * @change 2.4
2271
  */
2272
 
2273
  private static function _update_daily_stats()
2274
  {
 
 
 
 
 
2275
  /* Init */
2276
  $stats = (array)self::get_option('daily_stats');
2277
  $today = (int)strtotime('today');
7
  Author: Sergej M&uuml;ller
8
  Author URI: http://wpcoder.de
9
  Plugin URI: http://antispambee.com
10
+ License: GPLv2 or later
11
+ Version: 2.6.1
12
+ */
13
+
14
+ /*
15
+ Copyright (C) 2009-2014 Sergej Müller
16
+
17
+ This program is free software; you can redistribute it and/or modify
18
+ it under the terms of the GNU General Public License as published by
19
+ the Free Software Foundation; either version 2 of the License, or
20
+ (at your option) any later version.
21
+
22
+ This program is distributed in the hope that it will be useful,
23
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
24
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
25
+ GNU General Public License for more details.
26
+
27
+ You should have received a copy of the GNU General Public License along
28
+ with this program; if not, write to the Free Software Foundation, Inc.,
29
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
30
  */
31
 
32
 
57
  * "Konstruktor" der Klasse
58
  *
59
  * @since 0.1
60
+ * @change 2.6.1
61
  */
62
 
63
  public static function init()
203
  10,
204
  2
205
  );
206
+ add_filter(
207
+ 'admin_print_styles-edit-comments.php',
208
+ array(
209
+ 'Antispam_Bee_Columns',
210
+ 'print_column_styles'
211
+ )
212
+ );
213
  }
214
  }
215
 
341
  'ignore_pings' => 0,
342
  'always_allowed' => 0,
343
 
344
+ 'dashboard_chart' => 0,
345
  'dashboard_count' => 0,
346
 
347
  /* Filter */
358
  /* Erweitert */
359
  'flag_spam' => 1,
360
  'email_notify' => 1,
361
+ 'no_notice' => 0,
362
  'cronjob_enable' => 0,
363
  'cronjob_interval' => 0,
364
 
421
  return ( empty($GLOBALS['pagenow']) or ( !empty($GLOBALS['pagenow']) && $GLOBALS['pagenow'] == 'index.php' ) );
422
 
423
  case 'options':
424
+ return ( !empty($_GET['page']) && $_GET['page'] == 'antispam_bee' );
425
 
426
  case 'plugins':
427
  return ( !empty($GLOBALS['pagenow']) && $GLOBALS['pagenow'] == 'plugins.php' );
465
  public static function init_action_links($data)
466
  {
467
  /* Rechte? */
468
+ if ( ! current_user_can('manage_options') ) {
469
  return $data;
470
  }
471
 
491
  * Meta-Links des Plugins
492
  *
493
  * @since 0.1
494
+ * @change 2.6.1
495
  *
496
  * @param array $input Bereits vorhandene Links
497
  * @param string $file Aktuelle Seite
509
  $input,
510
  array(
511
  '<a href="https://flattr.com/t/1323822" target="_blank">Flattr</a>',
512
+ '<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&amp;hosted_button_id=5RDDW9FEHGLG6" target="_blank">PayPal</a>',
513
+ '<a href="https://www.amazon.de/gp/registry/wishlist/2U5I7F9649LOJ/?layout=grid" target="_blank">Wishlist</a>'
514
  )
515
  );
516
  }
861
 
862
 
863
  /**
864
+ * Get all plugin options
865
  *
866
  * @since 2.4
867
+ * @change 2.6.1
868
  *
869
+ * @return array $options Array with option fields
870
  */
871
 
872
  public static function get_options()
873
  {
874
+ if ( ! $options = wp_cache_get('antispam_bee') ) {
 
 
 
 
 
875
  wp_cache_set(
876
  'antispam_bee',
877
+ $options = get_option('antispam_bee')
878
  );
879
  }
880
 
881
+ return wp_parse_args(
882
+ $options,
883
+ self::$defaults['options']
884
+ );
885
  }
886
 
887
 
888
  /**
889
+ * Get single option field
890
  *
891
  * @since 0.1
892
  * @change 2.4.2
893
  *
894
+ * @param string $field Field name
895
+ * @return mixed Field value
896
  */
897
 
898
  public static function get_option($field)
899
  {
900
+ /* Get all options */
901
  $options = self::get_options();
902
 
903
  return self::get_key($options, $field);
905
 
906
 
907
  /**
908
+ * Update single option field
909
  *
910
  * @since 0.1
911
  * @change 2.4
912
  *
913
+ * @param string $field Field name
914
+ * @param mixed Field value
915
  */
916
 
917
  private static function _update_option($field, $value)
925
 
926
 
927
  /**
928
+ * Update multiple option fields
929
  *
930
  * @since 0.1
931
+ * @change 2.6.1
932
  *
933
+ * @param array $data Array with plugin option fields
934
  */
935
 
936
  public static function update_options($data)
937
  {
938
+ /* Get options */
939
+ $options = get_option('antispam_bee');
940
+
941
+ /* Merge new data */
942
+ if ( is_array($options) ) {
943
+ $options = array_merge(
944
+ $options,
945
+ $data
946
+ );
947
+ } else {
948
+ $options = $data;
949
+ }
950
 
951
+ /* Update options */
952
  update_option(
953
  'antispam_bee',
954
  $options
955
  );
956
 
957
+ /* Refresh cache */
958
  wp_cache_set(
959
  'antispam_bee',
960
  $options
1106
  * Prüfung der eingehenden Anfragen auf Spam
1107
  *
1108
  * @since 0.1
1109
+ * @change 2.6.1
1110
  *
1111
  * @param array $comment Unbehandelter Kommentar
1112
  * @return array $comment Behandelter Kommentar
1114
 
1115
  public static function handle_incoming_request($comment)
1116
  {
1117
+ /* Add client IP */
1118
+ $comment['comment_author_IP'] = self::get_client_ip();
1119
+
1120
+ add_filter(
1121
+ 'pre_comment_user_ip',
1122
+ array(
1123
+ __CLASS__,
1124
+ 'get_client_ip'
1125
+ )
1126
+ );
1127
+
1128
  /* Server-Werte */
1129
  $url = self::get_key($_SERVER, 'REQUEST_URI');
1130
 
1239
  * Prüfung der Trackbacks
1240
  *
1241
  * @since 2.4
1242
+ * @change 2.6.1
1243
  *
1244
  * @param array $comment Daten des Trackbacks
1245
  * @return array Array mit dem Verdachtsgrund [optional]
1247
 
1248
  private static function _verify_trackback_request($comment)
1249
  {
 
 
 
1250
  /* Kommentarwerte */
1251
+ $ip = self::get_key($comment, 'comment_author_IP');
1252
  $url = self::get_key($comment, 'comment_author_url');
1253
  $body = self::get_key($comment, 'comment_content');
1254
 
1260
  }
1261
 
1262
  /* IP? */
1263
+ if ( empty($ip) ) {
1264
  return array(
1265
  'reason' => 'empty'
1266
  );
1310
  * Prüfung den Kommentar
1311
  *
1312
  * @since 2.4
1313
+ * @change 2.6.1
1314
  *
1315
  * @param array $comment Daten des Kommentars
1316
  * @return array Array mit dem Verdachtsgrund [optional]
1318
 
1319
  private static function _verify_comment_request($comment)
1320
  {
 
 
 
1321
  /* Kommentarwerte */
1322
+ $ip = self::get_key($comment, 'comment_author_IP');
1323
  $url = self::get_key($comment, 'comment_author_url');
1324
  $body = self::get_key($comment, 'comment_content');
1325
  $email = self::get_key($comment, 'comment_author_email');
1333
  }
1334
 
1335
  /* IP? */
1336
+ if ( empty($ip) ) {
1337
  return array(
1338
  'reason' => 'empty'
1339
  );
2040
  * Logfile mit erkanntem Spam
2041
  *
2042
  * @since 2.5.7
2043
+ * @change 2.6.1
2044
  *
2045
  * @param array $comment Array mit Kommentardaten
2046
  * @return mixed FALSE im Fehlerfall
2049
  private static function _update_spam_log($comment)
2050
  {
2051
  /* Skip logfile? */
2052
+ if ( ! defined('ANTISPAM_BEE_LOG_FILE') OR ! ANTISPAM_BEE_LOG_FILE OR ! is_writable(ANTISPAM_BEE_LOG_FILE) OR validate_file(ANTISPAM_BEE_LOG_FILE) === 1 ) {
2053
  return false;
2054
  }
2055
 
2058
  '%s comment for post=%d from host=%s marked as spam%s',
2059
  current_time('mysql'),
2060
  $comment['comment_post_ID'],
2061
+ $comment['comment_author_IP'],
2062
  PHP_EOL
2063
  );
2064
 
2085
  }
2086
 
2087
 
2088
+ /**
2089
+ * Return real client IP
2090
+ *
2091
+ * @since 2.6.1
2092
+ * @change 2.6.1
2093
+ *
2094
+ * @return mixed $ip Client IP
2095
+ */
2096
+
2097
+ public static function get_client_ip()
2098
+ {
2099
+ if ( isset($_SERVER['HTTP_CLIENT_IP']) ) {
2100
+ $ip = $_SERVER['HTTP_CLIENT_IP'];
2101
+ } else if ( isset($_SERVER['HTTP_X_FORWARDED_FOR']) ) {
2102
+ $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
2103
+ } else if ( isset($_SERVER['HTTP_X_FORWARDED']) ) {
2104
+ $ip = $_SERVER['HTTP_X_FORWARDED'];
2105
+ } else if ( isset($_SERVER['HTTP_FORWARDED_FOR']) ) {
2106
+ $ip = $_SERVER['HTTP_FORWARDED_FOR'];
2107
+ } else if ( isset($_SERVER['HTTP_FORWARDED']) ) {
2108
+ $ip = $_SERVER['HTTP_FORWARDED'];
2109
+ } else if ( isset($_SERVER['REMOTE_ADDR']) ) {
2110
+ $ip = $_SERVER['REMOTE_ADDR'];
2111
+ } else {
2112
+ return '';
2113
+ }
2114
+
2115
+ if ( strpos($ip, ',') !== false ) {
2116
+ $ips = explode(',', $ip);
2117
+ $ip = trim(@$ips[0]);
2118
+ }
2119
+
2120
+ if ( function_exists('filter_var') ) {
2121
+ return filter_var(
2122
+ $ip,
2123
+ FILTER_VALIDATE_IP
2124
+ );
2125
+ }
2126
+
2127
+ return preg_replace(
2128
+ '/[^0-9a-f:\., ]/si',
2129
+ '',
2130
+ $ip
2131
+ );
2132
+ }
2133
+
2134
+
2135
  /**
2136
  * Add spam reason as comment data
2137
  *
2338
  * Aktualisierung der Anzahl von Spam-Kommentaren
2339
  *
2340
  * @since 0.1
2341
+ * @change 2.6.1
2342
  */
2343
 
2344
  private static function _update_spam_count()
2345
  {
2346
+ /* Skip if not enabled */
2347
+ if ( ! self::get_option('dashboard_count') ) {
2348
+ return;
2349
+ }
2350
+
2351
  self::_update_option(
2352
  'spam_count',
2353
  intval( self::get_option('spam_count') + 1 )
2359
  * Aktualisierung der Statistik
2360
  *
2361
  * @since 1.9
2362
+ * @change 2.6.1
2363
  */
2364
 
2365
  private static function _update_daily_stats()
2366
  {
2367
+ /* Skip if not enabled */
2368
+ if ( ! self::get_option('dashboard_chart') ) {
2369
+ return;
2370
+ }
2371
+
2372
  /* Init */
2373
  $stats = (array)self::get_option('daily_stats');
2374
  $today = (int)strtotime('today');
css/styles.css CHANGED
@@ -1,8 +1,9 @@
1
  /* @group Webfont */
2
 
3
  @font-face {
4
- font-family: 'antispambee-icons';
5
- src: url('../font/icons.woff') format('woff');
 
6
  }
7
 
8
  /* @end group */
@@ -13,14 +14,14 @@
13
  .ab-main *,
14
  .ab-main *:after,
15
  .ab-main *:before {
16
- border: 0;
17
- margin: 0;
18
- padding: 0;
19
- outline: 0;
20
 
21
- -webkit-box-sizing: border-box;
22
- -moz-box-sizing: border-box;
23
- box-sizing: border-box;
24
  }
25
 
26
  /* @end group */
@@ -29,10 +30,10 @@
29
  /* @group Browse Happy */
30
 
31
  .browsehappy {
32
- margin: 0 0 20px;
33
- padding: 10px;
34
- border: 1px solid #e66f00;
35
- text-align: center;
36
  }
37
 
38
  /* @end group */
@@ -41,17 +42,17 @@
41
  /* @group Spalten */
42
 
43
  .ab-wrap {
44
- color: #2f353e;
45
- height: 1%;
46
- margin: 0 0 0 -10px;
47
- overflow: hidden;
48
- padding: 20px 0 0 0;
49
- text-rendering: optimizeLegibility;
50
  }
51
  .ab-column {
52
- float: left;
53
- margin: 0 0 0 10px;
54
- position: relative;
55
  }
56
 
57
  /* @end group */
@@ -60,40 +61,41 @@
60
  /* @group Überschriften + Icons */
61
 
62
  .ab-column h3 {
63
- margin: 0;
64
- font-size: 14px;
65
- font-weight: normal;
66
- line-height: 20px;
67
- text-transform: uppercase;
68
  }
69
  .ab-column h3.icon:before {
70
- font: normal 30px/30px antispambee-icons;
71
- top: 4px;
72
- right: 20px;
73
- speak: none;
74
- width: 1em;
75
- color: #8e959c;
76
- position: absolute;
77
- text-align: center;
78
- -webkit-font-smoothing: antialiased;
 
79
  }
80
  .ab-column.ab-arrow h3.icon:before {
81
- content: '\2387';
82
  }
83
  .ab-column.ab-join h3.icon:before {
84
- content: '\e795';
85
  }
86
  .ab-column.ab-diff h3.icon:before {
87
- content: '\e73c';
88
  }
89
 
90
  .ab-column h6 {
91
- clear: both;
92
- color: #8e959c;
93
- margin: 0 0 20px;
94
- font-size: 10px;
95
- font-weight: normal;
96
- text-transform: uppercase;
97
  }
98
 
99
  /* @end group */
@@ -103,27 +105,27 @@
103
 
104
  .ab-column input[type="text"],
105
  .ab-column select {
106
- height: 20px;
107
- font-size: 11px;
108
- text-align: center;
109
- background: #f8f8f9;
110
  }
111
  .ab-column select[multiple] {
112
- width: 150px;
113
- height: 56px;
114
  }
115
  .ab-column input.ab-mini-field {
116
- width: 30px;
117
  }
118
  .ab-column input.ab-medium-field {
119
- width: 120px;
120
  }
121
  .ab-column input[type="text"] + label,
122
  .ab-column select + label {
123
- color: #8e959c;
124
- margin: 0 0 0 7px;
125
- display: inline-block;
126
- text-transform: uppercase;
127
  }
128
 
129
  /* @end group */
@@ -132,46 +134,46 @@
132
  /* @group Spalteninhalte */
133
 
134
  .ab-column > ul {
135
- padding: 0 20px 0 0;
136
  }
137
  .ab-column:last-of-type > ul {
138
- border: 0;
139
  }
140
  .ab-column > ul > li {
141
- width: 330px;
142
- margin: 0 0 36px;
143
- padding: 10px 0 12px 12px;
144
- position: relative;
145
- background: #fff;
146
- list-style: none;
147
- border-radius: 3px;
148
- white-space: nowrap;
149
  }
150
 
151
  .ab-column > ul > li a {
152
- color: inherit;
153
- text-decoration: none;
154
- border-bottom: 1px dotted #e0e5e9;
155
  }
156
  .ab-column > ul > li a:hover {
157
- border-color: inherit;
158
  }
159
 
160
  .ab-column > ul > li input[type="checkbox"] {
161
- display: inline-block;
162
- margin: 0 8px 0 0;
163
  }
164
  .ab-column > ul > li label {
165
- cursor: default;
166
- display: inline-block;
167
- overflow: hidden;
168
- line-height: 24px;
169
  }
170
  .ab-column > ul > li label span {
171
- color: #8e959c;
172
- display: block;
173
- font-size: 12px;
174
- line-height: 16px;
175
  }
176
 
177
  /* @end group */
@@ -181,57 +183,64 @@
181
 
182
  .ab-column > ul > li:after,
183
  .ab-column > ul > li:before {
184
- width: 0;
185
- content: '';
186
- position: absolute;
187
  }
188
 
189
  .ab-column.ab-arrow > ul > li:before,
190
  .ab-column.ab-arrow > ul > li:after {
191
- left: 157px;
192
- border-width: 10px 10px 0;
193
- border-style: solid;
194
  }
195
  .ab-column.ab-arrow > ul > li:before {
196
- bottom: -24px;
197
- border-color: #fff transparent;
198
  }
199
  .ab-column.ab-arrow > ul > li:after {
200
- bottom: -22px;
201
- border-color: #f1f1f1 transparent;
202
  }
203
 
204
  .ab-column.ab-join > ul > li:before {
205
- left: 171px;
206
- bottom: -27px;
207
- height: 18px;
208
- border-right: 2px solid #fff;
209
  }
210
 
211
  .ab-column.ab-diff > ul > li:before {
212
- left: 162px;
213
- bottom: -19px;
214
- width: 18px;
215
- height: 0;
216
- border-bottom: 2px solid #fff;
217
  }
218
 
219
  /* @end group */
220
 
221
 
222
- /* @group Submit-Zeile */
223
 
224
- .ab-column.ab-submit {
225
- width: 342px;
226
- margin: 0 0 0 10px;
227
- padding: 30px 0;
228
- border-top: 1px solid #e0e5e9;
229
  }
230
- .ab-column.ab-submit > p {
231
- float: right;
232
- margin: 0;
233
- height: 28px;
234
- line-height: 28px;
 
 
 
 
 
 
 
235
  }
236
 
237
  /* @end group */
@@ -241,22 +250,22 @@
241
 
242
  .ab-column > ul > li:last-of-type:after,
243
  .ab-column > ul > li:last-of-type:before {
244
- display: none;
245
  }
246
 
247
  .ab-column > ul > li > ul {
248
- margin: 10px 10px 0 26px;
249
- display: none;
250
- list-style: none;
251
  }
252
  .ab-column > ul > li > ul li {
253
- padding: 2px 0;
254
  }
255
  .ab-column > ul > li > ul label {
256
- margin: 0 0 0 7px;
257
  }
258
  .ab-column > ul > li > input[type="checkbox"]:checked ~ ul {
259
- display: block;
260
  }
261
 
262
  /* @end group */
1
  /* @group Webfont */
2
 
3
  @font-face {
4
+ font-family: icons;
5
+ src: url('../font/icons.woff2') format('woff2'),
6
+ url('../font/icons.woff') format('woff');
7
  }
8
 
9
  /* @end group */
14
  .ab-main *,
15
  .ab-main *:after,
16
  .ab-main *:before {
17
+ border: 0;
18
+ margin: 0;
19
+ padding: 0;
20
+ outline: 0;
21
 
22
+ -webkit-box-sizing: border-box;
23
+ -moz-box-sizing: border-box;
24
+ box-sizing: border-box;
25
  }
26
 
27
  /* @end group */
30
  /* @group Browse Happy */
31
 
32
  .browsehappy {
33
+ margin: 0 0 20px;
34
+ padding: 10px;
35
+ border: 1px solid #e66f00;
36
+ text-align: center;
37
  }
38
 
39
  /* @end group */
42
  /* @group Spalten */
43
 
44
  .ab-wrap {
45
+ color: #2f353e;
46
+ height: 1%;
47
+ margin: 0 0 0 -10px;
48
+ overflow: hidden;
49
+ padding: 20px 0 0 0;
50
+ text-rendering: optimizeLegibility;
51
  }
52
  .ab-column {
53
+ float: left;
54
+ margin: 0 0 0 10px;
55
+ position: relative;
56
  }
57
 
58
  /* @end group */
61
  /* @group Überschriften + Icons */
62
 
63
  .ab-column h3 {
64
+ margin: 0;
65
+ font-size: 14px;
66
+ font-weight: normal;
67
+ line-height: 20px;
68
+ text-transform: uppercase;
69
  }
70
  .ab-column h3.icon:before {
71
+ font: normal 30px/30px icons;
72
+ top: 4px;
73
+ right: 20px;
74
+ speak: none;
75
+ width: 1em;
76
+ color: #8e959c;
77
+ position: absolute;
78
+ text-align: center;
79
+ -webkit-font-smoothing: antialiased;
80
+ -moz-osx-font-smoothing: grayscale;
81
  }
82
  .ab-column.ab-arrow h3.icon:before {
83
+ content: '\2387';
84
  }
85
  .ab-column.ab-join h3.icon:before {
86
+ content: '\e795';
87
  }
88
  .ab-column.ab-diff h3.icon:before {
89
+ content: '\e73c';
90
  }
91
 
92
  .ab-column h6 {
93
+ clear: both;
94
+ color: #8e959c;
95
+ margin: 0 0 20px;
96
+ font-size: 10px;
97
+ font-weight: normal;
98
+ text-transform: uppercase;
99
  }
100
 
101
  /* @end group */
105
 
106
  .ab-column input[type="text"],
107
  .ab-column select {
108
+ height: 20px;
109
+ font-size: 11px;
110
+ text-align: center;
111
+ background: #f8f8f9;
112
  }
113
  .ab-column select[multiple] {
114
+ width: 150px;
115
+ height: 56px;
116
  }
117
  .ab-column input.ab-mini-field {
118
+ width: 30px;
119
  }
120
  .ab-column input.ab-medium-field {
121
+ width: 120px;
122
  }
123
  .ab-column input[type="text"] + label,
124
  .ab-column select + label {
125
+ color: #8e959c;
126
+ margin: 0 0 0 7px;
127
+ display: inline-block;
128
+ text-transform: uppercase;
129
  }
130
 
131
  /* @end group */
134
  /* @group Spalteninhalte */
135
 
136
  .ab-column > ul {
137
+ padding: 0 20px 0 0;
138
  }
139
  .ab-column:last-of-type > ul {
140
+ border: 0;
141
  }
142
  .ab-column > ul > li {
143
+ width: 330px;
144
+ margin: 0 0 36px;
145
+ padding: 10px 0 12px 12px;
146
+ position: relative;
147
+ background: #fff;
148
+ list-style: none;
149
+ border-radius: 3px;
150
+ white-space: nowrap;
151
  }
152
 
153
  .ab-column > ul > li a {
154
+ color: inherit;
155
+ text-decoration: none;
156
+ border-bottom: 1px dotted #e0e5e9;
157
  }
158
  .ab-column > ul > li a:hover {
159
+ border-color: inherit;
160
  }
161
 
162
  .ab-column > ul > li input[type="checkbox"] {
163
+ display: inline-block;
164
+ margin: 0 8px 0 0;
165
  }
166
  .ab-column > ul > li label {
167
+ cursor: default;
168
+ display: inline-block;
169
+ overflow: hidden;
170
+ line-height: 24px;
171
  }
172
  .ab-column > ul > li label span {
173
+ color: #8e959c;
174
+ display: block;
175
+ font-size: 12px;
176
+ line-height: 16px;
177
  }
178
 
179
  /* @end group */
183
 
184
  .ab-column > ul > li:after,
185
  .ab-column > ul > li:before {
186
+ width: 0;
187
+ content: '';
188
+ position: absolute;
189
  }
190
 
191
  .ab-column.ab-arrow > ul > li:before,
192
  .ab-column.ab-arrow > ul > li:after {
193
+ left: 157px;
194
+ border-width: 10px 10px 0;
195
+ border-style: solid;
196
  }
197
  .ab-column.ab-arrow > ul > li:before {
198
+ bottom: -24px;
199
+ border-color: #fff transparent;
200
  }
201
  .ab-column.ab-arrow > ul > li:after {
202
+ bottom: -22px;
203
+ border-color: #f1f1f1 transparent;
204
  }
205
 
206
  .ab-column.ab-join > ul > li:before {
207
+ left: 171px;
208
+ bottom: -27px;
209
+ height: 18px;
210
+ border-right: 2px solid #fff;
211
  }
212
 
213
  .ab-column.ab-diff > ul > li:before {
214
+ left: 162px;
215
+ bottom: -19px;
216
+ width: 18px;
217
+ height: 0;
218
+ border-bottom: 2px solid #fff;
219
  }
220
 
221
  /* @end group */
222
 
223
 
224
+ /* @group Submit & Service */
225
 
226
+ .ab-column--service {
227
+ width: 342px;
228
+ text-align: center;
229
+ border-top: 1px solid #e0e5e9;
230
+ border-bottom: 1px solid #e0e5e9;
231
  }
232
+ .ab-column--service p {
233
+ margin: 8px 0;
234
+ }
235
+ .ab-column--service a {
236
+ padding: 0 2px;
237
+ }
238
+ .ab-column--submit {
239
+ width: 342px;
240
+ margin-top: 35px;
241
+ }
242
+ .ab-column--submit .button {
243
+ width: 100%;
244
  }
245
 
246
  /* @end group */
250
 
251
  .ab-column > ul > li:last-of-type:after,
252
  .ab-column > ul > li:last-of-type:before {
253
+ display: none;
254
  }
255
 
256
  .ab-column > ul > li > ul {
257
+ margin: 10px 10px 0 26px;
258
+ display: none;
259
+ list-style: none;
260
  }
261
  .ab-column > ul > li > ul li {
262
+ padding: 2px 0;
263
  }
264
  .ab-column > ul > li > ul label {
265
+ margin: 0 0 0 7px;
266
  }
267
  .ab-column > ul > li > input[type="checkbox"]:checked ~ ul {
268
+ display: block;
269
  }
270
 
271
  /* @end group */
css/styles.min.css CHANGED
@@ -1 +1 @@
1
- @font-face{font-family:'antispambee-icons';src:url('../font/icons.woff') format('woff');}.ab-main *,.ab-main *:after,.ab-main *:before{border:0;margin:0;padding:0;outline:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}.browsehappy{margin:0 0 20px;padding:10px;border:1px solid #e66f00;text-align:center;}.ab-wrap{color:#2f353e;height:1%;margin:0 0 0 -10px;overflow:hidden;padding:20px 0 0 0;text-rendering:optimizeLegibility;}.ab-column{float:left;margin:0 0 0 10px;position:relative;}.ab-column h3{margin:0;font-size:14px;font-weight:normal;line-height:20px;text-transform:uppercase;}.ab-column h3.icon:before{font:normal 30px/30px antispambee-icons;top:4px;right:20px;speak:none;width:1em;color:#8e959c;position:absolute;text-align:center;-webkit-font-smoothing:antialiased;}.ab-column.ab-arrow h3.icon:before{content:'\2387';}.ab-column.ab-join h3.icon:before{content:'\e795';}.ab-column.ab-diff h3.icon:before{content:'\e73c';}.ab-column h6{clear:both;color:#8e959c;margin:0 0 20px;font-size:10px;font-weight:normal;text-transform:uppercase;}.ab-column input[type="text"],.ab-column select{height:20px;font-size:11px;text-align:center;background:#f8f8f9;}.ab-column select[multiple]{width:150px;height:56px;}.ab-column input.ab-mini-field{width:30px;}.ab-column input.ab-medium-field{width:120px;}.ab-column input[type="text"]+label,.ab-column select+label{color:#8e959c;margin:0 0 0 7px;display:inline-block;text-transform:uppercase;}.ab-column>ul{padding:0 20px 0 0;}.ab-column:last-of-type>ul{border:0;}.ab-column>ul>li{width:330px;margin:0 0 36px;padding:10px 0 12px 12px;position:relative;background:#fff;list-style:none;border-radius:3px;white-space:nowrap;}.ab-column>ul>li a{color:inherit;text-decoration:none;border-bottom:1px dotted #e0e5e9;}.ab-column>ul>li a:hover{border-color:inherit;}.ab-column>ul>li input[type="checkbox"]{display:inline-block;margin:0 8px 0 0;}.ab-column>ul>li label{cursor:default;display:inline-block;overflow:hidden;line-height:24px;}.ab-column>ul>li label span{color:#8e959c;display:block;font-size:12px;line-height:16px;}.ab-column>ul>li:after,.ab-column>ul>li:before{width:0;content:'';position:absolute;}.ab-column.ab-arrow>ul>li:before,.ab-column.ab-arrow>ul>li:after{left:157px;border-width:10px 10px 0;border-style:solid;}.ab-column.ab-arrow>ul>li:before{bottom:-24px;border-color:#fff transparent;}.ab-column.ab-arrow>ul>li:after{bottom:-22px;border-color:#f1f1f1 transparent;}.ab-column.ab-join>ul>li:before{left:171px;bottom:-27px;height:18px;border-right:2px solid #fff;}.ab-column.ab-diff>ul>li:before{left:162px;bottom:-19px;width:18px;height:0;border-bottom:2px solid #fff;}.ab-column.ab-submit{width:342px;margin:0 0 0 10px;padding:30px 0;border-top:1px solid #e0e5e9;}.ab-column.ab-submit>p{float:right;margin:0;height:28px;line-height:28px;}.ab-column>ul>li:last-of-type:after,.ab-column>ul>li:last-of-type:before{display:none;}.ab-column>ul>li>ul{margin:10px 10px 0 26px;display:none;list-style:none;}.ab-column>ul>li>ul li{padding:2px 0;}.ab-column>ul>li>ul label{margin:0 0 0 7px;}.ab-column>ul>li>input[type="checkbox"]:checked ~ ul{display:block;}
1
+ @font-face{font-family:icons;src:url(../font/icons.woff2) format('woff2'),url(../font/icons.woff) format('woff')}.ab-main *,.ab-main :after,.ab-main :before{border:0;margin:0;padding:0;outline:0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.browsehappy{margin:0 0 20px;padding:10px;border:1px solid #e66f00;text-align:center}.ab-wrap{color:#2f353e;height:1%;margin:0 0 0 -10px;overflow:hidden;padding:20px 0 0;text-rendering:optimizeLegibility}.ab-column{float:left;margin:0 0 0 10px;position:relative}.ab-column h3{margin:0;font-size:14px;font-weight:400;line-height:20px;text-transform:uppercase}.ab-column h3.icon:before{font:400 30px/30px icons;top:4px;right:20px;speak:none;width:1em;color:#8e959c;position:absolute;text-align:center;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ab-column.ab-arrow h3.icon:before{content:'\2387'}.ab-column.ab-join h3.icon:before{content:'\e795'}.ab-column.ab-diff h3.icon:before{content:'\e73c'}.ab-column h6{clear:both;color:#8e959c;margin:0 0 20px;font-size:10px;font-weight:400;text-transform:uppercase}.ab-column input[type=text],.ab-column select{height:20px;font-size:11px;text-align:center;background:#f8f8f9}.ab-column select[multiple]{width:150px;height:56px}.ab-column input.ab-mini-field{width:30px}.ab-column input.ab-medium-field{width:120px}.ab-column input[type=text]+label,.ab-column select+label{color:#8e959c;margin:0 0 0 7px;display:inline-block;text-transform:uppercase}.ab-column>ul{padding:0 20px 0 0}.ab-column:last-of-type>ul{border:0}.ab-column>ul>li{width:330px;margin:0 0 36px;padding:10px 0 12px 12px;position:relative;background:#fff;list-style:none;border-radius:3px;white-space:nowrap}.ab-column>ul>li a{color:inherit;text-decoration:none;border-bottom:1px dotted #e0e5e9}.ab-column>ul>li a:hover{border-color:inherit}.ab-column>ul>li input[type=checkbox]{display:inline-block;margin:0 8px 0 0}.ab-column>ul>li label{cursor:default;display:inline-block;overflow:hidden;line-height:24px}.ab-column>ul>li label span{color:#8e959c;display:block;font-size:12px;line-height:16px}.ab-column>ul>li:after,.ab-column>ul>li:before{width:0;content:'';position:absolute}.ab-column.ab-arrow>ul>li:after,.ab-column.ab-arrow>ul>li:before{left:157px;border-width:10px 10px 0;border-style:solid}.ab-column.ab-arrow>ul>li:before{bottom:-24px;border-color:#fff transparent}.ab-column.ab-arrow>ul>li:after{bottom:-22px;border-color:#f1f1f1 transparent}.ab-column.ab-join>ul>li:before{left:171px;bottom:-27px;height:18px;border-right:2px solid #fff}.ab-column.ab-diff>ul>li:before{left:162px;bottom:-19px;width:18px;height:0;border-bottom:2px solid #fff}.ab-column--service{width:342px;text-align:center;border-top:1px solid #e0e5e9;border-bottom:1px solid #e0e5e9}.ab-column--service p{margin:8px 0}.ab-column--service a{padding:0 2px}.ab-column--submit{width:342px;margin-top:35px}.ab-column--submit .button{width:100%}.ab-column>ul>li:last-of-type:after,.ab-column>ul>li:last-of-type:before{display:none}.ab-column>ul>li>ul{margin:10px 10px 0 26px;display:none;list-style:none}.ab-column>ul>li>ul li{padding:2px 0}.ab-column>ul>li>ul label{margin:0 0 0 7px}.ab-column>ul>li>input[type=checkbox]:checked~ul{display:block}
font/icons.ttf ADDED
Binary file
font/icons.woff2 ADDED
Binary file
inc/columns.class.php CHANGED
@@ -65,4 +65,20 @@ final class Antispam_Bee_Columns {
65
  'antispam_bee'
66
  );
67
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
68
  }
65
  'antispam_bee'
66
  );
67
  }
68
+
69
+
70
+ /**
71
+ * Print CSS for the plugin column
72
+ *
73
+ * @since 2.6.1
74
+ * @change 2.6.1
75
+ */
76
+
77
+ public static function print_column_styles() { ?>
78
+ <style>
79
+ .column-antispam_bee_reason {
80
+ width: 10%;
81
+ }
82
+ </style>
83
+ <?php }
84
  }
inc/gui.class.php CHANGED
@@ -30,6 +30,11 @@ class Antispam_Bee_GUI extends Antispam_Bee {
30
  wp_die(__('Cheatin&#8217; uh?'));
31
  }
32
 
 
 
 
 
 
33
  /* Referer prüfen */
34
  check_admin_referer('antispam_bee');
35
 
@@ -170,7 +175,7 @@ class Antispam_Bee_GUI extends Antispam_Bee {
170
  * Anzeige der GUI
171
  *
172
  * @since 0.1
173
- * @change 2.6.0
174
  */
175
 
176
  public static function options_page() { ?>
@@ -426,12 +431,19 @@ class Antispam_Bee_GUI extends Antispam_Bee {
426
  </ul>
427
  </div>
428
 
 
 
 
 
 
 
429
 
430
- <div class="ab-column ab-submit">
431
  <p>
432
- <?php if ( get_locale() == 'de_DE' ) { ?><a href="http://playground.ebiene.de/antispam-bee-wordpress-plugin/" target="_blank">Handbuch</a> &bull; <?php } ?><a href="https://flattr.com/t/1323822" target="_blank">Flattr</a> &bull; <a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&amp;hosted_button_id=5RDDW9FEHGLG6" target="_blank">PayPal</a>
433
  </p>
 
434
 
 
435
  <input type="submit" class="button button-primary" value="<?php _e('Save Changes') ?>" />
436
  </div>
437
  </div>
30
  wp_die(__('Cheatin&#8217; uh?'));
31
  }
32
 
33
+ /* Capability check */
34
+ if ( ! current_user_can('manage_options') ) {
35
+ wp_die(__('Cheatin&#8217; uh?'));
36
+ }
37
+
38
  /* Referer prüfen */
39
  check_admin_referer('antispam_bee');
40
 
175
  * Anzeige der GUI
176
  *
177
  * @since 0.1
178
+ * @change 2.6.1
179
  */
180
 
181
  public static function options_page() { ?>
431
  </ul>
432
  </div>
433
 
434
+ <div class="ab-column ab-column--service">
435
+ <?php if ( get_locale() == 'de_DE' ) { ?>
436
+ <p>
437
+ <a href="http://playground.ebiene.de/antispam-bee-wordpress-plugin/" target="_blank">Online-Handbuch</a> &bull; <a href="http://cup.wpcoder.de/wordpress-antispam-guide/" target="_blank">Antispam-Guide</a>
438
+ </p>
439
+ <?php } ?>
440
 
 
441
  <p>
442
+ <a href="https://flattr.com/t/1323822" target="_blank">Flattr</a> &bull; <a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&amp;hosted_button_id=5RDDW9FEHGLG6" target="_blank">PayPal</a> &bull; <a href="https://www.amazon.de/gp/registry/wishlist/2U5I7F9649LOJ/?layout=grid" target="_blank">Wishlist</a>
443
  </p>
444
+ </div>
445
 
446
+ <div class="ab-column ab-column--submit">
447
  <input type="submit" class="button button-primary" value="<?php _e('Save Changes') ?>" />
448
  </div>
449
  </div>
lang/antispam_bee-nl_NL.mo ADDED
Binary file
lang/antispam_bee-nl_NL.po ADDED
@@ -0,0 +1,246 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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: Presis\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-SourceCharset: utf-8\n"
12
+ "X-Poedit-KeywordsList: __;_e\n"
13
+ "X-Poedit-Basepath: .\n"
14
+ "Language: nl_NL\n"
15
+ "X-Generator: Poedit 1.6.5\n"
16
+ "X-Poedit-SearchPath-0: .\n"
17
+
18
+ msgid "No data available."
19
+ msgstr "Geen gegevens beschikbaar."
20
+
21
+ msgid "New spam comment on your post"
22
+ msgstr "Nieuwe spam reactie op jouw bericht"
23
+
24
+ msgid "Marked as spam by Antispam Bee / Spam reason"
25
+ msgstr "Gemarkeerd als spam door Antispam Bee / Spam reactie"
26
+
27
+ msgid "Comment"
28
+ msgstr "Reactie"
29
+
30
+ msgid "Type"
31
+ msgstr "Type"
32
+
33
+ msgid "Spam Reason"
34
+ msgstr "Spam reden"
35
+
36
+ msgid "Empty Data"
37
+ msgstr "Geen gegevens"
38
+
39
+ msgid "CSS Hack"
40
+ msgstr "CSS hack"
41
+
42
+ msgid "Server IP"
43
+ msgstr "Server IP"
44
+
45
+ msgid "Spam IP"
46
+ msgstr "Spam IP"
47
+
48
+ msgid "Comment Language"
49
+ msgstr "Taal van reactie"
50
+
51
+ msgid "Country Check"
52
+ msgstr "Land controle"
53
+
54
+ msgid "DNSBL Spam"
55
+ msgstr "DNSBL Spam"
56
+
57
+ msgid "RegExp"
58
+ msgstr "RegExp"
59
+
60
+ msgid "Approve it"
61
+ msgstr "Toestaan"
62
+
63
+ msgid "Delete it"
64
+ msgstr "Verwijderen"
65
+
66
+ msgid "Trash it"
67
+ msgstr "Verplaats naar prullenbak"
68
+
69
+ msgid "Spam list"
70
+ msgstr "Spamlijst"
71
+
72
+ msgid "Notify message by Antispam Bee"
73
+ msgstr "Notificatiebericht van Antispam Bee "
74
+
75
+ msgid "Content removed by Antispam Bee"
76
+ msgstr "Inhoud verwijderd door Antispam Bee"
77
+
78
+ msgid "Last check"
79
+ msgstr "Laatste controle"
80
+
81
+ msgid "Blocked"
82
+ msgstr "Geblokkeerd"
83
+
84
+ msgid "Today"
85
+ msgstr "Vandaag"
86
+
87
+ msgid "Easy and extremely productive spam-fighting plugin with many sophisticated solutions. Includes protection again trackback spam."
88
+ msgstr "Eenvoudige en extreem productieve spam plugin met vele passende oplossingen. Inclusief bescherming tegen trackback spam."
89
+
90
+ msgid "http://antispambee.com"
91
+ msgstr "http://antispambee.com"
92
+
93
+ msgid "Comments"
94
+ msgstr "Reacties"
95
+
96
+ msgid "Comment marked as spam"
97
+ msgstr "Reactie gemarkeerd als spam"
98
+
99
+ # Langues
100
+ msgid "Language"
101
+ msgstr "Taal"
102
+
103
+ msgid "English"
104
+ msgstr "Engels"
105
+
106
+ msgid "German"
107
+ msgstr "Duits"
108
+
109
+ msgid "French"
110
+ msgstr "Frans"
111
+
112
+ msgid "Italian"
113
+ msgstr "Italiaans"
114
+
115
+ msgid "Spanish"
116
+ msgstr "Spaans"
117
+
118
+ # Antispam-Filter
119
+ msgid "Antispam filter"
120
+ msgstr "Antispam filter"
121
+
122
+ msgid "Filter in the execution order"
123
+ msgstr "Filter in uitvoer volgorde"
124
+
125
+ msgid "Trust approved commentators"
126
+ msgstr "Vertrouw toegestane reageerders"
127
+
128
+ msgid "No check for already commenting users"
129
+ msgstr "Geen controle voor gebruikers die al gereageerd hebben"
130
+
131
+ msgid "BBCode is spam"
132
+ msgstr "BBCode is spam"
133
+
134
+ msgid "Review the comment contents for BBCode links"
135
+ msgstr "Controleer de reactie-inhoud voor BBCode links"
136
+
137
+ msgid "Use a public antispam database"
138
+ msgstr "Gebruik een publieke antispam database"
139
+
140
+ msgid "Matching the ip address with <a href=\"http://opm.tornevall.org\" target=\"_blank\">Tornevall</a>"
141
+ msgstr "Vergelijk het ip adres met <a href=\"http://opm.tornevall.org\" target=\"_blank\">Tornevall</a>"
142
+
143
+ msgid "Validate the ip address of commentators"
144
+ msgstr "Controleer het ip adres van de reageerders"
145
+
146
+ msgid "Validity check for used ip address"
147
+ msgstr "Geldigheidscontrole voor gebruikte ip adres"
148
+
149
+ msgid "Use regular expressions"
150
+ msgstr "Gebruik reguliere expressies"
151
+
152
+ msgid "Predefined and custom patterns by <a href=\"https://gist.github.com/4242142\" target=\"_blank\">plugin hook</a>"
153
+ msgstr "Vooraf gedefinieerde en eigen sjablonen door <a href=\"https://gist.github.com/4242142\" target=\"_blank\">plugin hook</a>"
154
+
155
+ msgid "Look in the local spam database"
156
+ msgstr "Kijk in de locale spam database"
157
+
158
+ msgid "Already marked as spam? Yes? No?"
159
+ msgstr "Al reeds aangemerkt als spam? Ja? Nee?"
160
+
161
+ msgid "Block comments from specific countries"
162
+ msgstr "Blokkeer reactie vanuit specifieke landen"
163
+
164
+ msgid "Filtering the requests depending on country"
165
+ msgstr "Filter de aanvraag afhankelijk van het land"
166
+
167
+ msgid "Allow comments only in certain language"
168
+ msgstr "Sta alleen reacties toe in een bepaalde taal"
169
+
170
+ msgid "Detection and approval in specified language"
171
+ msgstr "Detectie en goedkeuring in de opgegeven taal"
172
+
173
+ # Erweitert
174
+ msgid "Advanced"
175
+ msgstr "Uitgebreid"
176
+
177
+ msgid "Other antispam tools"
178
+ msgstr "Andere antispam gereedschappen"
179
+
180
+ msgid "Mark as spam, do not delete"
181
+ msgstr "Markeer als spam, niet verwijderen"
182
+
183
+ msgid "Keep the spam in my blog."
184
+ msgstr "Behoud de spam in jouw blog."
185
+
186
+ msgid "Notification by email"
187
+ msgstr "Kennisgevingsbericht per e-mail"
188
+
189
+ msgid "Sending an alert to the admin"
190
+ msgstr "Stuur een melding naar de admin"
191
+
192
+ msgid "Not store the reason in the comment body"
193
+ msgstr "Sla de reden niet op in de reactie inhoud"
194
+
195
+ msgid "Filter name as reason for current suspicion"
196
+ msgstr "Filter naam als reden voor de huidige verdenking"
197
+
198
+ msgid "Delete existing spam after %s days"
199
+ msgstr "Verwijder bestaande spam na %s dagen"
200
+
201
+ msgid "Cleaning up the database from old entries"
202
+ msgstr "Database opschonen"
203
+
204
+ msgid "Limit on %s"
205
+ msgstr "Limiet op %s"
206
+
207
+ msgid "Another type of spam will be deleted immediately"
208
+ msgstr "Een ander type spam wil direct worden verwijderd"
209
+
210
+ msgid "Delete comments by spam reasons"
211
+ msgstr "Verwijder reacties bij spam redenen"
212
+
213
+ msgid "Multiple choice by pressing Ctrl/CMD"
214
+ msgstr "Meerdere keuzes door Ctrl / CMD in te drukken"
215
+
216
+ # Sonstiges
217
+ msgid "More"
218
+ msgstr "Meer"
219
+
220
+ msgid "A few little things"
221
+ msgstr "Een paar kleine dingen"
222
+
223
+ msgid "Statistics on the dashboard"
224
+ msgstr "Statistieken op het dashboard"
225
+
226
+ msgid "Spam detection rate with daily values"
227
+ msgstr "Spam detectie mate met dagelijkse waardes"
228
+
229
+ msgid "Spam counter on the dashboard"
230
+ msgstr "Spam teller op het dashboard"
231
+
232
+ msgid "Amount of identified spam comments"
233
+ msgstr "Aantal geïdentificeerde spam reacties "
234
+
235
+ msgid "Do not check trackbacks / pingbacks"
236
+ msgstr "Trackbacks / pingbacks niet controleren"
237
+
238
+ msgid "No spam check for trackback notifications"
239
+ msgstr "Geen spam controle voor trackback meldingen"
240
+
241
+ msgid "Comment form used outside of posts"
242
+ msgstr "Reactieformulier wordt buiten berichten gebruikt"
243
+
244
+ msgid "Check for comment forms on archive pages"
245
+ msgstr "Controleer voor reactieformulieren op archief pagina's"
246
+
readme.txt CHANGED
@@ -1,21 +1,23 @@
1
  === Antispam Bee ===
2
  Contributors: sergej.mueller
3
- Tags: antispam, spam, comments, trackback
4
  Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=5RDDW9FEHGLG6
5
  Requires at least: 3.8
6
- Tested up to: 3.9
7
  Stable tag: trunk
8
  License: GPLv2 or later
9
- License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
11
 
12
 
13
- Say Goodbye zu Spam in deinem Blog. Kostenlos, werbefrei und datenschutzkonform. Für Kommentare und Trackbacks.
14
 
15
 
16
 
17
  == Description ==
18
 
 
 
19
  Blog-Spam bekämpfen ist die Stärke von *Antispam Bee*. Seit Jahren wird das Plugin darauf trainiert, Spam-Kommentare zuverlässig zu erkennen (auf Wunsch auch sofort zu beseitigen). Dabei greift *Antispam Bee* auf unterschiedliche Techniken zu, die sich zur Identifizierung von Spam-Nachrichten bewährt haben.
20
 
21
 
@@ -58,7 +60,7 @@ Die meisten Auswahlmöglichkeiten innerhalb der Optionsseite sind konfigurierbar
58
 
59
 
60
  = Datenschutz =
61
- In Blogs innerhalb der EU-Länder darf die Option *"Öffentliche Spamdatenbank berücksichtigen"* nicht aktiviert werden, da das Antispam-Plugin ungekürzte IP-Adressen der Kommentatoren dafür verwendet, diese in der öffentlichen Spammer-Datenbank nachzuschlagen und als Spam zu identifizieren. Technisch ist die Verschlüsselung der IP nicht möglich, da Spammer-Datenbanken mit vollständigen, unverschlüsselten IP-Adressen arbeiten. [Weitere Details](http://playground.ebiene.de/antispam-bee-wordpress-plugin/#dnsbl_check)
62
 
63
 
64
  = Schlusswort =
@@ -82,12 +84,14 @@ Freundlich formulierte Fragen rund um das Plugin werden per E-Mail beantwortet.
82
 
83
 
84
  = Unterstützung =
85
- * Per [Flattr](https://flattr.com/t/1323822)
86
- * Per [PayPal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=5RDDW9FEHGLG6)
 
87
 
88
 
89
- = Handbuch =
90
  * [Antispam Bee: Antispam für WordPress](http://playground.ebiene.de/antispam-bee-wordpress-plugin/)
 
91
 
92
 
93
  = Website =
@@ -105,6 +109,14 @@ Freundlich formulierte Fragen rund um das Plugin werden per E-Mail beantwortet.
105
 
106
  == Changelog ==
107
 
 
 
 
 
 
 
 
 
108
  = 2.6.0 =
109
  * DE: Optimierungen für WordPress 3.8
110
  * DE: Zusatzprüfung auf Nicht-UTF-8-Zeichen in Kommentardaten
1
  === Antispam Bee ===
2
  Contributors: sergej.mueller
3
+ Tags: comment, spam, antispam, comments, trackback, protection, prevention
4
  Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=5RDDW9FEHGLG6
5
  Requires at least: 3.8
6
+ Tested up to: 4.0
7
  Stable tag: trunk
8
  License: GPLv2 or later
9
+ License URI: https://www.gnu.org/licenses/gpl-2.0.html
10
 
11
 
12
 
13
+ „...another popular solution to fight spam is Antispam Bee“ Matt Mullenweg, Q&A WordCamp Europe 2014
14
 
15
 
16
 
17
  == Description ==
18
 
19
+ Say Goodbye zu Spam in deinem Blog. Kostenlos, werbefrei und datenschutzkonform. Für Kommentare und Trackbacks.
20
+
21
  Blog-Spam bekämpfen ist die Stärke von *Antispam Bee*. Seit Jahren wird das Plugin darauf trainiert, Spam-Kommentare zuverlässig zu erkennen (auf Wunsch auch sofort zu beseitigen). Dabei greift *Antispam Bee* auf unterschiedliche Techniken zu, die sich zur Identifizierung von Spam-Nachrichten bewährt haben.
22
 
23
 
60
 
61
 
62
  = Datenschutz =
63
+ In Blogs innerhalb der EU-Länder sollte die Option *"Öffentliche Spamdatenbank berücksichtigen"* nicht aktiviert werden, da das Antispam-Plugin dann ungekürzte IP-Adressen der Kommentatoren dafür verwendet, diese in einer öffentlichen Spammer-Datenbank nachzuschlagen, um als Spam zu identifizieren. Technisch ist die Verschlüsselung der IP nicht möglich, da Spammer-Datenbanken mit vollständigen, unverschlüsselten IP-Adressen arbeiten. [Weitere Details](http://playground.ebiene.de/antispam-bee-wordpress-plugin/#dnsbl_check)
64
 
65
 
66
  = Schlusswort =
84
 
85
 
86
  = Unterstützung =
87
+ * Via [Flattr](https://flattr.com/t/1323822)
88
+ * Via [PayPal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=5RDDW9FEHGLG6)
89
+ * Via [Wishlist](https://www.amazon.de/gp/registry/wishlist/2U5I7F9649LOJ/?layout=grid)
90
 
91
 
92
+ = Handbücher =
93
  * [Antispam Bee: Antispam für WordPress](http://playground.ebiene.de/antispam-bee-wordpress-plugin/)
94
+ * [Guide: Spam-Bekämpfung in WordPress](http://cup.wpcoder.de/wordpress-antispam-guide/)
95
 
96
 
97
  = Website =
109
 
110
  == Changelog ==
111
 
112
+ = 2.6.1 =
113
+ * EN: Code refactoring of options management
114
+ * DE: Überarbeitung der Optionen-Verwaltung
115
+ * EN: Support for `HTTP_FORWARDED_FOR` header
116
+ * DE: Berücksichtigung der Header `HTTP_FORWARDED_FOR`
117
+ * *EN: Release time investment (Development & QA): 8,5 h*
118
+ * *DE: Release-Zeitaufwand (Development & QA): 8,5 Stunden*
119
+
120
  = 2.6.0 =
121
  * DE: Optimierungen für WordPress 3.8
122
  * DE: Zusatzprüfung auf Nicht-UTF-8-Zeichen in Kommentardaten