WP GDPR Compliance - Version 1.4.4

Version Description

Release date: November 28th, 2018 * Anonymise requests after 30 days. This also removes the ability to process delete requests. * Small bugfix to correctly strip slashes from 'Consent' titles. * Added possibility to use external URL's for the privacy policy. * Added auto opt-in for admin's when adding a comment. * Fixed bug that added attachment to the consent bar when viewing an attachment. * Fixed bug with token.

Download this release

Release Info

Developer donnyoexman
Plugin Icon 128x128 WP GDPR Compliance
Version 1.4.4
Comparing to
See all releases

Code changes from version 1.4.3 to 1.4.4

Includes/AccessRequest.php CHANGED
@@ -179,9 +179,13 @@ class AccessRequest {
179
  if ($this->exists($this->getId())) {
180
  $wpdb->update(
181
  self::getDatabaseTableName(),
182
- array('expired' => $this->getExpired()),
 
 
 
 
183
  array('ID' => $this->getId()),
184
- array('%d'),
185
  array('%d')
186
  );
187
  return $this->getId();
@@ -207,6 +211,10 @@ class AccessRequest {
207
  return false;
208
  }
209
 
 
 
 
 
210
  /**
211
  * @return null|AccessRequest
212
  */
179
  if ($this->exists($this->getId())) {
180
  $wpdb->update(
181
  self::getDatabaseTableName(),
182
+ array(
183
+ 'email_address' => $this->getEmailAddress(),
184
+ 'ip_address' => $this->getIpAddress(),
185
+ 'expired' => $this->getExpired()
186
+ ),
187
  array('ID' => $this->getId()),
188
+ array('%s', '%s', '%d'),
189
  array('%d')
190
  );
191
  return $this->getId();
211
  return false;
212
  }
213
 
214
+ public function isAnonymised() {
215
+ return ($this->getIpAddress() === '127.0.0.1');
216
+ }
217
+
218
  /**
219
  * @return null|AccessRequest
220
  */
Includes/Ajax.php CHANGED
@@ -309,7 +309,7 @@ class Ajax {
309
  'nickname' => 'NICKNAME',
310
  'first_name' => 'FIRST_NAME',
311
  'last_name' => 'LAST_NAME',
312
- 'user_email' => $request->getDataId() . '.' . $date->format('Ymd') . '.' . $date->format('His') . '@example.org'
313
  ));
314
  if (is_wp_error($result)) {
315
  $output['error'] = __('This user doesn\'t exist.', WP_GDPR_C_SLUG);
@@ -327,7 +327,7 @@ class Ajax {
327
  $result = wp_update_comment(array(
328
  'comment_ID' => $request->getDataId(),
329
  'comment_author' => 'NAME',
330
- 'comment_author_email' => $request->getDataId() . '.' . $date->format('Ymd') . '.' . $date->format('His') . '@example.org',
331
  'comment_author_IP' => '127.0.0.1'
332
  ));
333
  if ($result === 0) {
309
  'nickname' => 'NICKNAME',
310
  'first_name' => 'FIRST_NAME',
311
  'last_name' => 'LAST_NAME',
312
+ 'user_email' => $request->getDataId() . '.' . $date->format('Ymd.His') . '@example.org'
313
  ));
314
  if (is_wp_error($result)) {
315
  $output['error'] = __('This user doesn\'t exist.', WP_GDPR_C_SLUG);
327
  $result = wp_update_comment(array(
328
  'comment_ID' => $request->getDataId(),
329
  'comment_author' => 'NAME',
330
+ 'comment_author_email' => $request->getDataId() . '.' . $date->format('Ymd.His') . '@example.org',
331
  'comment_author_IP' => '127.0.0.1'
332
  ));
333
  if ($result === 0) {
Includes/Cron.php CHANGED
@@ -10,6 +10,19 @@ class Cron {
10
  /** @var null */
11
  private static $instance = null;
12
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
  /**
14
  * Deactivate requests after 24 hours
15
  */
@@ -33,6 +46,39 @@ class Cron {
33
  }
34
  }
35
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
36
  /**
37
  * @return null|Cron
38
  */
10
  /** @var null */
11
  private static $instance = null;
12
 
13
+ /**
14
+ * @param array $schedules
15
+ * @return array
16
+ */
17
+ public function addCronSchedules($schedules = array()) {
18
+ // Once a month
19
+ $schedules['wpgdprc-monthly'] = array(
20
+ 'interval' => 2635200,
21
+ 'display' => __('Once a month', WP_GDPR_C_SLUG),
22
+ );
23
+ return $schedules;
24
+ }
25
+
26
  /**
27
  * Deactivate requests after 24 hours
28
  */
46
  }
47
  }
48
 
49
+ /**
50
+ * Anonymise requests after 1 month
51
+ */
52
+ public function anonymiseRequests() {
53
+ $date = Helper::localDateTime(time());
54
+ $aMonthAgo = clone $date;
55
+ $aMonthAgo->modify('-1 month');
56
+ $arguments = array(
57
+ 'ip_address' => array(
58
+ 'value' => '127.0.0.1',
59
+ 'compare' => '!='
60
+ ),
61
+ 'date_created' => array(
62
+ 'value' => $aMonthAgo->format('Y-m-d H:i:s'),
63
+ 'compare' => '<='
64
+ )
65
+ );
66
+ $accessRequests = AccessRequest::getInstance()->getList($arguments);
67
+ $deleteRequests = DeleteRequest::getInstance()->getList($arguments);
68
+ foreach ($accessRequests as $accessRequest) {
69
+ $accessRequest->setEmailAddress(($accessRequest->getId() . '.' . $date->format('Ymd.His') . '@example.org'));
70
+ $accessRequest->setIpAddress('127.0.0.1');
71
+ $accessRequest->setExpired(1);
72
+ $accessRequest->save();
73
+ }
74
+ foreach ($deleteRequests as $deleteRequest) {
75
+ $deleteRequest->setIpAddress('127.0.0.1');
76
+ $deleteRequest->setDataId(0);
77
+ $deleteRequest->setType('unknown');
78
+ $deleteRequest->save();
79
+ }
80
+ }
81
+
82
  /**
83
  * @return null|Cron
84
  */
Includes/DeleteRequest.php CHANGED
@@ -61,12 +61,16 @@ class DeleteRequest {
61
 
62
  /**
63
  * @param int $accessRequestId
 
64
  * @return int
65
  */
66
- public function getAmountByAccessRequestId($accessRequestId = 0) {
67
  global $wpdb;
68
  $query = "SELECT COUNT(`ID`) FROM `" . self::getDatabaseTableName() . "`";
69
  $query .= " WHERE `access_request_id` = %d";
 
 
 
70
  $query .= " AND `processed` = '0'";
71
  $query .= " AND `site_id` = %d";
72
  $result = $wpdb->get_var($wpdb->prepare($query, intval($accessRequestId), get_current_blog_id()));
@@ -166,9 +170,14 @@ class DeleteRequest {
166
  if ($this->exists($this->getId())) {
167
  $wpdb->update(
168
  self::getDatabaseTableName(),
169
- array('processed' => $this->getProcessed()),
 
 
 
 
 
170
  array('ID' => $this->getId()),
171
- array('%d'),
172
  array('%d')
173
  );
174
  return $this->getId();
@@ -199,16 +208,19 @@ class DeleteRequest {
199
  * @return null|string
200
  */
201
  public function getManageUrl() {
202
- switch ($this->getType()) {
203
- case 'user' :
204
- return get_edit_user_link($this->getDataId());
205
- break;
206
- case 'comment' :
207
- return get_edit_comment_link($this->getDataId());
208
- break;
209
- case 'woocommerce_order' :
210
- return get_edit_post_link($this->getDataId());
211
- break;
 
 
 
212
  }
213
  return '';
214
  }
@@ -218,6 +230,9 @@ class DeleteRequest {
218
  */
219
  public function getNiceTypeLabel() {
220
  switch ($this->getType()) {
 
 
 
221
  case 'user' :
222
  $output = __('User', WP_GDPR_C_SLUG);
223
  break;
@@ -234,6 +249,10 @@ class DeleteRequest {
234
  return $output;
235
  }
236
 
 
 
 
 
237
  /**
238
  * @return null|DeleteRequest
239
  */
61
 
62
  /**
63
  * @param int $accessRequestId
64
+ * @param bool $showAnonymised
65
  * @return int
66
  */
67
+ public function getAmountByAccessRequestId($accessRequestId = 0, $showAnonymised = true) {
68
  global $wpdb;
69
  $query = "SELECT COUNT(`ID`) FROM `" . self::getDatabaseTableName() . "`";
70
  $query .= " WHERE `access_request_id` = %d";
71
+ if ($showAnonymised === false) {
72
+ $query .= " AND `ip_address` != '127.0.0.1'";
73
+ }
74
  $query .= " AND `processed` = '0'";
75
  $query .= " AND `site_id` = %d";
76
  $result = $wpdb->get_var($wpdb->prepare($query, intval($accessRequestId), get_current_blog_id()));
170
  if ($this->exists($this->getId())) {
171
  $wpdb->update(
172
  self::getDatabaseTableName(),
173
+ array(
174
+ 'ip_address' => $this->getIpAddress(),
175
+ 'data_id' => $this->getDataId(),
176
+ 'type' => $this->getType(),
177
+ 'processed' => $this->getProcessed()
178
+ ),
179
  array('ID' => $this->getId()),
180
+ array('%s', '%d', '%s', '%d'),
181
  array('%d')
182
  );
183
  return $this->getId();
208
  * @return null|string
209
  */
210
  public function getManageUrl() {
211
+ $dataId = intval($this->getDataId());
212
+ if ($dataId > 0) {
213
+ switch ($this->getType()) {
214
+ case 'user' :
215
+ return get_edit_user_link($this->getDataId());
216
+ break;
217
+ case 'comment' :
218
+ return get_edit_comment_link($this->getDataId());
219
+ break;
220
+ case 'woocommerce_order' :
221
+ return get_edit_post_link($this->getDataId());
222
+ break;
223
+ }
224
  }
225
  return '';
226
  }
230
  */
231
  public function getNiceTypeLabel() {
232
  switch ($this->getType()) {
233
+ case 'unknown' :
234
+ $output = __('Unknown', WP_GDPR_C_SLUG);
235
+ break;
236
  case 'user' :
237
  $output = __('User', WP_GDPR_C_SLUG);
238
  break;
249
  return $output;
250
  }
251
 
252
+ public function isAnonymised() {
253
+ return ($this->getIpAddress() === '127.0.0.1');
254
+ }
255
+
256
  /**
257
  * @return null|DeleteRequest
258
  */
Includes/Extensions/WP.php CHANGED
@@ -27,6 +27,16 @@ class WP {
27
  return $field . $submitField;
28
  }
29
 
 
 
 
 
 
 
 
 
 
 
30
  public function checkPost() {
31
  if (!isset($_POST['wpgdprc'])) {
32
  wp_die(
27
  return $field . $submitField;
28
  }
29
 
30
+ public function addFieldForAdmin($submitField = '') {
31
+ $field = apply_filters(
32
+ 'wpgdprc_wordpress_field',
33
+ '<label style="font-size: 14px;"><i>' . __('This checkbox is checked because you are an admin',WP_GDPR_C_SLUG) . '</i></label>' .
34
+ '<p class="wpgdprc-checkbox"><label><input type="checkbox" name="wpgdprc" id="wpgdprc" value="1" checked="checked" /> ' . Integration::getCheckboxText(self::ID) . ' <abbr class="required" title="' . esc_attr__('required', WP_GDPR_C_SLUG) . '">*</abbr></label></p>',
35
+ $submitField
36
+ );
37
+ return $field . $submitField;
38
+ }
39
+
40
  public function checkPost() {
41
  if (!isset($_POST['wpgdprc'])) {
42
  wp_die(
Includes/Integration.php CHANGED
@@ -23,7 +23,11 @@ class Integration {
23
  foreach (Helper::getEnabledPlugins() as $plugin) {
24
  switch ($plugin['id']) {
25
  case WP::ID :
 
 
 
26
  add_filter('comment_form_submit_field', array(WP::getInstance(), 'addField'), 999);
 
27
  add_action('pre_comment_on_post', array(WP::getInstance(), 'checkPost'));
28
  add_action('comment_post', array(WP::getInstance(), 'addAcceptedDateToCommentMeta'));
29
  add_filter('manage_edit-comments_columns', array(WP::getInstance(), 'displayAcceptedDateColumnInCommentOverview'));
@@ -284,6 +288,14 @@ class Integration {
284
  return apply_filters('wpgdprc_privacy_policy_text', $output);
285
  }
286
 
 
 
 
 
 
 
 
 
287
  /**
288
  * @param bool $insertPrivacyPolicyLink
289
  * @return mixed
@@ -319,17 +331,21 @@ class Integration {
319
  * @return mixed|string
320
  */
321
  public static function insertPrivacyPolicyLink($content = '') {
 
322
  $page = get_option(WP_GDPR_C_PREFIX . '_settings_privacy_policy_page');
 
 
 
323
  $text = Integration::getPrivacyPolicyText();
324
- if (!empty($page) && !empty($text)) {
325
  $link = apply_filters(
326
  'wpgdprc_privacy_policy_link',
327
  sprintf(
328
  '<a target="_blank" href="%s" rel="noopener noreferrer">%s</a>',
329
- get_page_link($page),
330
  esc_html($text)
331
  ),
332
- $page,
333
  $text
334
  );
335
  $content = str_replace('%privacy_policy%', $link, $content);
23
  foreach (Helper::getEnabledPlugins() as $plugin) {
24
  switch ($plugin['id']) {
25
  case WP::ID :
26
+ if(current_user_can( 'administrator' )) {
27
+ add_filter('comment_form_submit_field', array(WP::getInstance(), 'addFieldForAdmin'), 999);
28
+ } else {
29
  add_filter('comment_form_submit_field', array(WP::getInstance(), 'addField'), 999);
30
+ }
31
  add_action('pre_comment_on_post', array(WP::getInstance(), 'checkPost'));
32
  add_action('comment_post', array(WP::getInstance(), 'addAcceptedDateToCommentMeta'));
33
  add_filter('manage_edit-comments_columns', array(WP::getInstance(), 'displayAcceptedDateColumnInCommentOverview'));
288
  return apply_filters('wpgdprc_privacy_policy_text', $output);
289
  }
290
 
291
+ public static function getPrivacyPolicyLink() {
292
+ $output = get_option(WP_GDPR_C_PREFIX . '_settings_privacy_policy_link');
293
+ if (empty($output)) {
294
+ $output = __('http://www.example.com', WP_GDPR_C_SLUG);
295
+ }
296
+ return apply_filters('wpgdprc_privacy_policy_link', $output);
297
+ }
298
+
299
  /**
300
  * @param bool $insertPrivacyPolicyLink
301
  * @return mixed
331
  * @return mixed|string
332
  */
333
  public static function insertPrivacyPolicyLink($content = '') {
334
+ if (!Helper::isEnabled('enable_privacy_policy_extern', 'settings')) {
335
  $page = get_option(WP_GDPR_C_PREFIX . '_settings_privacy_policy_page');
336
+ } else {
337
+ $url = get_option(WP_GDPR_C_PREFIX . '_settings_privacy_policy_link');
338
+ }
339
  $text = Integration::getPrivacyPolicyText();
340
+ if ((!empty($page) || !empty($url)) && !empty($text)) {
341
  $link = apply_filters(
342
  'wpgdprc_privacy_policy_link',
343
  sprintf(
344
  '<a target="_blank" href="%s" rel="noopener noreferrer">%s</a>',
345
+ (Helper::isEnabled('enable_privacy_policy_extern', 'settings')) ? $url : get_page_link($page),
346
  esc_html($text)
347
  ),
348
+ (Helper::isEnabled('enable_privacy_policy_extern', 'settings')) ? $url : $page,
349
  $text
350
  );
351
  $content = str_replace('%privacy_policy%', $link, $content);
Includes/Page.php CHANGED
@@ -14,8 +14,14 @@ class Page {
14
  foreach (Helper::getCheckList() as $id => $check) {
15
  register_setting(WP_GDPR_C_SLUG . '_general', WP_GDPR_C_PREFIX . '_general_' . $id, 'intval');
16
  }
 
17
  register_setting(WP_GDPR_C_SLUG . '_settings', WP_GDPR_C_PREFIX . '_settings_privacy_policy_page', 'intval');
 
18
  register_setting(WP_GDPR_C_SLUG . '_settings', WP_GDPR_C_PREFIX . '_settings_privacy_policy_text', array('sanitize_callback' => array(Helper::getInstance(), 'sanitizeData')));
 
 
 
 
19
  register_setting(WP_GDPR_C_SLUG . '_settings', WP_GDPR_C_PREFIX . '_settings_enable_access_request', 'intval');
20
  if (Helper::isEnabled('enable_access_request', 'settings')) {
21
  register_setting(WP_GDPR_C_SLUG . '_settings', WP_GDPR_C_PREFIX . '_settings_access_request_page', 'intval');
@@ -58,6 +64,10 @@ class Page {
58
  <?php
59
  if ($enableAccessRequest) :
60
  $totalDeleteRequests = DeleteRequest::getInstance()->getTotal(array(
 
 
 
 
61
  'processed' => array(
62
  'value' => 0
63
  )
@@ -124,9 +134,8 @@ class Page {
124
  sprintf('<a target="_blank" href="%s">%s</a>', '//www.wpgdprc.com/', 'www.wpgdprc.com')
125
  );
126
  ?></p>
 
127
  </div>
128
-
129
- <p class="wpgdprc-disclaimer"><?php _e('Disclaimer: The creators of this plugin do not have a legal background please contact a law firm for rock solid legal advice.', WP_GDPR_C_SLUG); ?></p>
130
  </div>
131
 
132
  <div class="wpgdprc-sidebar">
@@ -281,6 +290,8 @@ class Page {
281
  private static function renderSettingsPage() {
282
  $optionNamePrivacyPolicyPage = WP_GDPR_C_PREFIX . '_settings_privacy_policy_page';
283
  $optionNamePrivacyPolicyText = WP_GDPR_C_PREFIX . '_settings_privacy_policy_text';
 
 
284
  $optionNameEnableAccessRequest = WP_GDPR_C_PREFIX . '_settings_enable_access_request';
285
  $optionNameAccessRequestPage = WP_GDPR_C_PREFIX . '_settings_access_request_page';
286
  $optionNameAccessRequestFormCheckboxText = WP_GDPR_C_PREFIX . '_settings_access_request_form_checkbox_text';
@@ -290,6 +301,8 @@ class Page {
290
  $optionNameConsentsModalExplanationText = WP_GDPR_C_PREFIX . '_settings_consents_modal_explanation_text';
291
  $privacyPolicyPage = get_option($optionNamePrivacyPolicyPage);
292
  $privacyPolicyText = esc_html(Integration::getPrivacyPolicyText());
 
 
293
  $enableAccessRequest = Helper::isEnabled('enable_access_request', 'settings');
294
  $accessRequestPage = get_option($optionNameAccessRequestPage);
295
  $accessRequestFormCheckboxText = Integration::getAccessRequestFormCheckboxText(false);
@@ -301,6 +314,33 @@ class Page {
301
  <form method="post" action="<?php echo admin_url('options.php'); ?>" novalidate="novalidate">
302
  <?php settings_fields(WP_GDPR_C_SLUG . '_settings'); ?>
303
  <p><strong><?php _e('Privacy Policy', WP_GDPR_C_SLUG); ?></strong></p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
304
  <div class="wpgdprc-setting">
305
  <label for="<?php echo $optionNamePrivacyPolicyPage; ?>"><?php _e('Privacy Policy', WP_GDPR_C_SLUG); ?></label>
306
  <div class="wpgdprc-options">
@@ -314,6 +354,7 @@ class Page {
314
  ?>
315
  </div>
316
  </div>
 
317
  <div class="wpgdprc-setting">
318
  <label for="<?php echo $optionNamePrivacyPolicyText; ?>"><?php _e('Link text', WP_GDPR_C_SLUG); ?></label>
319
  <div class="wpgdprc-options">
@@ -430,7 +471,7 @@ class Page {
430
  $consent = new Consent($consentId);
431
  if (isset($_POST['submit']) && check_admin_referer('consent_create_or_update', 'consent_nonce')) {
432
  $active = (isset($_POST['active'])) ? 1 : 0;
433
- $title = (isset($_POST['title'])) ? esc_html($_POST['title']) : $consent->getTitle();
434
  $description = (isset($_POST['description'])) ? stripslashes(esc_html($_POST['description'])) : $consent->getDescription();
435
  $snippet = (isset($_POST['snippet'])) ? stripslashes($_POST['snippet']) : $consent->getSnippet();
436
  $wrap = (isset($_POST['wrap']) && array_key_exists($_POST['wrap'], Consent::getPossibleCodeWraps())) ? esc_html($_POST['wrap']) : $consent->getWrap();
@@ -668,6 +709,13 @@ class Page {
668
  <?php printf('<strong>%s:</strong> %s', __('WordPress Comments', WP_GDPR_C_SLUG), 'Anonymises author name, email address and IP address.', WP_GDPR_C_SLUG); ?><br />
669
  <?php printf('<strong>%s:</strong> %s', __('WooCommerce', WP_GDPR_C_SLUG), 'Anonymises billing and shipping details per order.', WP_GDPR_C_SLUG); ?>
670
  </p>
 
 
 
 
 
 
 
671
  </div>
672
 
673
  <form class="wpgdprc-form wpgdprc-form--process-delete-requests" method="POST" novalidate="novalidate">
@@ -689,19 +737,29 @@ class Page {
689
  /** @var DeleteRequest $request */
690
  foreach ($requests as $request) :
691
  ?>
692
- <tr data-id="<?php echo $request->getId(); ?>">
693
  <td><?php printf('#%d', $request->getId()); ?></td>
694
  <td><?php echo $request->getNiceTypeLabel(); ?></td>
695
  <td><?php echo $request->getIpAddress(); ?></td>
696
  <td><?php echo $request->getDateCreated(); ?></td>
697
  <td><span class="dashicons dashicons-<?php echo ($request->getProcessed()) ? 'yes' : 'no'; ?>"></span></td>
698
- <td><?php printf('<a target="_blank" href="%s">%s</a>', $request->getManageUrl(), __('View', WP_GDPR_C_SLUG)); ?></td>
699
  <td>
700
- <?php if (!$request->getProcessed()) : ?>
701
- <input type="checkbox" class="wpgdprc-checkbox" value="<?php echo $request->getId(); ?>" />
702
- <?php else : ?>
703
- &nbsp;
704
- <?php endif; ?>
 
 
 
 
 
 
 
 
 
 
 
705
  </td>
706
  </tr>
707
  <?php
@@ -753,6 +811,15 @@ class Page {
753
  $requests = AccessRequest::getInstance()->getList(array(), $limit, $offset);
754
  if (!empty($requests)) :
755
  ?>
 
 
 
 
 
 
 
 
 
756
  <table class="wpgdprc-table">
757
  <thead>
758
  <tr>
@@ -768,12 +835,13 @@ class Page {
768
  <?php
769
  /** @var AccessRequest $request */
770
  foreach ($requests as $request) :
 
771
  $amountOfDeleteRequests = DeleteRequest::getInstance()->getAmountByAccessRequestId($request->getId());
772
  ?>
773
- <tr class="wpgdprc-table__row <?php echo ($request->getExpired()) ? 'wpgdprc-table__row--expired' : ''; ?>">
774
  <td><?php printf('#%d', $request->getId()); ?></td>
775
  <td>
776
- <?php printf('%d', $amountOfDeleteRequests); ?>
777
  <?php
778
  if ($amountOfDeleteRequests > 0) {
779
  printf(
14
  foreach (Helper::getCheckList() as $id => $check) {
15
  register_setting(WP_GDPR_C_SLUG . '_general', WP_GDPR_C_PREFIX . '_general_' . $id, 'intval');
16
  }
17
+ if (!Helper::isEnabled('enable_privacy_policy_extern', 'settings')) {
18
  register_setting(WP_GDPR_C_SLUG . '_settings', WP_GDPR_C_PREFIX . '_settings_privacy_policy_page', 'intval');
19
+ }
20
  register_setting(WP_GDPR_C_SLUG . '_settings', WP_GDPR_C_PREFIX . '_settings_privacy_policy_text', array('sanitize_callback' => array(Helper::getInstance(), 'sanitizeData')));
21
+ register_setting(WP_GDPR_C_SLUG . '_settings', WP_GDPR_C_PREFIX . '_settings_enable_privacy_policy_extern', 'intval');
22
+ if (Helper::isEnabled('enable_privacy_policy_extern', 'settings')) {
23
+ register_setting(WP_GDPR_C_SLUG . '_settings', WP_GDPR_C_PREFIX . '_settings_privacy_policy_link', array('sanitize_callback' => array(Helper::getInstance(), 'sanitizeData')));
24
+ }
25
  register_setting(WP_GDPR_C_SLUG . '_settings', WP_GDPR_C_PREFIX . '_settings_enable_access_request', 'intval');
26
  if (Helper::isEnabled('enable_access_request', 'settings')) {
27
  register_setting(WP_GDPR_C_SLUG . '_settings', WP_GDPR_C_PREFIX . '_settings_access_request_page', 'intval');
64
  <?php
65
  if ($enableAccessRequest) :
66
  $totalDeleteRequests = DeleteRequest::getInstance()->getTotal(array(
67
+ 'ip_address' => array(
68
+ 'value' => '127.0.0.1',
69
+ 'compare' => '!='
70
+ ),
71
  'processed' => array(
72
  'value' => 0
73
  )
134
  sprintf('<a target="_blank" href="%s">%s</a>', '//www.wpgdprc.com/', 'www.wpgdprc.com')
135
  );
136
  ?></p>
137
+ <p class="wpgdprc-disclaimer"><?php _e('Disclaimer: The creators of this plugin do not have a legal background please contact a law firm for rock solid legal advice.', WP_GDPR_C_SLUG); ?></p>
138
  </div>
 
 
139
  </div>
140
 
141
  <div class="wpgdprc-sidebar">
290
  private static function renderSettingsPage() {
291
  $optionNamePrivacyPolicyPage = WP_GDPR_C_PREFIX . '_settings_privacy_policy_page';
292
  $optionNamePrivacyPolicyText = WP_GDPR_C_PREFIX . '_settings_privacy_policy_text';
293
+ $optionNameEnablePrivacyPolicyExternal = WP_GDPR_C_PREFIX . '_settings_enable_privacy_policy_extern';
294
+ $optionNamePrivacyPolicyLink = WP_GDPR_C_PREFIX . '_settings_privacy_policy_link';
295
  $optionNameEnableAccessRequest = WP_GDPR_C_PREFIX . '_settings_enable_access_request';
296
  $optionNameAccessRequestPage = WP_GDPR_C_PREFIX . '_settings_access_request_page';
297
  $optionNameAccessRequestFormCheckboxText = WP_GDPR_C_PREFIX . '_settings_access_request_form_checkbox_text';
301
  $optionNameConsentsModalExplanationText = WP_GDPR_C_PREFIX . '_settings_consents_modal_explanation_text';
302
  $privacyPolicyPage = get_option($optionNamePrivacyPolicyPage);
303
  $privacyPolicyText = esc_html(Integration::getPrivacyPolicyText());
304
+ $enablePrivacyPolicyExternal = Helper::isEnabled('enable_privacy_policy_extern', 'settings');
305
+ $privacyPolicyLink = esc_html(Integration::getPrivacyPolicyLink());
306
  $enableAccessRequest = Helper::isEnabled('enable_access_request', 'settings');
307
  $accessRequestPage = get_option($optionNameAccessRequestPage);
308
  $accessRequestFormCheckboxText = Integration::getAccessRequestFormCheckboxText(false);
314
  <form method="post" action="<?php echo admin_url('options.php'); ?>" novalidate="novalidate">
315
  <?php settings_fields(WP_GDPR_C_SLUG . '_settings'); ?>
316
  <p><strong><?php _e('Privacy Policy', WP_GDPR_C_SLUG); ?></strong></p>
317
+ <div class="wpgdprc-setting">
318
+ <label for="<?php echo $optionNameEnablePrivacyPolicyExternal; ?>"><?php _e('Activate', WP_GDPR_C_SLUG); ?></label>
319
+ <div class="wpgdprc-options">
320
+ <label><input type="checkbox" name="<?php echo $optionNameEnablePrivacyPolicyExternal; ?>" id="<?php echo $optionNameEnablePrivacyPolicyExternal; ?>" value="1" tabindex="1" <?php checked(true, $enablePrivacyPolicyExternal); ?> /> <?php _e('Activate external links', WP_GDPR_C_SLUG); ?></label>
321
+ <div class="wpgdprc-information">
322
+ <div class="wpgdprc-message wpgdprc-message--notice">
323
+ <?php
324
+ printf(
325
+ '<p><strong>%s:</strong> %s</p>',
326
+ strtoupper(__('Note', WP_GDPR_C_SLUG)),
327
+ sprintf(
328
+ __('Enabling this will allow you to use external Privacy Policy instances', WP_GDPR_C_SLUG)
329
+ )
330
+ );
331
+ ?>
332
+ </div>
333
+ </div>
334
+ </div>
335
+ </div>
336
+ <?php if ($enablePrivacyPolicyExternal) : ?>
337
+ <div class="wpgdprc-setting">
338
+ <label for="<?php echo $optionNamePrivacyPolicyLink; ?>"><?php _e('External Privacy Policy Link', WP_GDPR_C_SLUG); ?></label>
339
+ <div class="wpgdprc-options">
340
+ <input type="url" name="<?php echo $optionNamePrivacyPolicyLink; ?>" class="regular-text" id="<?php echo $optionNamePrivacyPolicyLink; ?>" placeholder="<?php echo $privacyPolicyLink; ?>" value="<?php echo $privacyPolicyLink; ?>" />
341
+ </div>
342
+ </div>
343
+ <?php else: ?>
344
  <div class="wpgdprc-setting">
345
  <label for="<?php echo $optionNamePrivacyPolicyPage; ?>"><?php _e('Privacy Policy', WP_GDPR_C_SLUG); ?></label>
346
  <div class="wpgdprc-options">
354
  ?>
355
  </div>
356
  </div>
357
+ <?php endif; ?>
358
  <div class="wpgdprc-setting">
359
  <label for="<?php echo $optionNamePrivacyPolicyText; ?>"><?php _e('Link text', WP_GDPR_C_SLUG); ?></label>
360
  <div class="wpgdprc-options">
471
  $consent = new Consent($consentId);
472
  if (isset($_POST['submit']) && check_admin_referer('consent_create_or_update', 'consent_nonce')) {
473
  $active = (isset($_POST['active'])) ? 1 : 0;
474
+ $title = (isset($_POST['title'])) ? stripslashes(esc_html($_POST['title'])) : $consent->getTitle();
475
  $description = (isset($_POST['description'])) ? stripslashes(esc_html($_POST['description'])) : $consent->getDescription();
476
  $snippet = (isset($_POST['snippet'])) ? stripslashes($_POST['snippet']) : $consent->getSnippet();
477
  $wrap = (isset($_POST['wrap']) && array_key_exists($_POST['wrap'], Consent::getPossibleCodeWraps())) ? esc_html($_POST['wrap']) : $consent->getWrap();
709
  <?php printf('<strong>%s:</strong> %s', __('WordPress Comments', WP_GDPR_C_SLUG), 'Anonymises author name, email address and IP address.', WP_GDPR_C_SLUG); ?><br />
710
  <?php printf('<strong>%s:</strong> %s', __('WooCommerce', WP_GDPR_C_SLUG), 'Anonymises billing and shipping details per order.', WP_GDPR_C_SLUG); ?>
711
  </p>
712
+ <?php
713
+ printf(
714
+ '<p><strong>%s:</strong> %s</p>',
715
+ strtoupper(__('Note', WP_GDPR_C_SLUG)),
716
+ sprintf(__('Requests are automatically anonymised after %d days.', WP_GDPR_C_SLUG), 30)
717
+ );
718
+ ?>
719
  </div>
720
 
721
  <form class="wpgdprc-form wpgdprc-form--process-delete-requests" method="POST" novalidate="novalidate">
737
  /** @var DeleteRequest $request */
738
  foreach ($requests as $request) :
739
  ?>
740
+ <tr class="wpgdprc-table__row <?php echo ($request->isAnonymised()) ? 'wpgdprc-table__row--expired' : ''; ?>" data-id="<?php echo $request->getId(); ?>">
741
  <td><?php printf('#%d', $request->getId()); ?></td>
742
  <td><?php echo $request->getNiceTypeLabel(); ?></td>
743
  <td><?php echo $request->getIpAddress(); ?></td>
744
  <td><?php echo $request->getDateCreated(); ?></td>
745
  <td><span class="dashicons dashicons-<?php echo ($request->getProcessed()) ? 'yes' : 'no'; ?>"></span></td>
 
746
  <td>
747
+ <?php
748
+ if ($request->getDataId() !== 0 && !$request->isAnonymised()) {
749
+ printf('<a target="_blank" href="%s">%s</a>', $request->getManageUrl(), __('View', WP_GDPR_C_SLUG));
750
+ } else {
751
+ _e('N/A', WP_GDPR_C_SLUG);
752
+ }
753
+ ?>
754
+ </td>
755
+ <td>
756
+ <?php
757
+ if (!$request->getProcessed() && !$request->isAnonymised()) {
758
+ printf('<input type="checkbox" class="wpgdprc-checkbox" value="%d" />', $request->getId());
759
+ } else {
760
+ echo '&nbsp;';
761
+ }
762
+ ?>
763
  </td>
764
  </tr>
765
  <?php
811
  $requests = AccessRequest::getInstance()->getList(array(), $limit, $offset);
812
  if (!empty($requests)) :
813
  ?>
814
+ <div class="wpgdprc-message wpgdprc-message--notice">
815
+ <?php
816
+ printf(
817
+ '<p><strong>%s:</strong> %s</p>',
818
+ strtoupper(__('Note', WP_GDPR_C_SLUG)),
819
+ sprintf(__('Requests are automatically anonymised after %d days.', WP_GDPR_C_SLUG), 30)
820
+ );
821
+ ?>
822
+ </div>
823
  <table class="wpgdprc-table">
824
  <thead>
825
  <tr>
835
  <?php
836
  /** @var AccessRequest $request */
837
  foreach ($requests as $request) :
838
+ $amountOfNonAnonymisedDeleteRequests = DeleteRequest::getInstance()->getAmountByAccessRequestId($request->getId(), false);
839
  $amountOfDeleteRequests = DeleteRequest::getInstance()->getAmountByAccessRequestId($request->getId());
840
  ?>
841
+ <tr class="wpgdprc-table__row <?php echo ($request->getExpired() || $request->isAnonymised()) ? 'wpgdprc-table__row--expired' : ''; ?>">
842
  <td><?php printf('#%d', $request->getId()); ?></td>
843
  <td>
844
+ <?php printf('%d', $amountOfNonAnonymisedDeleteRequests); ?>
845
  <?php
846
  if ($amountOfDeleteRequests > 0) {
847
  printf(
Includes/Shortcode.php CHANGED
@@ -99,7 +99,13 @@ class Shortcode {
99
  );
100
  }
101
  } else {
102
- $output .= __('This request is expired or doesn\'t exist.', WP_GDPR_C_SLUG);
 
 
 
 
 
 
103
  }
104
  return $output;
105
  }
99
  );
100
  }
101
  } else {
102
+ $output .= sprintf(
103
+ '<div class="wpgdprc-message wpgdprc-message--error"><p>%s</p></div>',
104
+ sprintf(
105
+ __('<strong>ERROR</strong>: %s', WP_GDPR_C_SLUG),
106
+ __('This request is expired or doesn\'t exist.', WP_GDPR_C_SLUG)
107
+ )
108
+ );
109
  }
110
  return $output;
111
  }
languages/wp-gdpr-compliance.pot CHANGED
@@ -2,7 +2,7 @@
2
  msgid ""
3
  msgstr ""
4
  "Project-Id-Version: WP GDPR Compliance\n"
5
- "POT-Creation-Date: 2018-07-06 17:05+0200\n"
6
  "Last-Translator: \n"
7
  "Language-Team: Van Ons <info@van-ons.nl>\n"
8
  "MIME-Version: 1.0\n"
@@ -29,7 +29,7 @@ msgstr ""
29
  msgid "Retry"
30
  msgstr ""
31
 
32
- #: Includes/Action.php:152 Includes/Page.php:392 Includes/Shortcode.php:154
33
  msgid "My settings"
34
  msgstr ""
35
 
@@ -37,12 +37,13 @@ msgstr ""
37
  msgid "Accept"
38
  msgstr ""
39
 
40
- #: Includes/Action.php:183 Includes/Page.php:590
41
  msgid "(no title)"
42
  msgstr ""
43
 
44
  #: Includes/Action.php:196 Includes/Helper.php:116 Includes/Helper.php:171
45
- #: Includes/Page.php:236 Includes/Page.php:336 Includes/Page.php:387
 
46
  msgid "Note"
47
  msgstr ""
48
 
@@ -64,167 +65,175 @@ msgstr ""
64
  msgid "Close modal"
65
  msgstr ""
66
 
67
- #: Includes/Ajax.php:27 Includes/Ajax.php:264
68
  msgid "Missing data."
69
  msgstr ""
70
 
71
- #: Includes/Ajax.php:31
72
- msgid "Missing type."
73
  msgstr ""
74
 
75
- #: Includes/Ajax.php:43
76
- msgid "Missing option name."
 
 
 
 
77
  msgstr ""
78
 
79
- #: Includes/Ajax.php:47
80
  msgid "Missing value."
81
  msgstr ""
82
 
83
- #: Includes/Ajax.php:80
 
 
 
 
84
  msgid "Missing or incorrect email address."
85
  msgstr ""
86
 
87
- #: Includes/Ajax.php:84
88
  msgid "You need to accept the privacy checkbox."
89
  msgstr ""
90
 
91
- #: Includes/Ajax.php:111
92
  msgid "page"
93
  msgstr ""
94
 
95
- #: Includes/Ajax.php:118
96
  #, php-format
97
  msgid "%s - Your data request"
98
  msgstr ""
99
 
100
- #: Includes/Ajax.php:124
101
  #, php-format
102
  msgid "You have requested to access your data on %s."
103
  msgstr ""
104
 
105
- #: Includes/Ajax.php:128
106
  #, php-format
107
  msgid "Please visit this %s to view the data linked to the email address %s."
108
  msgstr ""
109
 
110
- #: Includes/Ajax.php:132
111
  msgid ""
112
  "This page is available for 24 hours and can only be reached from the same "
113
  "device, IP address and browser session you requested from."
114
  msgstr ""
115
 
116
- #: Includes/Ajax.php:134
117
  #, php-format
118
  msgid ""
119
  "If your link is invalid you can fill in a new request after 24 hours: %s."
120
  msgstr ""
121
 
122
- #: Includes/Ajax.php:148
123
  msgid "Success. You will receive an email with your data shortly."
124
  msgstr ""
125
 
126
- #: Includes/Ajax.php:152
127
  msgid "Something went wrong while saving the request. Please try again."
128
  msgstr ""
129
 
130
- #: Includes/Ajax.php:155
131
  msgid ""
132
  "You have already requested your data. Please check your mailbox. After 24 "
133
  "hours you can put in a new request."
134
  msgstr ""
135
 
136
- #: Includes/Ajax.php:168
137
- msgid "Missing session."
138
  msgstr ""
139
 
140
- #: Includes/Ajax.php:172
141
  msgid "Missing or invalid type."
142
  msgstr ""
143
 
144
- #: Includes/Ajax.php:176
145
  msgid "No value selected."
146
  msgstr ""
147
 
148
- #: Includes/Ajax.php:197
149
  msgid "Something went wrong while saving this request. Please try again."
150
  msgstr ""
151
 
152
- #: Includes/Ajax.php:205 Includes/Page.php:67
153
  msgid "Requests"
154
  msgstr ""
155
 
156
- #: Includes/Ajax.php:209
157
  #, php-format
158
  msgid "%s - New anonymise request"
159
  msgstr ""
160
 
161
- #: Includes/Ajax.php:214
162
  #, php-format
163
  msgid "You have received a new anonymise request on %s."
164
  msgstr ""
165
 
166
- #: Includes/Ajax.php:218
167
  #, php-format
168
  msgid "You can manage this request in the admin panel: %s"
169
  msgstr ""
170
 
171
- #: Includes/Ajax.php:229
172
  msgid "Session doesn't match."
173
  msgstr ""
174
 
175
- #: Includes/Ajax.php:232
176
  msgid "No session found."
177
  msgstr ""
178
 
179
- #: Includes/Ajax.php:254
180
  msgid "The access request functionality is not enabled."
181
  msgstr ""
182
 
183
- #: Includes/Ajax.php:268
184
  msgid "This request doesn't exist."
185
  msgstr ""
186
 
187
- #: Includes/Ajax.php:288
188
  msgid "This user doesn't exist."
189
  msgstr ""
190
 
191
- #: Includes/Ajax.php:294
192
  msgid "You're not allowed to edit users."
193
  msgstr ""
194
 
195
- #: Includes/Ajax.php:307
196
  msgid "This comment doesn't exist."
197
  msgstr ""
198
 
199
- #: Includes/Ajax.php:313
200
  msgid "You're not allowed to edit comments."
201
  msgstr ""
202
 
203
- #: Includes/Ajax.php:357
204
  msgid "You're not allowed to edit WooCommerce orders."
205
  msgstr ""
206
 
207
- #: Includes/Ajax.php:369
208
  #, php-format
209
  msgid "%s - Your request"
210
  msgstr ""
211
 
212
- #: Includes/Ajax.php:374
213
  #, php-format
214
  msgid ""
215
  "We have successfully processed your request and your data has been "
216
  "anonymised on %s."
217
  msgstr ""
218
 
219
- #: Includes/Ajax.php:377
220
  msgid "The following has been processed:"
221
  msgstr ""
222
 
223
- #: Includes/Ajax.php:386
224
  msgid "Successfully sent an confirmation mail to the user."
225
  msgstr ""
226
 
227
- #: Includes/Ajax.php:390
228
  msgid "This request has already been processed."
229
  msgstr ""
230
 
@@ -254,15 +263,20 @@ msgstr ""
254
  msgid "Do not wrap my code snippet"
255
  msgstr ""
256
 
257
- #: Includes/Consent.php:281 Includes/Page.php:524
258
  msgid "Head"
259
  msgstr ""
260
 
261
- #: Includes/Consent.php:282 Includes/Page.php:529
262
  msgid "Footer"
263
  msgstr ""
264
 
 
 
 
 
265
  #: Includes/Data.php:27 Includes/Extensions/WP.php:34 Includes/Shortcode.php:85
 
266
  #, php-format
267
  msgid "<strong>ERROR</strong>: %s"
268
  msgstr ""
@@ -280,7 +294,7 @@ msgid "Display Name"
280
  msgstr ""
281
 
282
  #: Includes/Data.php:54 Includes/Data.php:63 Includes/Data.php:70
283
- #: Includes/Page.php:761
284
  msgid "Email Address"
285
  msgstr ""
286
 
@@ -300,7 +314,7 @@ msgstr ""
300
  msgid "Content"
301
  msgstr ""
302
 
303
- #: Includes/Data.php:64 Includes/Page.php:680 Includes/Page.php:762
304
  msgid "IP Address"
305
  msgstr ""
306
 
@@ -329,15 +343,19 @@ msgstr ""
329
  msgid "Anonymise selected %s(s)"
330
  msgstr ""
331
 
332
- #: Includes/DeleteRequest.php:222
 
 
 
 
333
  msgid "User"
334
  msgstr ""
335
 
336
- #: Includes/DeleteRequest.php:225
337
  msgid "Comment"
338
  msgstr ""
339
 
340
- #: Includes/DeleteRequest.php:228
341
  msgid "WooCommerce Order"
342
  msgstr ""
343
 
@@ -475,7 +493,7 @@ msgid "Activate for this form:"
475
  msgstr ""
476
 
477
  #: Includes/Integration.php:121 Includes/Integration.php:165
478
- #: Includes/Integration.php:200 Includes/Page.php:367
479
  msgid "Checkbox text"
480
  msgstr ""
481
 
@@ -506,7 +524,7 @@ msgstr ""
506
  msgid "You need to accept this checkbox."
507
  msgstr ""
508
 
509
- #: Includes/Integration.php:282 Includes/Page.php:303 Includes/Page.php:305
510
  msgid "Privacy Policy"
511
  msgstr ""
512
 
@@ -519,7 +537,7 @@ msgid ""
519
  "request. When your data is anonymised you will receive an email confirmation."
520
  msgstr ""
521
 
522
- #: Includes/Integration.php:347 Includes/Page.php:668
523
  msgid "WordPress Comments"
524
  msgstr ""
525
 
@@ -541,7 +559,7 @@ msgstr ""
541
  msgid "Gravity Forms"
542
  msgstr ""
543
 
544
- #: Includes/Integration.php:376 Includes/Page.php:669
545
  msgid "WooCommerce"
546
  msgstr ""
547
 
@@ -555,92 +573,92 @@ msgstr ""
555
  msgid "Integrations"
556
  msgstr ""
557
 
558
- #: Includes/Page.php:57 Includes/Page.php:380
559
  msgid "Consents"
560
  msgstr ""
561
 
562
- #: Includes/Page.php:77
563
  msgid "Checklist"
564
  msgstr ""
565
 
566
- #: Includes/Page.php:78 wp-gdpr-compliance.php:183
567
  msgid "Settings"
568
  msgstr ""
569
 
570
- #: Includes/Page.php:118
571
  msgid ""
572
  "This plugin assists website and webshop owners to comply with European "
573
  "privacy regulations known as GDPR. By May 25th, 2018 your site or shop has "
574
  "to comply."
575
  msgstr ""
576
 
577
- #: Includes/Page.php:121
578
  #, php-format
579
  msgid ""
580
  "%s currently supports %s. Please visit %s for frequently asked questions and "
581
  "our development roadmap."
582
  msgstr ""
583
 
584
- #: Includes/Page.php:129
585
  msgid ""
586
  "Disclaimer: The creators of this plugin do not have a legal background "
587
  "please contact a law firm for rock solid legal advice."
588
  msgstr ""
589
 
590
- #: Includes/Page.php:134
591
  msgid "Rate us"
592
  msgstr ""
593
 
594
- #: Includes/Page.php:136
595
  #, php-format
596
  msgid "Did %s help you out? Please leave a 5-star review. Thank you!"
597
  msgstr ""
598
 
599
- #: Includes/Page.php:137
600
  msgid "Write a review"
601
  msgstr ""
602
 
603
- #: Includes/Page.php:141
604
  msgid "Support"
605
  msgstr ""
606
 
607
- #: Includes/Page.php:143
608
  #, php-format
609
  msgid ""
610
  "Need a helping hand? Please ask for help on the %s. Be sure to mention your "
611
  "WordPress version and give as much additional information as possible."
612
  msgstr ""
613
 
614
- #: Includes/Page.php:144
615
  msgid "Support forum"
616
  msgstr ""
617
 
618
- #: Includes/Page.php:177
619
  msgid "Enable:"
620
  msgstr ""
621
 
622
- #: Includes/Page.php:203
623
  #, php-format
624
  msgid "This plugin is outdated. %s supports version %s and up."
625
  msgstr ""
626
 
627
- #: Includes/Page.php:212
628
  msgid "Couldn't find any supported plugins installed."
629
  msgstr ""
630
 
631
- #: Includes/Page.php:213
632
  msgid "The following plugins are supported as of now:"
633
  msgstr ""
634
 
635
- #: Includes/Page.php:219
636
  msgid "More plugins will be added in the future."
637
  msgstr ""
638
 
639
- #: Includes/Page.php:237
640
  msgid "We think you might have a mail plugin installed."
641
  msgstr ""
642
 
643
- #: Includes/Page.php:240
644
  msgid ""
645
  "Do you know where you got your email database from? Did you ask all the "
646
  "people on your newsletter(s) if they consent to receiving it? GDPR requires "
@@ -648,25 +666,25 @@ msgid ""
648
  "permission to mail them."
649
  msgstr ""
650
 
651
- #: Includes/Page.php:243
652
  msgid ""
653
  "Below we ask you what private data you currently collect and provide you "
654
  "with tips to comply."
655
  msgstr ""
656
 
657
- #: Includes/Page.php:310 Includes/Page.php:354
658
  msgid "Select an option"
659
  msgstr ""
660
 
661
- #: Includes/Page.php:318
662
  msgid "Link text"
663
  msgstr ""
664
 
665
- #: Includes/Page.php:323
666
  msgid "Request User Data"
667
  msgstr ""
668
 
669
- #: Includes/Page.php:325
670
  msgid ""
671
  "Allow your site's visitors to request their data stored in the WordPress "
672
  "database (comments, WooCommerce orders etc.). Data found is send to their "
@@ -674,34 +692,34 @@ msgid ""
674
  "data anonymised."
675
  msgstr ""
676
 
677
- #: Includes/Page.php:328
678
  msgid "Activate"
679
  msgstr ""
680
 
681
- #: Includes/Page.php:330
682
  msgid "Activate page"
683
  msgstr ""
684
 
685
- #: Includes/Page.php:338
686
  #, php-format
687
  msgid ""
688
  "Enabling this will create one private page containing the necessary "
689
  "shortcode: %s. You can determine when and how to publish this page yourself."
690
  msgstr ""
691
 
692
- #: Includes/Page.php:349
693
  msgid "Page"
694
  msgstr ""
695
 
696
- #: Includes/Page.php:361
697
  msgid "Click here to edit this page"
698
  msgstr ""
699
 
700
- #: Includes/Page.php:373
701
  msgid "Anonymise request explanation"
702
  msgstr ""
703
 
704
- #: Includes/Page.php:382
705
  msgid ""
706
  "Your visitors can give permission to all of the created Consents (scripts) "
707
  "through a Consent bar at the bottom of their screen. There they can also "
@@ -709,101 +727,101 @@ msgid ""
709
  "Consents. Once their settings are saved the bar disappears for 365 days."
710
  msgstr ""
711
 
712
- #: Includes/Page.php:389
713
  #, php-format
714
  msgid ""
715
  "Let your visitors re-access their settings by placing a link to the modal "
716
  "with the shortcode %s or add the \"%s\" class to a menu item."
717
  msgstr ""
718
 
719
- #: Includes/Page.php:401
720
  msgid "Bar: Explanation"
721
  msgstr ""
722
 
723
- #: Includes/Page.php:407
724
  msgid "Modal: Title"
725
  msgstr ""
726
 
727
- #: Includes/Page.php:413
728
  msgid "Modal: Explanation"
729
  msgstr ""
730
 
731
- #: Includes/Page.php:454
732
  msgid "Add New Consent"
733
  msgstr ""
734
 
735
- #: Includes/Page.php:456 Includes/Page.php:575 Includes/Page.php:790
736
  msgid "Active"
737
  msgstr ""
738
 
739
- #: Includes/Page.php:458 Includes/Page.php:539 Includes/Page.php:594
740
- #: Includes/Page.php:614 wp-gdpr-compliance.php:192 wp-gdpr-compliance.php:210
741
  msgid "Yes"
742
  msgstr ""
743
 
744
- #: Includes/Page.php:462 Includes/Page.php:570
745
  msgid "Title"
746
  msgstr ""
747
 
748
- #: Includes/Page.php:466
749
  msgid "e.g. \"Google Analytics\" or \"Advertising\""
750
  msgstr ""
751
 
752
- #: Includes/Page.php:471
753
  msgid "Description"
754
  msgstr ""
755
 
756
- #: Includes/Page.php:475
757
  msgid "Describe your consent script as thoroughly as possible."
758
  msgstr ""
759
 
760
- #: Includes/Page.php:480
761
  msgid "Code Snippet"
762
  msgstr ""
763
 
764
- #: Includes/Page.php:484
765
  msgid "Code snippets for Google Analytics, Facebook Pixel, etc."
766
  msgstr ""
767
 
768
- #: Includes/Page.php:489
769
  msgid "Code Wrap"
770
  msgstr ""
771
 
772
- #: Includes/Page.php:506
773
  msgid "Placement"
774
  msgstr ""
775
 
776
- #: Includes/Page.php:525
777
  msgid "Snippet will be added to the HEAD section."
778
  msgstr ""
779
 
780
- #: Includes/Page.php:530
781
  msgid "Snippet will be added to the FOOTER section."
782
  msgstr ""
783
 
784
- #: Includes/Page.php:537 Includes/Page.php:571
785
  msgid "Required"
786
  msgstr ""
787
 
788
- #: Includes/Page.php:541
789
  msgid ""
790
  "Ticking this checkbox means this Consent will always be triggered so users "
791
  "cannot opt-in or opt-out."
792
  msgstr ""
793
 
794
- #: Includes/Page.php:546
795
  msgid "Update"
796
  msgstr ""
797
 
798
- #: Includes/Page.php:546
799
  msgid "Add"
800
  msgstr ""
801
 
802
- #: Includes/Page.php:547
803
  msgid "Back to overview"
804
  msgstr ""
805
 
806
- #: Includes/Page.php:562
807
  msgid ""
808
  "Ask your visitors for permission to enable certain scripts for tracking or "
809
  "advertising purposes. Add a Consent for each type of script you are "
@@ -811,104 +829,113 @@ msgid ""
811
  "given."
812
  msgstr ""
813
 
814
- #: Includes/Page.php:563
815
  msgctxt "consent"
816
  msgid "Add New"
817
  msgstr ""
818
 
819
- #: Includes/Page.php:569
820
  msgid "Consent"
821
  msgstr ""
822
 
823
- #: Includes/Page.php:572
824
  msgid "Modified at"
825
  msgstr ""
826
 
827
- #: Includes/Page.php:573
828
  msgid "Created at"
829
  msgstr ""
830
 
831
- #: Includes/Page.php:574 Includes/Page.php:683
832
  msgid "Action"
833
  msgstr ""
834
 
835
- #: Includes/Page.php:594 Includes/Page.php:614 wp-gdpr-compliance.php:193
836
- #: wp-gdpr-compliance.php:211
837
  msgid "No"
838
  msgstr ""
839
 
840
- #: Includes/Page.php:604
841
  msgid "Edit"
842
  msgstr ""
843
 
844
- #: Includes/Page.php:609
845
  msgid "Remove"
846
  msgstr ""
847
 
848
- #: Includes/Page.php:637 Includes/Page.php:731 Includes/Page.php:813
849
  #, php-format
850
  msgid "%d of %d results found"
851
  msgstr ""
852
 
853
- #: Includes/Page.php:641
854
  msgid "No consents found."
855
  msgstr ""
856
 
857
- #: Includes/Page.php:665
858
  msgid ""
859
  "Anonymise a request by ticking the checkbox and clicking on the green "
860
  "anonymise button below."
861
  msgstr ""
862
 
863
- #: Includes/Page.php:667
864
  msgid "WordPress Users"
865
  msgstr ""
866
 
867
- #: Includes/Page.php:678
 
 
 
 
 
868
  msgid "Request"
869
  msgstr ""
870
 
871
- #: Includes/Page.php:679
872
  msgid "Type"
873
  msgstr ""
874
 
875
- #: Includes/Page.php:681 Includes/Page.php:763
876
  msgid "Date"
877
  msgstr ""
878
 
879
- #: Includes/Page.php:682
880
  msgid "Processed"
881
  msgstr ""
882
 
883
- #: Includes/Page.php:698
884
  msgid "View"
885
  msgstr ""
886
 
887
- #: Includes/Page.php:712
 
 
 
 
888
  msgid "Anonymise selected request(s)"
889
  msgstr ""
890
 
891
- #: Includes/Page.php:737 Includes/Page.php:819
892
  msgid "No requests found."
893
  msgstr ""
894
 
895
- #: Includes/Page.php:759
896
  msgid "ID"
897
  msgstr ""
898
 
899
- #: Includes/Page.php:760
900
  msgid "Requests to Process"
901
  msgstr ""
902
 
903
- #: Includes/Page.php:764
904
  msgid "Status"
905
  msgstr ""
906
 
907
- #: Includes/Page.php:782
908
  msgid "Manage"
909
  msgstr ""
910
 
911
- #: Includes/Page.php:790
912
  msgid "Expired"
913
  msgstr ""
914
 
@@ -952,18 +979,18 @@ msgstr ""
952
  msgid "If needed you can put in a new request after 24 hours here: %s."
953
  msgstr ""
954
 
955
- #: Includes/Shortcode.php:102
956
  msgid "This request is expired or doesn't exist."
957
  msgstr ""
958
 
959
- #: Includes/Shortcode.php:120
960
  msgid "Your Email Address"
961
  msgstr ""
962
 
963
- #: Includes/Shortcode.php:134
964
  msgid "Send"
965
  msgstr ""
966
 
967
- #: wp-gdpr-compliance.php:183
968
  msgid "View WP GDPR Compliance settings"
969
  msgstr ""
2
  msgid ""
3
  msgstr ""
4
  "Project-Id-Version: WP GDPR Compliance\n"
5
+ "POT-Creation-Date: 2018-11-12 14:17+0100\n"
6
  "Last-Translator: \n"
7
  "Language-Team: Van Ons <info@van-ons.nl>\n"
8
  "MIME-Version: 1.0\n"
29
  msgid "Retry"
30
  msgstr ""
31
 
32
+ #: Includes/Action.php:152 Includes/Page.php:396 Includes/Shortcode.php:160
33
  msgid "My settings"
34
  msgstr ""
35
 
37
  msgid "Accept"
38
  msgstr ""
39
 
40
+ #: Includes/Action.php:183 Includes/Page.php:594
41
  msgid "(no title)"
42
  msgstr ""
43
 
44
  #: Includes/Action.php:196 Includes/Helper.php:116 Includes/Helper.php:171
45
+ #: Includes/Page.php:240 Includes/Page.php:340 Includes/Page.php:391
46
+ #: Includes/Page.php:678 Includes/Page.php:781
47
  msgid "Note"
48
  msgstr ""
49
 
65
  msgid "Close modal"
66
  msgstr ""
67
 
68
+ #: Includes/Ajax.php:26 Includes/Ajax.php:95 Includes/Ajax.php:291
69
  msgid "Missing data."
70
  msgstr ""
71
 
72
+ #: Includes/Ajax.php:36
73
+ msgid "Missing option name."
74
  msgstr ""
75
 
76
+ #: Includes/Ajax.php:40
77
+ msgid "You're not allowed to manage settings."
78
+ msgstr ""
79
+
80
+ #: Includes/Ajax.php:44
81
+ msgid "You're not allowed to manage this setting."
82
  msgstr ""
83
 
84
+ #: Includes/Ajax.php:48
85
  msgid "Missing value."
86
  msgstr ""
87
 
88
+ #: Includes/Ajax.php:99
89
+ msgid "Missing type."
90
+ msgstr ""
91
+
92
+ #: Includes/Ajax.php:110
93
  msgid "Missing or incorrect email address."
94
  msgstr ""
95
 
96
+ #: Includes/Ajax.php:114
97
  msgid "You need to accept the privacy checkbox."
98
  msgstr ""
99
 
100
+ #: Includes/Ajax.php:139
101
  msgid "page"
102
  msgstr ""
103
 
104
+ #: Includes/Ajax.php:146
105
  #, php-format
106
  msgid "%s - Your data request"
107
  msgstr ""
108
 
109
+ #: Includes/Ajax.php:152
110
  #, php-format
111
  msgid "You have requested to access your data on %s."
112
  msgstr ""
113
 
114
+ #: Includes/Ajax.php:156
115
  #, php-format
116
  msgid "Please visit this %s to view the data linked to the email address %s."
117
  msgstr ""
118
 
119
+ #: Includes/Ajax.php:160
120
  msgid ""
121
  "This page is available for 24 hours and can only be reached from the same "
122
  "device, IP address and browser session you requested from."
123
  msgstr ""
124
 
125
+ #: Includes/Ajax.php:162
126
  #, php-format
127
  msgid ""
128
  "If your link is invalid you can fill in a new request after 24 hours: %s."
129
  msgstr ""
130
 
131
+ #: Includes/Ajax.php:176
132
  msgid "Success. You will receive an email with your data shortly."
133
  msgstr ""
134
 
135
+ #: Includes/Ajax.php:180
136
  msgid "Something went wrong while saving the request. Please try again."
137
  msgstr ""
138
 
139
+ #: Includes/Ajax.php:183
140
  msgid ""
141
  "You have already requested your data. Please check your mailbox. After 24 "
142
  "hours you can put in a new request."
143
  msgstr ""
144
 
145
+ #: Includes/Ajax.php:196
146
+ msgid "Missing token."
147
  msgstr ""
148
 
149
+ #: Includes/Ajax.php:200
150
  msgid "Missing or invalid type."
151
  msgstr ""
152
 
153
+ #: Includes/Ajax.php:204
154
  msgid "No value selected."
155
  msgstr ""
156
 
157
+ #: Includes/Ajax.php:224
158
  msgid "Something went wrong while saving this request. Please try again."
159
  msgstr ""
160
 
161
+ #: Includes/Ajax.php:232 Includes/Page.php:71
162
  msgid "Requests"
163
  msgstr ""
164
 
165
+ #: Includes/Ajax.php:236
166
  #, php-format
167
  msgid "%s - New anonymise request"
168
  msgstr ""
169
 
170
+ #: Includes/Ajax.php:241
171
  #, php-format
172
  msgid "You have received a new anonymise request on %s."
173
  msgstr ""
174
 
175
+ #: Includes/Ajax.php:245
176
  #, php-format
177
  msgid "You can manage this request in the admin panel: %s"
178
  msgstr ""
179
 
180
+ #: Includes/Ajax.php:256
181
  msgid "Session doesn't match."
182
  msgstr ""
183
 
184
+ #: Includes/Ajax.php:259
185
  msgid "No session found."
186
  msgstr ""
187
 
188
+ #: Includes/Ajax.php:281
189
  msgid "The access request functionality is not enabled."
190
  msgstr ""
191
 
192
+ #: Includes/Ajax.php:295
193
  msgid "This request doesn't exist."
194
  msgstr ""
195
 
196
+ #: Includes/Ajax.php:315
197
  msgid "This user doesn't exist."
198
  msgstr ""
199
 
200
+ #: Includes/Ajax.php:321
201
  msgid "You're not allowed to edit users."
202
  msgstr ""
203
 
204
+ #: Includes/Ajax.php:334
205
  msgid "This comment doesn't exist."
206
  msgstr ""
207
 
208
+ #: Includes/Ajax.php:340
209
  msgid "You're not allowed to edit comments."
210
  msgstr ""
211
 
212
+ #: Includes/Ajax.php:384
213
  msgid "You're not allowed to edit WooCommerce orders."
214
  msgstr ""
215
 
216
+ #: Includes/Ajax.php:396
217
  #, php-format
218
  msgid "%s - Your request"
219
  msgstr ""
220
 
221
+ #: Includes/Ajax.php:401
222
  #, php-format
223
  msgid ""
224
  "We have successfully processed your request and your data has been "
225
  "anonymised on %s."
226
  msgstr ""
227
 
228
+ #: Includes/Ajax.php:404
229
  msgid "The following has been processed:"
230
  msgstr ""
231
 
232
+ #: Includes/Ajax.php:413
233
  msgid "Successfully sent an confirmation mail to the user."
234
  msgstr ""
235
 
236
+ #: Includes/Ajax.php:417
237
  msgid "This request has already been processed."
238
  msgstr ""
239
 
263
  msgid "Do not wrap my code snippet"
264
  msgstr ""
265
 
266
+ #: Includes/Consent.php:281 Includes/Page.php:528
267
  msgid "Head"
268
  msgstr ""
269
 
270
+ #: Includes/Consent.php:282 Includes/Page.php:533
271
  msgid "Footer"
272
  msgstr ""
273
 
274
+ #: Includes/Cron.php:21
275
+ msgid "Once a month"
276
+ msgstr ""
277
+
278
  #: Includes/Data.php:27 Includes/Extensions/WP.php:34 Includes/Shortcode.php:85
279
+ #: Includes/Shortcode.php:105
280
  #, php-format
281
  msgid "<strong>ERROR</strong>: %s"
282
  msgstr ""
294
  msgstr ""
295
 
296
  #: Includes/Data.php:54 Includes/Data.php:63 Includes/Data.php:70
297
+ #: Includes/Page.php:791
298
  msgid "Email Address"
299
  msgstr ""
300
 
314
  msgid "Content"
315
  msgstr ""
316
 
317
+ #: Includes/Data.php:64 Includes/Page.php:691 Includes/Page.php:792
318
  msgid "IP Address"
319
  msgstr ""
320
 
343
  msgid "Anonymise selected %s(s)"
344
  msgstr ""
345
 
346
+ #: Includes/DeleteRequest.php:234
347
+ msgid "Unknown"
348
+ msgstr ""
349
+
350
+ #: Includes/DeleteRequest.php:237
351
  msgid "User"
352
  msgstr ""
353
 
354
+ #: Includes/DeleteRequest.php:240
355
  msgid "Comment"
356
  msgstr ""
357
 
358
+ #: Includes/DeleteRequest.php:243
359
  msgid "WooCommerce Order"
360
  msgstr ""
361
 
493
  msgstr ""
494
 
495
  #: Includes/Integration.php:121 Includes/Integration.php:165
496
+ #: Includes/Integration.php:200 Includes/Page.php:371
497
  msgid "Checkbox text"
498
  msgstr ""
499
 
524
  msgid "You need to accept this checkbox."
525
  msgstr ""
526
 
527
+ #: Includes/Integration.php:282 Includes/Page.php:307 Includes/Page.php:309
528
  msgid "Privacy Policy"
529
  msgstr ""
530
 
537
  "request. When your data is anonymised you will receive an email confirmation."
538
  msgstr ""
539
 
540
+ #: Includes/Integration.php:347 Includes/Page.php:672
541
  msgid "WordPress Comments"
542
  msgstr ""
543
 
559
  msgid "Gravity Forms"
560
  msgstr ""
561
 
562
+ #: Includes/Integration.php:376 Includes/Page.php:673
563
  msgid "WooCommerce"
564
  msgstr ""
565
 
573
  msgid "Integrations"
574
  msgstr ""
575
 
576
+ #: Includes/Page.php:57 Includes/Page.php:384
577
  msgid "Consents"
578
  msgstr ""
579
 
580
+ #: Includes/Page.php:81
581
  msgid "Checklist"
582
  msgstr ""
583
 
584
+ #: Includes/Page.php:82 wp-gdpr-compliance.php:201
585
  msgid "Settings"
586
  msgstr ""
587
 
588
+ #: Includes/Page.php:122
589
  msgid ""
590
  "This plugin assists website and webshop owners to comply with European "
591
  "privacy regulations known as GDPR. By May 25th, 2018 your site or shop has "
592
  "to comply."
593
  msgstr ""
594
 
595
+ #: Includes/Page.php:125
596
  #, php-format
597
  msgid ""
598
  "%s currently supports %s. Please visit %s for frequently asked questions and "
599
  "our development roadmap."
600
  msgstr ""
601
 
602
+ #: Includes/Page.php:133
603
  msgid ""
604
  "Disclaimer: The creators of this plugin do not have a legal background "
605
  "please contact a law firm for rock solid legal advice."
606
  msgstr ""
607
 
608
+ #: Includes/Page.php:138
609
  msgid "Rate us"
610
  msgstr ""
611
 
612
+ #: Includes/Page.php:140
613
  #, php-format
614
  msgid "Did %s help you out? Please leave a 5-star review. Thank you!"
615
  msgstr ""
616
 
617
+ #: Includes/Page.php:141
618
  msgid "Write a review"
619
  msgstr ""
620
 
621
+ #: Includes/Page.php:145
622
  msgid "Support"
623
  msgstr ""
624
 
625
+ #: Includes/Page.php:147
626
  #, php-format
627
  msgid ""
628
  "Need a helping hand? Please ask for help on the %s. Be sure to mention your "
629
  "WordPress version and give as much additional information as possible."
630
  msgstr ""
631
 
632
+ #: Includes/Page.php:148
633
  msgid "Support forum"
634
  msgstr ""
635
 
636
+ #: Includes/Page.php:181
637
  msgid "Enable:"
638
  msgstr ""
639
 
640
+ #: Includes/Page.php:207
641
  #, php-format
642
  msgid "This plugin is outdated. %s supports version %s and up."
643
  msgstr ""
644
 
645
+ #: Includes/Page.php:216
646
  msgid "Couldn't find any supported plugins installed."
647
  msgstr ""
648
 
649
+ #: Includes/Page.php:217
650
  msgid "The following plugins are supported as of now:"
651
  msgstr ""
652
 
653
+ #: Includes/Page.php:223
654
  msgid "More plugins will be added in the future."
655
  msgstr ""
656
 
657
+ #: Includes/Page.php:241
658
  msgid "We think you might have a mail plugin installed."
659
  msgstr ""
660
 
661
+ #: Includes/Page.php:244
662
  msgid ""
663
  "Do you know where you got your email database from? Did you ask all the "
664
  "people on your newsletter(s) if they consent to receiving it? GDPR requires "
666
  "permission to mail them."
667
  msgstr ""
668
 
669
+ #: Includes/Page.php:247
670
  msgid ""
671
  "Below we ask you what private data you currently collect and provide you "
672
  "with tips to comply."
673
  msgstr ""
674
 
675
+ #: Includes/Page.php:314 Includes/Page.php:358
676
  msgid "Select an option"
677
  msgstr ""
678
 
679
+ #: Includes/Page.php:322
680
  msgid "Link text"
681
  msgstr ""
682
 
683
+ #: Includes/Page.php:327
684
  msgid "Request User Data"
685
  msgstr ""
686
 
687
+ #: Includes/Page.php:329
688
  msgid ""
689
  "Allow your site's visitors to request their data stored in the WordPress "
690
  "database (comments, WooCommerce orders etc.). Data found is send to their "
692
  "data anonymised."
693
  msgstr ""
694
 
695
+ #: Includes/Page.php:332
696
  msgid "Activate"
697
  msgstr ""
698
 
699
+ #: Includes/Page.php:334
700
  msgid "Activate page"
701
  msgstr ""
702
 
703
+ #: Includes/Page.php:342
704
  #, php-format
705
  msgid ""
706
  "Enabling this will create one private page containing the necessary "
707
  "shortcode: %s. You can determine when and how to publish this page yourself."
708
  msgstr ""
709
 
710
+ #: Includes/Page.php:353
711
  msgid "Page"
712
  msgstr ""
713
 
714
+ #: Includes/Page.php:365
715
  msgid "Click here to edit this page"
716
  msgstr ""
717
 
718
+ #: Includes/Page.php:377
719
  msgid "Anonymise request explanation"
720
  msgstr ""
721
 
722
+ #: Includes/Page.php:386
723
  msgid ""
724
  "Your visitors can give permission to all of the created Consents (scripts) "
725
  "through a Consent bar at the bottom of their screen. There they can also "
727
  "Consents. Once their settings are saved the bar disappears for 365 days."
728
  msgstr ""
729
 
730
+ #: Includes/Page.php:393
731
  #, php-format
732
  msgid ""
733
  "Let your visitors re-access their settings by placing a link to the modal "
734
  "with the shortcode %s or add the \"%s\" class to a menu item."
735
  msgstr ""
736
 
737
+ #: Includes/Page.php:405
738
  msgid "Bar: Explanation"
739
  msgstr ""
740
 
741
+ #: Includes/Page.php:411
742
  msgid "Modal: Title"
743
  msgstr ""
744
 
745
+ #: Includes/Page.php:417
746
  msgid "Modal: Explanation"
747
  msgstr ""
748
 
749
+ #: Includes/Page.php:458
750
  msgid "Add New Consent"
751
  msgstr ""
752
 
753
+ #: Includes/Page.php:460 Includes/Page.php:579 Includes/Page.php:821
754
  msgid "Active"
755
  msgstr ""
756
 
757
+ #: Includes/Page.php:462 Includes/Page.php:543 Includes/Page.php:598
758
+ #: Includes/Page.php:618 wp-gdpr-compliance.php:210 wp-gdpr-compliance.php:228
759
  msgid "Yes"
760
  msgstr ""
761
 
762
+ #: Includes/Page.php:466 Includes/Page.php:574
763
  msgid "Title"
764
  msgstr ""
765
 
766
+ #: Includes/Page.php:470
767
  msgid "e.g. \"Google Analytics\" or \"Advertising\""
768
  msgstr ""
769
 
770
+ #: Includes/Page.php:475
771
  msgid "Description"
772
  msgstr ""
773
 
774
+ #: Includes/Page.php:479
775
  msgid "Describe your consent script as thoroughly as possible."
776
  msgstr ""
777
 
778
+ #: Includes/Page.php:484
779
  msgid "Code Snippet"
780
  msgstr ""
781
 
782
+ #: Includes/Page.php:488
783
  msgid "Code snippets for Google Analytics, Facebook Pixel, etc."
784
  msgstr ""
785
 
786
+ #: Includes/Page.php:493
787
  msgid "Code Wrap"
788
  msgstr ""
789
 
790
+ #: Includes/Page.php:510
791
  msgid "Placement"
792
  msgstr ""
793
 
794
+ #: Includes/Page.php:529
795
  msgid "Snippet will be added to the HEAD section."
796
  msgstr ""
797
 
798
+ #: Includes/Page.php:534
799
  msgid "Snippet will be added to the FOOTER section."
800
  msgstr ""
801
 
802
+ #: Includes/Page.php:541 Includes/Page.php:575
803
  msgid "Required"
804
  msgstr ""
805
 
806
+ #: Includes/Page.php:545
807
  msgid ""
808
  "Ticking this checkbox means this Consent will always be triggered so users "
809
  "cannot opt-in or opt-out."
810
  msgstr ""
811
 
812
+ #: Includes/Page.php:550
813
  msgid "Update"
814
  msgstr ""
815
 
816
+ #: Includes/Page.php:550
817
  msgid "Add"
818
  msgstr ""
819
 
820
+ #: Includes/Page.php:551
821
  msgid "Back to overview"
822
  msgstr ""
823
 
824
+ #: Includes/Page.php:566
825
  msgid ""
826
  "Ask your visitors for permission to enable certain scripts for tracking or "
827
  "advertising purposes. Add a Consent for each type of script you are "
829
  "given."
830
  msgstr ""
831
 
832
+ #: Includes/Page.php:567
833
  msgctxt "consent"
834
  msgid "Add New"
835
  msgstr ""
836
 
837
+ #: Includes/Page.php:573
838
  msgid "Consent"
839
  msgstr ""
840
 
841
+ #: Includes/Page.php:576
842
  msgid "Modified at"
843
  msgstr ""
844
 
845
+ #: Includes/Page.php:577
846
  msgid "Created at"
847
  msgstr ""
848
 
849
+ #: Includes/Page.php:578 Includes/Page.php:694
850
  msgid "Action"
851
  msgstr ""
852
 
853
+ #: Includes/Page.php:598 Includes/Page.php:618 wp-gdpr-compliance.php:211
854
+ #: wp-gdpr-compliance.php:229
855
  msgid "No"
856
  msgstr ""
857
 
858
+ #: Includes/Page.php:608
859
  msgid "Edit"
860
  msgstr ""
861
 
862
+ #: Includes/Page.php:613
863
  msgid "Remove"
864
  msgstr ""
865
 
866
+ #: Includes/Page.php:641 Includes/Page.php:752 Includes/Page.php:844
867
  #, php-format
868
  msgid "%d of %d results found"
869
  msgstr ""
870
 
871
+ #: Includes/Page.php:645
872
  msgid "No consents found."
873
  msgstr ""
874
 
875
+ #: Includes/Page.php:669
876
  msgid ""
877
  "Anonymise a request by ticking the checkbox and clicking on the green "
878
  "anonymise button below."
879
  msgstr ""
880
 
881
+ #: Includes/Page.php:671
882
  msgid "WordPress Users"
883
  msgstr ""
884
 
885
+ #: Includes/Page.php:679 Includes/Page.php:782
886
+ #, php-format
887
+ msgid "Requests are automatically anonymised after %d days."
888
+ msgstr ""
889
+
890
+ #: Includes/Page.php:689
891
  msgid "Request"
892
  msgstr ""
893
 
894
+ #: Includes/Page.php:690
895
  msgid "Type"
896
  msgstr ""
897
 
898
+ #: Includes/Page.php:692 Includes/Page.php:793
899
  msgid "Date"
900
  msgstr ""
901
 
902
+ #: Includes/Page.php:693
903
  msgid "Processed"
904
  msgstr ""
905
 
906
+ #: Includes/Page.php:712
907
  msgid "View"
908
  msgstr ""
909
 
910
+ #: Includes/Page.php:714
911
+ msgid "N/A"
912
+ msgstr ""
913
+
914
+ #: Includes/Page.php:733
915
  msgid "Anonymise selected request(s)"
916
  msgstr ""
917
 
918
+ #: Includes/Page.php:758 Includes/Page.php:850
919
  msgid "No requests found."
920
  msgstr ""
921
 
922
+ #: Includes/Page.php:789
923
  msgid "ID"
924
  msgstr ""
925
 
926
+ #: Includes/Page.php:790
927
  msgid "Requests to Process"
928
  msgstr ""
929
 
930
+ #: Includes/Page.php:794
931
  msgid "Status"
932
  msgstr ""
933
 
934
+ #: Includes/Page.php:813
935
  msgid "Manage"
936
  msgstr ""
937
 
938
+ #: Includes/Page.php:821
939
  msgid "Expired"
940
  msgstr ""
941
 
979
  msgid "If needed you can put in a new request after 24 hours here: %s."
980
  msgstr ""
981
 
982
+ #: Includes/Shortcode.php:106
983
  msgid "This request is expired or doesn't exist."
984
  msgstr ""
985
 
986
+ #: Includes/Shortcode.php:126
987
  msgid "Your Email Address"
988
  msgstr ""
989
 
990
+ #: Includes/Shortcode.php:140
991
  msgid "Send"
992
  msgstr ""
993
 
994
+ #: wp-gdpr-compliance.php:201
995
  msgid "View WP GDPR Compliance settings"
996
  msgstr ""
readme.txt CHANGED
@@ -4,21 +4,27 @@ Tags: gdpr, law, regulations, compliance, data, protection, privacy, data protec
4
  Requires at least: 4.5
5
  Tested up to: 4.9.4
6
  Requires PHP: 5.3
7
- Stable tag: 1.4.3
8
  License: GPLv2 or later
9
  License URI: https://www.gnu.org/licenses/gpl-2.0.html
10
 
11
- This plugin assists website owners to comply with European privacy regulations (GDPR). By May 24th, 2018 you have to comply to avoid large fines.
12
 
13
  == Description ==
14
 
15
- ACTIVATING THIS PLUGIN DOES NOT GUARANTEE YOU FULLY COMPLY WITH GDPR. PLEASE CONTACT A GDPR CONSULTANT OR LAW FIRM TO ASSESS NECESSARY MEASURES.
16
 
17
- This plugin assists website and webshop owners to comply with European privacy regulations known as GDPR. By May 24th, 2018 your site or shop has to comply to avoid large fines.
18
 
19
- WP GDPR Compliance currently supports Contact Form 7 (>= 4.6), Gravity Forms (>= 1.9), WooCommerce (>= 2.5.0) and WordPress Comments. Additional plugin support will follow soon.
 
 
 
 
20
 
21
- We constantly update this plugin to take care of more GDPR related issues. To check our development roadmap please visit [wpgdprc.com](https://www.wpgdprc.com/roadmap/ "Roadmap").
 
 
 
22
 
23
  == Installation ==
24
 
@@ -28,7 +34,7 @@ We constantly update this plugin to take care of more GDPR related issues. To ch
28
 
29
  == Frequently Asked Questions ==
30
 
31
- You'll find answers to many of your questions on [wpgdprc.com](https://www.wpgdprc.com/faq/ "Frequently Asked Questions").
32
 
33
  == Screenshots ==
34
 
@@ -39,6 +45,15 @@ You'll find answers to many of your questions on [wpgdprc.com](https://www.wpgdp
39
 
40
  == Changelog ==
41
 
 
 
 
 
 
 
 
 
 
42
  = 1.4.3 =
43
  *Release date: November 7th, 2018*
44
  * Security fix: Removed base64_decode() function.
@@ -135,36 +150,36 @@ You'll find answers to many of your questions on [wpgdprc.com](https://www.wpgdp
135
 
136
  = 1.2.4 =
137
  *Release date: April 3rd, 2018*
138
- * Show a notice when Jetpack is installed
139
- * Fixed a bug with WordPress Comments
140
 
141
  = 1.2.3 =
142
  *Release date: March 29th, 2018*
143
- * Storage of explicit consent timestamp
144
- * Return of the settings tab
145
- * Added ability to include your privacy policy page
146
- * Added a couple of apply_filters()
147
- * Small styling changes
148
- * Added .POT file to translate this plugin (Thanks for translating!)
149
 
150
  = 1.2.2 =
151
  *Release date: March 2nd, 2018*
152
- * Fixed a bug with WordPress Comments
153
- * Added countdown to GDPR deadline (May 25, 2018)
154
- * Added ability to add custom error messages to Contact Form 7 and Gravity Forms
155
- * Added ability to add HTML tags to the texts and error messages
156
 
157
  = 1.2.1 =
158
  *Release date: February 26th, 2018*
159
- * Fixed a bug with WordPress comments
160
- * Fixed a bug with default checkbox texts
161
 
162
  = 1.2 =
163
  *Release date: February 23rd, 2018*
164
  * Limit data shared with WordPress when updating the core.
165
- * Added minimum supported version for Contact Form 7 (version 4.6)
166
- * Added minimum supported version for Gravity Forms (version 1.9)
167
- * Added minimum supported version for WooCommerce (version 2.5.0)
168
  * Delete all data created by the plugin after deactivating integrations or uninstalling the plugin.
169
  * Moved the position of the GDPR checkbox in the WordPress Comments form. (directly above the submit button)
170
  * Moved the position of the GDPR checkbox in WooCommerce. (directly above the submit button)
4
  Requires at least: 4.5
5
  Tested up to: 4.9.4
6
  Requires PHP: 5.3
7
+ Stable tag: 1.4.4
8
  License: GPLv2 or later
9
  License URI: https://www.gnu.org/licenses/gpl-2.0.html
10
 
11
+ This plugin assists website owners to comply with European privacy regulations (GDPR).
12
 
13
  == Description ==
14
 
 
15
 
16
+ This plugin assists website and webshop owners to comply with European privacy regulations known as GDPR. Activating this plugin does not guarantee your site fully complies with GDPR.
17
 
18
+ - Add Consents and give your visitors full control.
19
+ - Keeping a consent log for supported plugins.
20
+ - Adding checkboxes to supported plugins for explicit visitor consent.
21
+ - 'Right to access' through encrypted audit logs and double opt-in mail.
22
+ - 'Right to be forgotten' by anonymising user data.
23
 
24
+ WP GDPR Compliance supports Contact Form 7 (>= 4.6), Gravity Forms (>= 1.9), WooCommerce (>= 2.5.0) and WordPress Comments.
25
+
26
+ Documentation
27
+ [https://www.wpgdprc.com/documentation/](https://www.wpgdprc.com/documentation/ "WP GDPR Compliance documentation")
28
 
29
  == Installation ==
30
 
34
 
35
  == Frequently Asked Questions ==
36
 
37
+ You'll find answers to many of your questions on [https://www.wpgdprc.com/faq/](https://www.wpgdprc.com/faq/ "Frequently Asked Questions")
38
 
39
  == Screenshots ==
40
 
45
 
46
  == Changelog ==
47
 
48
+ = 1.4.4 =
49
+ *Release date: November 28th, 2018*
50
+ * Anonymise requests after 30 days. This also removes the ability to process delete requests.
51
+ * Small bugfix to correctly strip slashes from 'Consent' titles.
52
+ * Added possibility to use external URL's for the privacy policy.
53
+ * Added auto opt-in for admin's when adding a comment.
54
+ * Fixed bug that added attachment to the consent bar when viewing an attachment.
55
+ * Fixed bug with token.
56
+
57
  = 1.4.3 =
58
  *Release date: November 7th, 2018*
59
  * Security fix: Removed base64_decode() function.
150
 
151
  = 1.2.4 =
152
  *Release date: April 3rd, 2018*
153
+ * Show a notice when Jetpack is installed.
154
+ * Fixed a bug with WordPress Comments.
155
 
156
  = 1.2.3 =
157
  *Release date: March 29th, 2018*
158
+ * Storage of explicit consent timestamp.
159
+ * Return of the settings tab.
160
+ * Added ability to include your privacy policy page.
161
+ * Added a couple of apply_filters().
162
+ * Small styling changes.
163
+ * Added .POT file to translate this plugin. (Thanks for translating!)
164
 
165
  = 1.2.2 =
166
  *Release date: March 2nd, 2018*
167
+ * Fixed a bug with WordPress Comments.
168
+ * Added countdown to GDPR deadline. (May 25, 2018)
169
+ * Added ability to add custom error messages to Contact Form 7 and Gravity Forms.
170
+ * Added ability to add HTML tags to the texts and error messages.
171
 
172
  = 1.2.1 =
173
  *Release date: February 26th, 2018*
174
+ * Fixed a bug with WordPress comments.
175
+ * Fixed a bug with default checkbox texts.
176
 
177
  = 1.2 =
178
  *Release date: February 23rd, 2018*
179
  * Limit data shared with WordPress when updating the core.
180
+ * Added minimum supported version for Contact Form 7. (version 4.6)
181
+ * Added minimum supported version for Gravity Forms. (version 1.9)
182
+ * Added minimum supported version for WooCommerce. (version 2.5.0)
183
  * Delete all data created by the plugin after deactivating integrations or uninstalling the plugin.
184
  * Moved the position of the GDPR checkbox in the WordPress Comments form. (directly above the submit button)
185
  * Moved the position of the GDPR checkbox in WooCommerce. (directly above the submit button)
uninstall.php CHANGED
@@ -29,6 +29,7 @@ $wpdb->query("DROP TABLE IF EXISTS `{$wpdb->base_prefix}wpgdprc_consents`");
29
 
30
  // Cronjobs
31
  wp_clear_scheduled_hook('wpgdprc_deactivate_access_requests');
 
32
 
33
  // Clear any cached data that has been removed
34
  wp_cache_flush();
29
 
30
  // Cronjobs
31
  wp_clear_scheduled_hook('wpgdprc_deactivate_access_requests');
32
+ wp_clear_scheduled_hook('wpgdprc_anonymise_requests');
33
 
34
  // Clear any cached data that has been removed
35
  wp_cache_flush();
wp-gdpr-compliance.php CHANGED
@@ -4,7 +4,7 @@
4
  Plugin Name: WP GDPR Compliance
5
  Plugin URI: https://www.wpgdprc.com/
6
  Description: This plugin assists website and webshop owners to comply with European privacy regulations known as GDPR. By May 24th, 2018 your website or shop has to comply to avoid large fines.
7
- Version: 1.4.3
8
  Author: Van Ons
9
  Author URI: https://www.van-ons.nl/
10
  License: GPL2
@@ -94,6 +94,7 @@ class WPGDPRC {
94
  add_action('wp_enqueue_scripts', array($this, 'loadAssets'), 999);
95
  add_action('admin_enqueue_scripts', array($this, 'loadAdminAssets'), 999);
96
  add_action('core_version_check_query_args', array(Action::getInstance(), 'onlySendEssentialDataDuringUpdateCheck'));
 
97
  add_action('wp_ajax_wpgdprc_process_settings', array(Ajax::getInstance(), 'processSettings'));
98
  add_action('wp_ajax_wpgdprc_process_action', array(Ajax::getInstance(), 'processAction'));
99
  add_action('wp_ajax_nopriv_wpgdprc_process_action', array(Ajax::getInstance(), 'processAction'));
@@ -103,15 +104,22 @@ class WPGDPRC {
103
  add_action('init', array(Action::getInstance(), 'processEnableAccessRequest'));
104
  add_action('admin_notices', array(Action::getInstance(), 'showNoticesRequestUserData'));
105
  add_action('wpgdprc_deactivate_access_requests', array(Cron::getInstance(), 'deactivateAccessRequests'));
 
106
  add_action('wp_ajax_wpgdprc_process_delete_request', array(Ajax::getInstance(), 'processDeleteRequest'));
107
  add_shortcode('wpgdprc_access_request_form', array(Shortcode::getInstance(), 'accessRequestForm'));
108
  if (!wp_next_scheduled('wpgdprc_deactivate_access_requests')) {
109
  wp_schedule_event(time(), 'hourly', 'wpgdprc_deactivate_access_requests');
110
  }
 
 
 
111
  } else {
112
  if (wp_next_scheduled('wpgdprc_deactivate_access_requests')) {
113
  wp_clear_scheduled_hook('wpgdprc_deactivate_access_requests');
114
  }
 
 
 
115
  }
116
  if (Consent::databaseTableExists()) {
117
  add_shortcode('wpgdprc_consents_settings_link', array(Shortcode::getInstance(), 'consentsSettingsLink'));
@@ -126,13 +134,12 @@ class WPGDPRC {
126
  add_filter('wpgdprc_the_content', 'convert_smilies', 20);
127
  add_filter('wpgdprc_the_content', 'wpautop');
128
  add_filter('wpgdprc_the_content', 'shortcode_unautop');
129
- add_filter('wpgdprc_the_content', 'prepend_attachment');
130
  add_filter('wpgdprc_the_content', 'wp_make_content_images_responsive');
131
  }
132
 
133
  public static function handleDatabaseTables() {
134
  $dbVersion = get_option('wpgdprc_db_version', 0);
135
- if (version_compare($dbVersion, '1.3', '==')) {
136
  return;
137
  }
138
 
@@ -176,11 +183,17 @@ class WPGDPRC {
176
  }
177
 
178
  // Add column 'token' to 'Access Requests' table
179
- if (version_compare($dbVersion, '1.3', '<')) {
180
- $query = "ALTER TABLE `" . AccessRequest::getDatabaseTableName() . "`
181
- ADD column `token` text NOT NULL AFTER `ip_address`;";
182
- $wpdb->query($query);
183
- update_option('wpgdprc_db_version', '1.3');
 
 
 
 
 
 
184
  }
185
  }
186
 
4
  Plugin Name: WP GDPR Compliance
5
  Plugin URI: https://www.wpgdprc.com/
6
  Description: This plugin assists website and webshop owners to comply with European privacy regulations known as GDPR. By May 24th, 2018 your website or shop has to comply to avoid large fines.
7
+ Version: 1.4.4
8
  Author: Van Ons
9
  Author URI: https://www.van-ons.nl/
10
  License: GPL2
94
  add_action('wp_enqueue_scripts', array($this, 'loadAssets'), 999);
95
  add_action('admin_enqueue_scripts', array($this, 'loadAdminAssets'), 999);
96
  add_action('core_version_check_query_args', array(Action::getInstance(), 'onlySendEssentialDataDuringUpdateCheck'));
97
+ add_filter('cron_schedules', array(Cron::getInstance(), 'addCronSchedules'));
98
  add_action('wp_ajax_wpgdprc_process_settings', array(Ajax::getInstance(), 'processSettings'));
99
  add_action('wp_ajax_wpgdprc_process_action', array(Ajax::getInstance(), 'processAction'));
100
  add_action('wp_ajax_nopriv_wpgdprc_process_action', array(Ajax::getInstance(), 'processAction'));
104
  add_action('init', array(Action::getInstance(), 'processEnableAccessRequest'));
105
  add_action('admin_notices', array(Action::getInstance(), 'showNoticesRequestUserData'));
106
  add_action('wpgdprc_deactivate_access_requests', array(Cron::getInstance(), 'deactivateAccessRequests'));
107
+ add_action('wpgdprc_anonymise_requests', array(Cron::getInstance(), 'anonymiseRequests'));
108
  add_action('wp_ajax_wpgdprc_process_delete_request', array(Ajax::getInstance(), 'processDeleteRequest'));
109
  add_shortcode('wpgdprc_access_request_form', array(Shortcode::getInstance(), 'accessRequestForm'));
110
  if (!wp_next_scheduled('wpgdprc_deactivate_access_requests')) {
111
  wp_schedule_event(time(), 'hourly', 'wpgdprc_deactivate_access_requests');
112
  }
113
+ if (!wp_next_scheduled('wpgdprc_anonymise_requests')) {
114
+ wp_schedule_event(time(), 'wpgdprc-monthly', 'wpgdprc_anonymise_requests');
115
+ }
116
  } else {
117
  if (wp_next_scheduled('wpgdprc_deactivate_access_requests')) {
118
  wp_clear_scheduled_hook('wpgdprc_deactivate_access_requests');
119
  }
120
+ if (wp_next_scheduled('wpgdprc_anonymise_requests')) {
121
+ wp_clear_scheduled_hook('wpgdprc_anonymise_requests');
122
+ }
123
  }
124
  if (Consent::databaseTableExists()) {
125
  add_shortcode('wpgdprc_consents_settings_link', array(Shortcode::getInstance(), 'consentsSettingsLink'));
134
  add_filter('wpgdprc_the_content', 'convert_smilies', 20);
135
  add_filter('wpgdprc_the_content', 'wpautop');
136
  add_filter('wpgdprc_the_content', 'shortcode_unautop');
 
137
  add_filter('wpgdprc_the_content', 'wp_make_content_images_responsive');
138
  }
139
 
140
  public static function handleDatabaseTables() {
141
  $dbVersion = get_option('wpgdprc_db_version', 0);
142
+ if (version_compare($dbVersion, '1.4', '==')) {
143
  return;
144
  }
145
 
183
  }
184
 
185
  // Add column 'token' to 'Access Requests' table
186
+ if (version_compare($dbVersion, '1.4', '<')) {
187
+ if ($wpdb->get_var("SHOW TABLES LIKE '" . AccessRequest::getDatabaseTableName() . "'") === AccessRequest::getDatabaseTableName()) {
188
+ if (!$wpdb->get_var("SHOW COLUMNS " . AccessRequest::getDatabaseTableName() ." LIKE 'token';")) {
189
+ $query = "ALTER TABLE `" . AccessRequest::getDatabaseTableName() . "`
190
+ ADD column `token` text NOT NULL AFTER `ip_address`;";
191
+ $wpdb->query($query);
192
+ update_option('wpgdprc_db_version', '1.4');
193
+ } else {
194
+ update_option('wpgdprc_db_version', '1.4');
195
+ }
196
+ }
197
  }
198
  }
199