Akismet Privacy Policies - Version 1.1.2

Version Description

  • Link zum Datenschutzhintergrund ergnzt
  • Source-Codex Anpassungen
Download this release

Release Info

Developer Bueltge
Plugin Icon wp plugin Akismet Privacy Policies
Version 1.1.2
Comparing to
See all releases

Code changes from version 1.1.1 to 1.1.2

Files changed (2) hide show
  1. akismet-privacy-policies.php +307 -232
  2. readme.txt +15 -4
akismet-privacy-policies.php CHANGED
@@ -1,394 +1,469 @@
1
  <?php
 
2
  /**
3
  * Plugin Name: Akismet Privacy Policies
4
  * Plugin URI: http://wpde.org/
5
  * Description: Ergänzt das Kommentarformular um datenschutzrechtliche Hinweise bei Nutzung des Plugins Akismet.
6
- * Version: 1.1.1
7
  * Author: Inpsyde GmbH
8
  * Author URI: http://inpsyde.com/
9
  * License: GPLv2+
10
  */
11
-
12
  class Akismet_Privacy_Policies {
13
-
14
  static private $classobj;
15
-
16
  // default for active checkbox on comment form
17
  public $checkbox = 1;
18
- // default for nitoce on comment form
 
19
  public $notice = '<strong>Achtung:</strong> Ich erkläre mich damit einverstanden, dass alle
20
  eingegebenen Daten und meine IP-Adresse nur zum Zweck der Spamvermeidung durch das Programm
21
  <a href="http://akismet.com/">Akismet</a> in den USA überprüft und gespeichert werden.<br />
22
- <a href="[LINK ZU DER DATENSCHUTZERKLÄRUNG EINSETZEN]">Weitere Informationen zu Akismet und Widerrufsmöglichkeiten</a>.';
 
23
  // default for error message, if checkbox is not active on comment form
24
  public $error_message = '<p><strong>Achtung:</strong>
25
  Du hast die datenschutzrechtlichen Hinweise nicht akzeptiert.</p>';
 
26
  // default style to float checkbox
27
  public $style = 'input#akismet_privacy_check { float: left; margin: 7px 7px 7px 0; width: 13px; }';
28
-
29
  /**
30
  * construct
31
- *
32
- * @uses add_filter
33
  * @access public
34
- * @since 0.0.1
35
- * @return void
36
  */
37
  public function __construct() {
38
 
39
  // The plugin is only helpful on german blogs
40
- if ( 'de_DE' !== get_locale() )
41
  return;
42
-
43
- register_deactivation_hook( __FILE__, array( &$this, 'unregister_settings' ) );
44
- register_uninstall_hook( __FILE__, array( 'Akismet_Privacy_Policies', 'unregister_settings' ) );
45
-
46
- add_filter( 'comment_form_defaults', array( $this, 'add_comment_notice' ), 11, 1 );
47
- add_action( 'akismet_privacy_policies', array( $this, 'add_comment_notice' ) );
48
-
 
49
  $options = get_option( 'akismet_privacy_notice_settings' );
50
- if ( empty( $options['checkbox'] ) )
51
- $options['checkbox'] = $this->checkbox;
52
- if ( $options['checkbox'] )
53
- add_action( 'pre_comment_on_post', array( $this, 'error_message' ) );
54
- if ( !isset($options['style']) )
55
- $options['style'] = $this->style;
56
- if ( $options['style'] )
57
- add_action( 'wp_head', array( $this, 'add_style' ) );
58
-
 
 
 
 
59
  // for settings
60
- add_action( 'admin_menu', array( $this, 'add_settings_page' ) );
61
- add_filter( 'plugin_action_links', array( $this, 'plugin_action_links' ), 10, 2 );
62
- add_action( 'admin_init', array( $this, 'register_settings' ) );
63
  }
64
-
65
  /**
66
  * Handler for the action 'init'. Instantiates this class.
67
  *
68
- * @since 0.0.2
69
  * @access public
70
- * @return $classobj
71
  */
72
  public static function get_object() {
73
-
74
  if ( NULL === self::$classobj ) {
75
  self::$classobj = new self;
76
  }
77
-
78
  return self::$classobj;
79
  }
80
-
81
  /**
82
  * return plugin comment data
83
- *
84
- * @since 0.0.2
85
  * @access public
 
86
  * @param $value string, default = 'Version'
87
- * Name, PluginURI, Version, Description, Author, AuthorURI, TextDomain, DomainPath, Network, Title
 
88
  * @return string
89
  */
90
  public function get_plugin_data( $value = 'Version' ) {
91
-
92
  $plugin_data = get_plugin_data( __FILE__ );
93
- $plugin_value = $plugin_data[$value];
94
-
95
  return $plugin_value;
96
  }
97
-
98
  /**
99
- * return content for policies inlcude markup
100
  * use filter hook akismet_privacy_notice_options for change markup or notice
101
- *
102
  * @access public
103
- * @uses apply_filters
104
- * @since 0.0.1
 
105
  * @param array string $arr_comment_defaults
 
106
  * @return array | string $arr_comment_defaults or 4html
107
  */
108
- public function add_comment_notice($arr_comment_defaults) {
109
-
110
- if ( is_user_logged_in() )
111
  return $arr_comment_defaults;
112
-
 
113
  $options = get_option( 'akismet_privacy_notice_settings' );
114
- if ( ! isset( $options['checkbox'] ) || empty( $options['checkbox'] ) && 0 != $options['checkbox'] )
115
- $options['checkbox'] = $this->checkbox;
116
- if ( empty( $options['notice'] ) )
117
- $options['notice'] = $this->notice;
118
-
 
 
119
  $defaults = array(
120
- 'css_class' => 'privacy-notice'
121
- , 'html_element' => 'p'
122
- , 'text' => $options['notice']
123
- , 'checkbox' => $options['checkbox']
124
- , 'position' => 'comment_notes_after'
125
  );
126
-
127
  // Make it filterable
128
  $params = apply_filters( 'akismet_privacy_notice_options', $defaults );
129
-
130
  // Create the output
131
- $html = "\n" . '<' . $params['html_element'];
132
- if ( !empty( $params['css_class'] ) )
133
- $html .= ' class="' . $params['css_class'] . '"';
 
134
  $html .= '>' . "\n";
135
- if ( (bool) $params['checkbox'] ) {
136
  $html .= '<input type="checkbox" id="akismet_privacy_check" name="akismet_privacy_check" value="1" aria-required="true" />' . "\n";
137
  $html .= '<label for="akismet_privacy_check">';
138
  }
139
- $html .= $params['text'];
140
- if ( (bool) $params['checkbox'] )
141
  $html .= '</label>';
142
- $html .='</' . $params['html_element'] . '>' . "\n";
143
-
 
144
  // Add the text to array
145
- if ( isset($arr_comment_defaults['comment_notes_after']) ) {
146
- $arr_comment_defaults['comment_notes_after'] .= $html;
 
147
  return $arr_comment_defaults;
148
  } else { // for custom hook in theme
149
  $arr_comment_defaults = $html;
 
150
  echo $arr_comment_defaults;
151
  }
 
 
152
  }
153
-
154
  /**
155
  * Return Message on inactive checkbox
156
  * Use filter akismet_privacy_error_message for change text or markup
157
- *
158
- * @uses wp_die
159
  * @access public
160
- * @since 0.0.2
161
  * @return void
162
  */
163
  public function error_message() {
164
-
165
- if ( is_user_logged_in() )
166
  return NULL;
167
-
 
168
  $options = get_option( 'akismet_privacy_notice_settings' );
169
- if ( empty( $options['error_message'] ) )
170
- $options['error_message'] = $this->error_message;
171
-
 
172
  // check for checkbox active
173
- if ( isset( $_POST['comment'] ) && ( ! isset( $_POST['akismet_privacy_check'] ) ) ) {
174
- $message = apply_filters( 'akismet_privacy_error_message', $options['error_message'] );
175
  wp_die( $message );
176
  }
177
  }
178
-
179
  /**
180
  * Echo style in wp_head
181
- *
182
- * @uses get_option, plugin_action_links, plugin_basename
183
  * @access public
184
- * @since 0.0.2
185
  * @return string $links
186
  */
187
  public function add_style() {
188
-
189
- if ( is_user_logged_in() )
190
  return NULL;
191
-
 
192
  $options = get_option( 'akismet_privacy_notice_settings' );
193
- if ( empty( $options['style'] ) )
194
- $options['style'] = $this->style;
195
-
196
- echo '<style type="text/css" media="screen">' . $options['style'] . '</style>';
 
197
  }
198
-
199
  /**
200
  * Add settings link on plugins.php in backend
201
- *
202
- * @uses plugin_basename
203
  * @access public
204
- * @param array $links, string $file
205
- * @since 0.0.2
 
 
 
 
206
  * @return string $links
207
  */
208
  public function plugin_action_links( $links, $file ) {
209
- if ( plugin_basename( dirname(__FILE__).'/akismet-privacy-policies.php' ) == $file ) {
210
- $links[] = '<a href="options-general.php?page=akismet_privacy_notice_settings_group">' . __('Settings') . '</a>';
 
 
 
211
  }
212
-
213
  return $links;
214
  }
215
-
216
  /**
217
  * Add settings page in WP backend
218
- *
219
- * @uses add_options_page
220
  * @access public
221
- * @since 0.0.2
222
  * @return void
223
  */
224
  public function add_settings_page() {
225
-
226
- add_options_page(
227
- 'Akismet Privacy Policies Settings',
228
- 'Akismet Privacy Policies',
229
- 'manage_options',
230
- 'akismet_privacy_notice_settings_group',
231
  array( $this, 'get_settings_page' )
232
  );
233
-
234
- add_action( 'contextual_help', array( $this, 'contextual_help' ), 10, 3 );
235
  }
236
-
237
  /**
238
  * Return form and markup on settings page
239
- *
240
- * @uses settings_fields, normalize_whitespace
241
  * @access public
242
- * @since 0.0.2
243
  * @return void
244
  */
245
  public function get_settings_page() {
246
- ?>
247
- <div class="wrap">
248
- <h2><?php echo $this->get_plugin_data('Name'); ?></h2>
249
-
250
- <form method="post" action="options.php">
251
- <?php
252
- settings_fields( 'akismet_privacy_notice_settings_group' );
253
- $options = get_option( 'akismet_privacy_notice_settings' );
254
- if ( ! isset($options['checkbox']) || empty( $options['checkbox'] ) && 0 != $options['checkbox'] )
255
- $options['checkbox'] = $this->checkbox;
256
- if ( empty( $options['notice'] ) )
257
- $options['notice'] = normalize_whitespace( $this->notice );
258
- if ( empty( $options['error_message'] ) )
259
- $options['error_message'] = normalize_whitespace( $this->error_message );
260
- if ( empty( $options['style'] ) )
261
- $options['style'] = normalize_whitespace( $this->style );
262
  ?>
263
-
264
- <table class="form-table">
265
- <tbody>
266
- <tr valign="top">
267
- <th scope="row"><label for="akismet_privacy_checkbox">Aktives Prüfen via Checkbox</label></th>
268
- <td><input type="checkbox" id="akismet_privacy_checkbox" name="akismet_privacy_notice_settings[checkbox]" value="1"
269
- <?php if ( isset( $options['checkbox'] ) ) checked( '1', $options['checkbox'] ); ?> />
270
- </td>
271
- </tr>
272
- <tr valign="top">
273
- <th scope="row"><label for="akismet_privacy_notice">Datenschutzrechtlicher Hinweis</label></th>
274
- <td><textarea id="akismet_privacy_notice" name="akismet_privacy_notice_settings[notice]" cols="80" rows="10"
275
- aria-required="true" ><?php if ( isset($options['notice']) ) echo $options['notice']; ?></textarea>
276
- <br /><strong>Hinweis:</strong> HTML möglich
277
- <br /><strong>Achtung:</strong> Im Hinweistext musst du manuell den Link zu deiner Datenschutzerklärung einfügen. Einen Mustertext für die Datenschutzerklärung findest du im Reiter "Hilfe", rechts oben auf dieser Seite.
278
-
279
- <br /><strong>Beispiel:</strong> <?php echo esc_html( $this->notice ); ?>
280
- </td>
281
- </tr>
282
- <tr valign="top">
283
- <th scope="row"><label for="akismet_privacy_error_message">Fehler-Hinweis</label></th>
284
- <td><textarea id="akismet_privacy_error_message" name="akismet_privacy_notice_settings[error_message]" cols="80"
285
- rows="10" aria-required="true" ><?php if ( isset($options['error_message']) ) echo $options['error_message']; ?></textarea>
286
- <br /><strong>Hinweis:</strong> HTML möglich
287
- <br /><strong>Beispiel:</strong> <?php echo esc_html( $this->error_message ); ?>
288
- </td>
289
- </tr>
290
- <tr valign="top">
291
- <th scope="row"><label for="akismet_privacy_style">Stylesheet</label></th>
292
- <td><textarea id="akismet_privacy_style" name="akismet_privacy_notice_settings[style]" cols="80"
293
- rows="10" aria-required="true" ><?php if ( isset($options['style']) ) echo $options['style']; ?></textarea>
294
- <br /><strong>Hinweis:</strong> CSS notwendig
295
- <br /><strong>Beispiel:</strong> <?php echo esc_html( $this->style ); ?>
296
- </td>
297
- </tr>
298
- </tbody>
299
- </table>
300
-
301
- <p class="submit">
302
- <input type="submit" class="button-primary" value="<?php _e('Save Changes') ?>" />
303
- </p>
304
- <p>Weitere Informationen zum Thema findest du in <a href="http://faq.wpde.org/hinweise-zum-datenschutz-beim-einsatz-von-akismet-in-deutschland/">der WordPress Deutschland FAQ</a>. Dieses Plugin wurde entwickelt von der <a href="http://inpsyde.com/" title="Besuch die Homepage der Inpsyde GmbH">Inpsyde GmbH</a> mit rechtlicher Unterstützung durch die Rechtsanwaltskanzlei <a href="http://spreerecht.de/" title="Besuch die Homepage der Kanzlei Schwenke und Dramburg">SCHWENKE &amp; DRAMBURG.</a></p>
305
-
306
- </form>
307
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
308
  <?php
309
  }
310
-
311
  /**
312
  * Validate settings for options
313
- *
314
- * @uses normalize_whitespace
315
  * @access public
 
316
  * @param array $value
317
- * @since 0.0.2
 
318
  * @return string $value
319
  */
320
  public function validate_settings( $value ) {
321
-
322
- if ( isset( $value['checkbox'] ) && 1 == $value['checkbox'] )
323
- $value['checkbox'] = 1;
324
- else
325
- $value['checkbox'] = 0;
326
- $value['notice'] = normalize_whitespace( $value['notice'] );
327
- $value['error_message'] = normalize_whitespace( $value['error_message'] );
328
- $value['style'] = normalize_whitespace( $value['style'] );
329
-
 
330
  return $value;
331
  }
332
-
333
  /**
334
  * Register settings for options
335
- *
336
- * @uses register_setting
337
  * @access public
338
- * @since 0.0.2
339
  * @return void
340
  */
341
  public function register_settings() {
342
-
343
- register_setting( 'akismet_privacy_notice_settings_group', 'akismet_privacy_notice_settings', array( $this, 'validate_settings' ) );
 
 
 
344
  }
345
-
346
  /**
347
  * Unregister and delete settings; clean database
348
- *
349
- * @uses unregister_setting, delete_option
350
  * @access public
351
- * @since 0.0.2
352
  * @return void
353
  */
354
  public function unregister_settings() {
355
-
356
  unregister_setting( 'akismet_privacy_notice_settings_group', 'akismet_privacy_notice_settings' );
357
  delete_option( 'akismet_privacy_notice_settings' );
358
  }
359
-
360
  /**
361
  * Add help text
362
- *
363
- * @uses normalize_whitespace
 
364
  * @param string $contextual_help
365
  * @param string $screen_id
366
- * @param string $screen
367
- * @since 0.0.2
 
 
368
  * @return string $contextual_help
369
  */
370
- public function contextual_help( $contextual_help, $screen_id, $screen ) {
371
-
372
- if ( 'settings_page_akismet_privacy_notice_settings_group' !== $screen_id )
373
- return $contextual_help;
374
-
375
- $contextual_help =
376
- '<p>' . __( 'Das Plugin ergänzt das Kommentarformular um datenschutzrechtliche Hinweise,
377
- die erforderlich sind, wenn du das Plugin Akismet einsetzt.' ) . '</p>'
378
- . '<ul>'
379
- . '<li>' . __( 'Du kannst diverse Einstellungen vornehmen, nutze dazu die Möglichkeiten innerhalb der Einstellungen.' ) . '</li>'
380
- . '<li>' . __( 'Eingeloggte Anwender sehen den Hinweis am Kommentarformular nicht.' ) . '</li>'
381
- . '<li><strong>' . __( 'Im Hinweistext musst du den Link zu deiner Datenschutzerklärung manuell einfügen.' ) . '</strong></li>'
382
- . '<li>' . __( 'Für die Datenschutzerklärung kannst du folgende Vorlage verwenden: <br/>
383
- <code>&lt;strong&gt;Akismet Anti-Spam&lt;/strong&gt;
384
- Diese Seite nutzt das&nbsp;&lt;a href="http://akismet.com/"&gt;Akismet</a>-Plugin der&nbsp;&lt;a href="http://automattic.com/"&gt;Automattic&lt;/a&gt; Inc., 60 29th Street #343, San Francisco, CA 94110-4929, USA. Mit Hilfe dieses Plugins werden Kommentare von echten Menschen von Spam-Kommentaren unterschieden. Dazu werden alle Kommentarangaben an einen Server in den USA verschickt, wo sie analysiert und für Vergleichszwecke vier Tage lang gespeichert werden. Ist ein Kommentar als Spam eingestuft worden, werden die Daten über diese Zeit hinaus gespeichert. Zu diesen Angaben gehören der eingegebene Name, die Emailadresse, die IP-Adresse, der Kommentarinhalt, der Referrer, Angaben zum verwendeten Browser sowie dem Computersystem und die Zeit des Eintrags. Sie können gerne Pseudonyme nutzen, oder auf die Eingabe des Namens oder der Emailadresse verzichten. Sie können die Übertragung der Daten komplett verhindern, in dem Sie unser Kommentarsystem nicht nutzen. Das wäre schade, aber leider sehen wir sonst keine Alternativen, die ebenso effektiv arbeiten. Sie können der Nutzung Ihrer Daten für die Zukunft unter&nbsp;&lt;a href="mailto:support@wordpress.com" target="_blank"&gt;support@wordpress.com&lt;/a&gt;, Betreff “Deletion of Data stored by Akismet” unter Angabe/Beschreibung der gespeicherten Daten&nbsp;widersprechen.</code>' ) . '</li>'
385
- . '<li>' . __( 'Weitere Informationen zum Thema findest du in <a href="http://faq.wpde.org/hinweise-zum-datenschutz-beim-einsatz-von-akismet-in-deutschland/">diesem Artikel der WordPress Deutschland FAQ</a>' ) . '</li>'
386
- . '<li>' . __( 'Dieses Plugin wurde entwickelt von der <a href="http://inpsyde.com/" title="Besuch die Homepage der Inpsyde GmbH">Inpsyde GmbH</a> mit rechtlicher Unterstützung durch die Rechtsanwaltskanzlei <a href="http://spreerecht.de/" title="Besuch die Homepage der Kanzlei Schwenke und Dramburg">SCHWENKE &amp; DRAMBURG</a>.') . '</li>'
387
- . '</ul>';
388
-
389
- return normalize_whitespace( $contextual_help );
390
  }
391
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
392
  } // end class
393
 
394
  if ( function_exists( 'add_action' ) && class_exists( 'Akismet_Privacy_Policies' ) ) {
1
  <?php
2
+
3
  /**
4
  * Plugin Name: Akismet Privacy Policies
5
  * Plugin URI: http://wpde.org/
6
  * Description: Ergänzt das Kommentarformular um datenschutzrechtliche Hinweise bei Nutzung des Plugins Akismet.
7
+ * Version: 1.1.2
8
  * Author: Inpsyde GmbH
9
  * Author URI: http://inpsyde.com/
10
  * License: GPLv2+
11
  */
 
12
  class Akismet_Privacy_Policies {
13
+
14
  static private $classobj;
15
+
16
  // default for active checkbox on comment form
17
  public $checkbox = 1;
18
+
19
+ // default for notice on comment form
20
  public $notice = '<strong>Achtung:</strong> Ich erkläre mich damit einverstanden, dass alle
21
  eingegebenen Daten und meine IP-Adresse nur zum Zweck der Spamvermeidung durch das Programm
22
  <a href="http://akismet.com/">Akismet</a> in den USA überprüft und gespeichert werden.<br />
23
+ <a href="http://faq.wpde.org/hinweise-zum-datenschutz-beim-einsatz-von-akismet-in-deutschland/">Weitere Informationen zu Akismet und Widerrufsmöglichkeiten</a>.';
24
+
25
  // default for error message, if checkbox is not active on comment form
26
  public $error_message = '<p><strong>Achtung:</strong>
27
  Du hast die datenschutzrechtlichen Hinweise nicht akzeptiert.</p>';
28
+
29
  // default style to float checkbox
30
  public $style = 'input#akismet_privacy_check { float: left; margin: 7px 7px 7px 0; width: 13px; }';
31
+
32
  /**
33
  * construct
34
+ *
35
+ * @uses add_filter
36
  * @access public
37
+ * @since 0.0.1
38
+ * @return \Akismet_Privacy_Policies
39
  */
40
  public function __construct() {
41
 
42
  // The plugin is only helpful on german blogs
43
+ if ( 'de_DE' !== get_locale() ) {
44
  return;
45
+ }
46
+
47
+ register_deactivation_hook( __FILE__, array( &$this, 'unregister_settings' ) );
48
+ register_uninstall_hook( __FILE__, array( 'Akismet_Privacy_Policies', 'unregister_settings' ) );
49
+
50
+ add_filter( 'comment_form_defaults', array( $this, 'add_comment_notice' ), 11, 1 );
51
+ add_action( 'akismet_privacy_policies', array( $this, 'add_comment_notice' ) );
52
+
53
  $options = get_option( 'akismet_privacy_notice_settings' );
54
+ if ( empty( $options[ 'checkbox' ] ) ) {
55
+ $options[ 'checkbox' ] = $this->checkbox;
56
+ }
57
+ if ( $options[ 'checkbox' ] ) {
58
+ add_action( 'pre_comment_on_post', array( $this, 'error_message' ) );
59
+ }
60
+ if ( ! isset( $options[ 'style' ] ) ) {
61
+ $options[ 'style' ] = $this->style;
62
+ }
63
+ if ( $options[ 'style' ] ) {
64
+ add_action( 'wp_head', array( $this, 'add_style' ) );
65
+ }
66
+
67
  // for settings
68
+ add_action( 'admin_menu', array( $this, 'add_settings_page' ) );
69
+ add_filter( 'plugin_action_links', array( $this, 'plugin_action_links' ), 10, 2 );
70
+ add_action( 'admin_init', array( $this, 'register_settings' ) );
71
  }
72
+
73
  /**
74
  * Handler for the action 'init'. Instantiates this class.
75
  *
76
+ * @since 0.0.2
77
  * @access public
78
+ * @return \Akismet_Privacy_Policies $classobj
79
  */
80
  public static function get_object() {
81
+
82
  if ( NULL === self::$classobj ) {
83
  self::$classobj = new self;
84
  }
85
+
86
  return self::$classobj;
87
  }
88
+
89
  /**
90
  * return plugin comment data
91
+ *
92
+ * @since 0.0.2
93
  * @access public
94
+ *
95
  * @param $value string, default = 'Version'
96
+ * Name, PluginURI, Version, Description, Author, AuthorURI, TextDomain, DomainPath, Network, Title
97
+ *
98
  * @return string
99
  */
100
  public function get_plugin_data( $value = 'Version' ) {
101
+
102
  $plugin_data = get_plugin_data( __FILE__ );
103
+ $plugin_value = $plugin_data[ $value ];
104
+
105
  return $plugin_value;
106
  }
107
+
108
  /**
109
+ * return content for policies include markup
110
  * use filter hook akismet_privacy_notice_options for change markup or notice
111
+ *
112
  * @access public
113
+ * @uses apply_filters
114
+ * @since 0.0.1
115
+ *
116
  * @param array string $arr_comment_defaults
117
+ *
118
  * @return array | string $arr_comment_defaults or 4html
119
  */
120
+ public function add_comment_notice( $arr_comment_defaults ) {
121
+
122
+ if ( is_user_logged_in() ) {
123
  return $arr_comment_defaults;
124
+ }
125
+
126
  $options = get_option( 'akismet_privacy_notice_settings' );
127
+ if ( ! isset( $options[ 'checkbox' ] ) || empty( $options[ 'checkbox' ] ) && 0 != $options[ 'checkbox' ] ) {
128
+ $options[ 'checkbox' ] = $this->checkbox;
129
+ }
130
+ if ( empty( $options[ 'notice' ] ) ) {
131
+ $options[ 'notice' ] = $this->notice;
132
+ }
133
+
134
  $defaults = array(
135
+ 'css_class' => 'privacy-notice',
136
+ 'html_element' => 'p',
137
+ 'text' => $options[ 'notice' ],
138
+ 'checkbox' => $options[ 'checkbox' ],
139
+ 'position' => 'comment_notes_after'
140
  );
141
+
142
  // Make it filterable
143
  $params = apply_filters( 'akismet_privacy_notice_options', $defaults );
144
+
145
  // Create the output
146
+ $html = "\n" . '<' . $params[ 'html_element' ];
147
+ if ( ! empty( $params[ 'css_class' ] ) ) {
148
+ $html .= ' class="' . $params[ 'css_class' ] . '"';
149
+ }
150
  $html .= '>' . "\n";
151
+ if ( (bool) $params[ 'checkbox' ] ) {
152
  $html .= '<input type="checkbox" id="akismet_privacy_check" name="akismet_privacy_check" value="1" aria-required="true" />' . "\n";
153
  $html .= '<label for="akismet_privacy_check">';
154
  }
155
+ $html .= $params[ 'text' ];
156
+ if ( (bool) $params[ 'checkbox' ] ) {
157
  $html .= '</label>';
158
+ }
159
+ $html .= '</' . $params[ 'html_element' ] . '>' . "\n";
160
+
161
  // Add the text to array
162
+ if ( isset( $arr_comment_defaults[ 'comment_notes_after' ] ) ) {
163
+ $arr_comment_defaults[ 'comment_notes_after' ] .= $html;
164
+
165
  return $arr_comment_defaults;
166
  } else { // for custom hook in theme
167
  $arr_comment_defaults = $html;
168
+
169
  echo $arr_comment_defaults;
170
  }
171
+
172
+ return NULL;
173
  }
174
+
175
  /**
176
  * Return Message on inactive checkbox
177
  * Use filter akismet_privacy_error_message for change text or markup
178
+ *
179
+ * @uses wp_die
180
  * @access public
181
+ * @since 0.0.2
182
  * @return void
183
  */
184
  public function error_message() {
185
+
186
+ if ( is_user_logged_in() ) {
187
  return NULL;
188
+ }
189
+
190
  $options = get_option( 'akismet_privacy_notice_settings' );
191
+ if ( empty( $options[ 'error_message' ] ) ) {
192
+ $options[ 'error_message' ] = $this->error_message;
193
+ }
194
+
195
  // check for checkbox active
196
+ if ( isset( $_POST[ 'comment' ] ) && ( ! isset( $_POST[ 'akismet_privacy_check' ] ) ) ) {
197
+ $message = apply_filters( 'akismet_privacy_error_message', $options[ 'error_message' ] );
198
  wp_die( $message );
199
  }
200
  }
201
+
202
  /**
203
  * Echo style in wp_head
204
+ *
205
+ * @uses get_option, plugin_action_links, plugin_basename
206
  * @access public
207
+ * @since 0.0.2
208
  * @return string $links
209
  */
210
  public function add_style() {
211
+
212
+ if ( is_user_logged_in() ) {
213
  return NULL;
214
+ }
215
+
216
  $options = get_option( 'akismet_privacy_notice_settings' );
217
+ if ( empty( $options[ 'style' ] ) ) {
218
+ $options[ 'style' ] = $this->style;
219
+ }
220
+
221
+ echo '<style type="text/css" media="screen">' . $options[ 'style' ] . '</style>';
222
  }
223
+
224
  /**
225
  * Add settings link on plugins.php in backend
226
+ *
227
+ * @uses plugin_basename
228
  * @access public
229
+ *
230
+ * @param array $links , string $file
231
+ *
232
+ * @param $file
233
+ *
234
+ * @since 0.0.2
235
  * @return string $links
236
  */
237
  public function plugin_action_links( $links, $file ) {
238
+
239
+ if ( plugin_basename( dirname( __FILE__ ) . '/akismet-privacy-policies.php' ) == $file ) {
240
+ $links[ ] = '<a href="options-general.php?page=akismet_privacy_notice_settings_group">' . __(
241
+ 'Settings'
242
+ ) . '</a>';
243
  }
244
+
245
  return $links;
246
  }
247
+
248
  /**
249
  * Add settings page in WP backend
250
+ *
251
+ * @uses add_options_page
252
  * @access public
253
+ * @since 0.0.2
254
  * @return void
255
  */
256
  public function add_settings_page() {
257
+
258
+ add_options_page(
259
+ 'Akismet Privacy Policies Settings',
260
+ 'Akismet Privacy Policies',
261
+ 'manage_options',
262
+ 'akismet_privacy_notice_settings_group',
263
  array( $this, 'get_settings_page' )
264
  );
265
+
266
+ add_action( 'contextual_help', array( $this, 'contextual_help' ), 10, 2 );
267
  }
268
+
269
  /**
270
  * Return form and markup on settings page
271
+ *
272
+ * @uses settings_fields, normalize_whitespace
273
  * @access public
274
+ * @since 0.0.2
275
  * @return void
276
  */
277
  public function get_settings_page() {
278
+
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
279
  ?>
280
+ <div class="wrap">
281
+ <h2><?php echo $this->get_plugin_data( 'Name' ); ?></h2>
282
+
283
+ <form method="post" action="options.php">
284
+ <?php
285
+ settings_fields( 'akismet_privacy_notice_settings_group' );
286
+ $options = get_option( 'akismet_privacy_notice_settings' );
287
+ if ( ! isset( $options[ 'checkbox' ] ) || empty( $options[ 'checkbox' ] ) && 0 != $options[ 'checkbox' ] ) {
288
+ $options[ 'checkbox' ] = $this->checkbox;
289
+ }
290
+ if ( empty( $options[ 'notice' ] ) ) {
291
+ $options[ 'notice' ] = normalize_whitespace( $this->notice );
292
+ }
293
+ if ( empty( $options[ 'error_message' ] ) ) {
294
+ $options[ 'error_message' ] = normalize_whitespace( $this->error_message );
295
+ }
296
+ if ( empty( $options[ 'style' ] ) ) {
297
+ $options[ 'style' ] = normalize_whitespace( $this->style );
298
+ }
299
+ ?>
300
+
301
+ <table class="form-table">
302
+ <tbody>
303
+ <tr valign="top">
304
+ <th scope="row"><label for="akismet_privacy_checkbox">Aktives Prüfen via Checkbox</label></th>
305
+ <td>
306
+ <input type="checkbox" id="akismet_privacy_checkbox" name="akismet_privacy_notice_settings[checkbox]" value="1"
307
+ <?php if ( isset( $options[ 'checkbox' ] ) ) {
308
+ checked( '1', $options[ 'checkbox' ] );
309
+ } ?> />
310
+ </td>
311
+ </tr>
312
+ <tr valign="top">
313
+ <th scope="row"><label for="akismet_privacy_notice">Datenschutzrechtlicher Hinweis</label></th>
314
+ <td>
315
+ <textarea id="akismet_privacy_notice" name="akismet_privacy_notice_settings[notice]" cols="80" rows="10"
316
+ aria-required="true"><?php if ( isset( $options[ 'notice' ] ) ) {
317
+ echo $options[ 'notice' ];
318
+ } ?></textarea>
319
+ <br /><strong>Hinweis:</strong> HTML möglich
320
+ <br /><strong>Achtung:</strong> Im Hinweistext musst du manuell den Link zu deiner Datenschutzerklärung einfügen. Einen Mustertext für die Datenschutzerklärung findest du im Reiter "Hilfe", rechts oben auf dieser Seite.
321
+
322
+ <br /><strong>Beispiel:</strong> <?php echo esc_html( $this->notice ); ?>
323
+ </td>
324
+ </tr>
325
+ <tr valign="top">
326
+ <th scope="row"><label for="akismet_privacy_error_message">Fehler-Hinweis</label></th>
327
+ <td>
328
+ <textarea id="akismet_privacy_error_message" name="akismet_privacy_notice_settings[error_message]" cols="80"
329
+ rows="10" aria-required="true"><?php if ( isset( $options[ 'error_message' ] ) ) {
330
+ echo $options[ 'error_message' ];
331
+ } ?></textarea>
332
+ <br /><strong>Hinweis:</strong> HTML möglich
333
+ <br /><strong>Beispiel:</strong> <?php echo esc_html( $this->error_message ); ?>
334
+ </td>
335
+ </tr>
336
+ <tr valign="top">
337
+ <th scope="row"><label for="akismet_privacy_style">Stylesheet</label></th>
338
+ <td><textarea id="akismet_privacy_style" name="akismet_privacy_notice_settings[style]" cols="80"
339
+ rows="10" aria-required="true"><?php if ( isset( $options[ 'style' ] ) ) {
340
+ echo $options[ 'style' ];
341
+ } ?></textarea>
342
+ <br /><strong>Hinweis:</strong> CSS notwendig
343
+ <br /><strong>Beispiel:</strong> <?php echo esc_html( $this->style ); ?>
344
+ </td>
345
+ </tr>
346
+ </tbody>
347
+ </table>
348
+
349
+ <p class="submit">
350
+ <input type="submit" class="button-primary" value="<?php _e( 'Save Changes' ) ?>" />
351
+ </p>
352
+
353
+ <p>Weitere Informationen zum Thema findest du in
354
+ <a href="http://faq.wpde.org/hinweise-zum-datenschutz-beim-einsatz-von-akismet-in-deutschland/">der WordPress Deutschland FAQ</a>. Dieses Plugin wurde entwickelt von der
355
+ <a href="http://inpsyde.com/" title="Besuch die Homepage der Inpsyde GmbH">Inpsyde GmbH</a> mit rechtlicher Unterstützung durch die Rechtsanwaltskanzlei
356
+ <a href="http://spreerecht.de/" title="Besuch die Homepage der Kanzlei Schwenke und Dramburg">SCHWENKE &amp; DRAMBURG.</a>
357
+ </p>
358
+
359
+ </form>
360
+ </div>
361
  <?php
362
  }
363
+
364
  /**
365
  * Validate settings for options
366
+ *
367
+ * @uses normalize_whitespace
368
  * @access public
369
+ *
370
  * @param array $value
371
+ *
372
+ * @since 0.0.2
373
  * @return string $value
374
  */
375
  public function validate_settings( $value ) {
376
+
377
+ if ( isset( $value[ 'checkbox' ] ) && 1 == $value[ 'checkbox' ] ) {
378
+ $value[ 'checkbox' ] = 1;
379
+ } else {
380
+ $value[ 'checkbox' ] = 0;
381
+ }
382
+ $value[ 'notice' ] = normalize_whitespace( $value[ 'notice' ] );
383
+ $value[ 'error_message' ] = normalize_whitespace( $value[ 'error_message' ] );
384
+ $value[ 'style' ] = normalize_whitespace( $value[ 'style' ] );
385
+
386
  return $value;
387
  }
388
+
389
  /**
390
  * Register settings for options
391
+ *
392
+ * @uses register_setting
393
  * @access public
394
+ * @since 0.0.2
395
  * @return void
396
  */
397
  public function register_settings() {
398
+
399
+ register_setting(
400
+ 'akismet_privacy_notice_settings_group', 'akismet_privacy_notice_settings',
401
+ array( $this, 'validate_settings' )
402
+ );
403
  }
404
+
405
  /**
406
  * Unregister and delete settings; clean database
407
+ *
408
+ * @uses unregister_setting, delete_option
409
  * @access public
410
+ * @since 0.0.2
411
  * @return void
412
  */
413
  public function unregister_settings() {
414
+
415
  unregister_setting( 'akismet_privacy_notice_settings_group', 'akismet_privacy_notice_settings' );
416
  delete_option( 'akismet_privacy_notice_settings' );
417
  }
418
+
419
  /**
420
  * Add help text
421
+ *
422
+ * @uses normalize_whitespace
423
+ *
424
  * @param string $contextual_help
425
  * @param string $screen_id
426
+ *
427
+ * @internal param string $screen
428
+ *
429
+ * @since 0.0.2
430
  * @return string $contextual_help
431
  */
432
+ public function contextual_help( $contextual_help, $screen_id ) {
433
+
434
+ if ( 'settings_page_akismet_privacy_notice_settings_group' !== $screen_id ) {
435
+ return $contextual_help;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
436
  }
437
+
438
+ $contextual_help =
439
+ '<p>' . __(
440
+ 'Das Plugin ergänzt das Kommentarformular um datenschutzrechtliche Hinweise,
441
+ die erforderlich sind, wenn du das Plugin Akismet einsetzt.'
442
+ ) . '</p>'
443
+ . '<ul>'
444
+ . '<li>' . __(
445
+ 'Du kannst diverse Einstellungen vornehmen, nutze dazu die Möglichkeiten innerhalb der Einstellungen.'
446
+ ) . '</li>'
447
+ . '<li>' . __( 'Eingeloggte Anwender sehen den Hinweis am Kommentarformular nicht.' ) . '</li>'
448
+ . '<li><strong>' . __(
449
+ 'Im Hinweistext musst du den Link zu deiner Datenschutzerklärung manuell einfügen.'
450
+ ) . '</strong></li>'
451
+ . '<li>' . __(
452
+ 'Für die Datenschutzerklärung kannst du folgende Vorlage verwenden: <br/>
453
+ <code>&lt;strong&gt;Akismet Anti-Spam&lt;/strong&gt;
454
+ Diese Seite nutzt das&nbsp;&lt;a href="http://akismet.com/"&gt;Akismet</a>-Plugin der&nbsp;&lt;a href="http://automattic.com/"&gt;Automattic&lt;/a&gt; Inc., 60 29th Street #343, San Francisco, CA 94110-4929, USA. Mit Hilfe dieses Plugins werden Kommentare von echten Menschen von Spam-Kommentaren unterschieden. Dazu werden alle Kommentarangaben an einen Server in den USA verschickt, wo sie analysiert und für Vergleichszwecke vier Tage lang gespeichert werden. Ist ein Kommentar als Spam eingestuft worden, werden die Daten über diese Zeit hinaus gespeichert. Zu diesen Angaben gehören der eingegebene Name, die Emailadresse, die IP-Adresse, der Kommentarinhalt, der Referrer, Angaben zum verwendeten Browser sowie dem Computersystem und die Zeit des Eintrags. Sie können gerne Pseudonyme nutzen, oder auf die Eingabe des Namens oder der Emailadresse verzichten. Sie können die Übertragung der Daten komplett verhindern, in dem Sie unser Kommentarsystem nicht nutzen. Das wäre schade, aber leider sehen wir sonst keine Alternativen, die ebenso effektiv arbeiten. Sie können der Nutzung Ihrer Daten für die Zukunft unter&nbsp;&lt;a href="mailto:support@wordpress.com" target="_blank"&gt;support@wordpress.com&lt;/a&gt;, Betreff “Deletion of Data stored by Akismet” unter Angabe/Beschreibung der gespeicherten Daten&nbsp;widersprechen.</code>'
455
+ ) . '</li>'
456
+ . '<li>' . __(
457
+ 'Weitere Informationen zum Thema findest du in <a href="http://faq.wpde.org/hinweise-zum-datenschutz-beim-einsatz-von-akismet-in-deutschland/">diesem Artikel der WordPress Deutschland FAQ</a>'
458
+ ) . '</li>'
459
+ . '<li>' . __(
460
+ 'Dieses Plugin wurde entwickelt von der <a href="http://inpsyde.com/" title="Besuch die Homepage der Inpsyde GmbH">Inpsyde GmbH</a> mit rechtlicher Unterstützung durch die Rechtsanwaltskanzlei <a href="http://spreerecht.de/" title="Besuch die Homepage der Kanzlei Schwenke und Dramburg">SCHWENKE &amp; DRAMBURG</a>.'
461
+ ) . '</li>'
462
+ . '</ul>';
463
+
464
+ return normalize_whitespace( $contextual_help );
465
+ }
466
+
467
  } // end class
468
 
469
  if ( function_exists( 'add_action' ) && class_exists( 'Akismet_Privacy_Policies' ) ) {
readme.txt CHANGED
@@ -2,8 +2,8 @@
2
  Contributors: inpsyde, Bueltge
3
  Tags: akismet, privacy, spam
4
  Requires at least: 3.0
5
- Tested up to: 4.0
6
- Stable tag: 1.1.1
7
 
8
  Ergänzt das Kommentarformular um datenschutzrechtliche Hinweise bei Nutzung des Plugins Akismet.
9
 
@@ -12,12 +12,18 @@ Der Einsatz des Anti-Spam-Plugins Akismet ist in Deutschland aus datenschutzrech
12
 
13
  Um keine Angriffsfläche für Abmahnungen zu bieten, muss man die Benutzer vor dem Kommentieren auf das Speichern dieser Daten hinweisen. Dies übernimmt das Plugin.
14
 
15
- **Made by [Inpsyde](http://inpsyde.com) &middot; We love WordPress**
 
 
 
 
16
 
17
  == Installation ==
18
  1. Plugin herunterladen, entpacken, in den Ordner `wp-content/plugins/` laden und aktivieren. Oder direkt über den Adminbereich und 'Plugins' - 'Installieren' das Plugin suchen und installieren.
19
  2. Das Plugin sollte nun automatisch unter dem Kommentarfeld den Hinweistext anzeigen. Falls nicht, muss im Theme (z.B. comments.php) manuell folgender Code innerhalb des Kommentar-Formulares, innerhalb `<form>...</form>` - da wo der Hinweis erscheinen soll, eingefügt werden:
20
- `<?php do_action( 'akismet_privacy_policies' ); ?>`
 
 
21
  Der Aufruf muss an der Stelle des Templates statt finden, wo die Ausgabe erscheinen soll.
22
 
23
  == Frequently Asked Questions ==
@@ -35,6 +41,10 @@ Rechtsanwalt Thomas Schwenke klärt in einem Artikel auf: [Usability VS Datensch
35
  2. Die optionalen Einstellungen im Backend von WordPress
36
 
37
  == Changelog ==
 
 
 
 
38
  = 1.1.1 =
39
  * Prüfung auf Sprache der WordPress Installation, nur bei `de_DE` als Sprachschlüssel, werden die Hinweise ergänzt
40
 
@@ -43,3 +53,4 @@ Rechtsanwalt Thomas Schwenke klärt in einem Artikel auf: [Usability VS Datensch
43
 
44
  = 1.0.0 =
45
  * Release first version
 
2
  Contributors: inpsyde, Bueltge
3
  Tags: akismet, privacy, spam
4
  Requires at least: 3.0
5
+ Tested up to: 4.9
6
+ Stable tag: 1.1.2
7
 
8
  Ergänzt das Kommentarformular um datenschutzrechtliche Hinweise bei Nutzung des Plugins Akismet.
9
 
12
 
13
  Um keine Angriffsfläche für Abmahnungen zu bieten, muss man die Benutzer vor dem Kommentieren auf das Speichern dieser Daten hinweisen. Dies übernimmt das Plugin.
14
 
15
+ = Erstellt durch Inpsyde =
16
+ Das Team der [Inpsyde](https://inpsyde.com) entwickelt im Web und WordPress seit 2006.
17
+
18
+ = Spenden? =
19
+ Du möchtest etwas spenden - wir bevorzugen ein positives Review, nicht mehr.
20
 
21
  == Installation ==
22
  1. Plugin herunterladen, entpacken, in den Ordner `wp-content/plugins/` laden und aktivieren. Oder direkt über den Adminbereich und 'Plugins' - 'Installieren' das Plugin suchen und installieren.
23
  2. Das Plugin sollte nun automatisch unter dem Kommentarfeld den Hinweistext anzeigen. Falls nicht, muss im Theme (z.B. comments.php) manuell folgender Code innerhalb des Kommentar-Formulares, innerhalb `<form>...</form>` - da wo der Hinweis erscheinen soll, eingefügt werden:
24
+
25
+ `<?php do_action( 'akismet_privacy_policies' ); ?>`
26
+
27
  Der Aufruf muss an der Stelle des Templates statt finden, wo die Ausgabe erscheinen soll.
28
 
29
  == Frequently Asked Questions ==
41
  2. Die optionalen Einstellungen im Backend von WordPress
42
 
43
  == Changelog ==
44
+ = 1.1.2 =
45
+ * Link zum Datenschutzhintergrund ergänzt
46
+ * Source-Codex Anpassungen
47
+
48
  = 1.1.1 =
49
  * Prüfung auf Sprache der WordPress Installation, nur bei `de_DE` als Sprachschlüssel, werden die Hinweise ergänzt
50
 
53
 
54
  = 1.0.0 =
55
  * Release first version
56
+