Version Description
- Link zum Datenschutzhintergrund ergnzt
- Source-Codex Anpassungen
Download this release
Release Info
Developer | Bueltge |
Plugin | Akismet Privacy Policies |
Version | 1.1.2 |
Comparing to | |
See all releases |
Code changes from version 1.1.1 to 1.1.2
- akismet-privacy-policies.php +307 -232
- 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.
|
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 |
-
|
|
|
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="
|
|
|
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
|
33 |
* @access public
|
34 |
-
* @since
|
35 |
-
* @return
|
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 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
|
|
49 |
$options = get_option( 'akismet_privacy_notice_settings' );
|
50 |
-
if ( empty( $options['checkbox'] ) )
|
51 |
-
$options['checkbox'] = $this->checkbox;
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
if ( $options['style'] )
|
57 |
-
|
58 |
-
|
|
|
|
|
|
|
|
|
59 |
// for settings
|
60 |
-
add_action( 'admin_menu',
|
61 |
-
add_filter( 'plugin_action_links',
|
62 |
-
add_action( 'admin_init',
|
63 |
}
|
64 |
-
|
65 |
/**
|
66 |
* Handler for the action 'init'. Instantiates this class.
|
67 |
*
|
68 |
-
* @since
|
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
|
85 |
* @access public
|
|
|
86 |
* @param $value string, default = 'Version'
|
87 |
-
*
|
|
|
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
|
100 |
* use filter hook akismet_privacy_notice_options for change markup or notice
|
101 |
-
*
|
102 |
* @access public
|
103 |
-
* @uses
|
104 |
-
* @since
|
|
|
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 |
-
|
117 |
-
|
118 |
-
|
|
|
|
|
119 |
$defaults = array(
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
);
|
126 |
-
|
127 |
// Make it filterable
|
128 |
$params = apply_filters( 'akismet_privacy_notice_options', $defaults );
|
129 |
-
|
130 |
// Create the output
|
131 |
-
$html
|
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 |
-
|
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
|
159 |
* @access public
|
160 |
-
* @since
|
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
|
183 |
* @access public
|
184 |
-
* @since
|
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 |
-
|
|
|
197 |
}
|
198 |
-
|
199 |
/**
|
200 |
* Add settings link on plugins.php in backend
|
201 |
-
*
|
202 |
-
* @uses
|
203 |
* @access public
|
204 |
-
*
|
205 |
-
* @
|
|
|
|
|
|
|
|
|
206 |
* @return string $links
|
207 |
*/
|
208 |
public function plugin_action_links( $links, $file ) {
|
209 |
-
|
210 |
-
|
|
|
|
|
|
|
211 |
}
|
212 |
-
|
213 |
return $links;
|
214 |
}
|
215 |
-
|
216 |
/**
|
217 |
* Add settings page in WP backend
|
218 |
-
*
|
219 |
-
* @uses
|
220 |
* @access public
|
221 |
-
* @since
|
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,
|
235 |
}
|
236 |
-
|
237 |
/**
|
238 |
* Return form and markup on settings page
|
239 |
-
*
|
240 |
-
* @uses
|
241 |
* @access public
|
242 |
-
* @since
|
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 |
-
|
265 |
-
|
266 |
-
<
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
272 |
-
|
273 |
-
|
274 |
-
|
275 |
-
|
276 |
-
|
277 |
-
|
278 |
-
|
279 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
<
|
285 |
-
|
286 |
-
<
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
292 |
-
|
293 |
-
|
294 |
-
|
295 |
-
<
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
308 |
<?php
|
309 |
}
|
310 |
-
|
311 |
/**
|
312 |
* Validate settings for options
|
313 |
-
*
|
314 |
-
* @uses
|
315 |
* @access public
|
|
|
316 |
* @param array $value
|
317 |
-
*
|
|
|
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 |
-
|
327 |
-
$value['
|
328 |
-
$value['
|
329 |
-
|
|
|
330 |
return $value;
|
331 |
}
|
332 |
-
|
333 |
/**
|
334 |
* Register settings for options
|
335 |
-
*
|
336 |
-
* @uses
|
337 |
* @access public
|
338 |
-
* @since
|
339 |
* @return void
|
340 |
*/
|
341 |
public function register_settings() {
|
342 |
-
|
343 |
-
register_setting(
|
|
|
|
|
|
|
344 |
}
|
345 |
-
|
346 |
/**
|
347 |
* Unregister and delete settings; clean database
|
348 |
-
*
|
349 |
-
* @uses
|
350 |
* @access public
|
351 |
-
* @since
|
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
|
|
|
364 |
* @param string $contextual_help
|
365 |
* @param string $screen_id
|
366 |
-
*
|
367 |
-
* @
|
|
|
|
|
368 |
* @return string $contextual_help
|
369 |
*/
|
370 |
-
public function contextual_help( $contextual_help, $screen_id
|
371 |
-
|
372 |
-
|
373 |
-
|
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><strong>Akismet Anti-Spam</strong>
|
384 |
-
Diese Seite nutzt das <a href="http://akismet.com/">Akismet</a>-Plugin der <a href="http://automattic.com/">Automattic</a> 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 <a href="mailto:support@wordpress.com" target="_blank">support@wordpress.com</a>, Betreff “Deletion of Data stored by Akismet” unter Angabe/Beschreibung der gespeicherten Daten 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 & 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 & 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><strong>Akismet Anti-Spam</strong>
|
454 |
+
Diese Seite nutzt das <a href="http://akismet.com/">Akismet</a>-Plugin der <a href="http://automattic.com/">Automattic</a> 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 <a href="mailto:support@wordpress.com" target="_blank">support@wordpress.com</a>, Betreff “Deletion of Data stored by Akismet” unter Angabe/Beschreibung der gespeicherten Daten 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 & 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.
|
6 |
-
Stable tag: 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 |
-
|
|
|
|
|
|
|
|
|
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 |
-
|
|
|
|
|
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 |
+
|