WP GDPR Compliance - Version 1.3.4

Version Description

Release date: May 16th, 2018 * Fixed a bug when creating the database tables used by the request user data functionality. * Fixed a bug when creating the request user data page. * Expired access requests are shown more clearly. * Improved error messages. * Added a link to the support forum. We're happy to help!

Download this release

Release Info

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

Code changes from version 1.3.3 to 1.3.4

Includes/AccessRequest.php CHANGED
@@ -289,6 +289,15 @@ class AccessRequest {
289
  $this->dateCreated = $dateCreated;
290
  }
291
 
 
 
 
 
 
 
 
 
 
292
  /**
293
  * @return string
294
  */
289
  $this->dateCreated = $dateCreated;
290
  }
291
 
292
+ /**
293
+ * @return bool
294
+ */
295
+ public static function databaseTableExists() {
296
+ global $wpdb;
297
+ $result = $wpdb->query("SHOW TABLES LIKE '" . self::getDatabaseTableName() . "'");
298
+ return ($result === 1);
299
+ }
300
+
301
  /**
302
  * @return string
303
  */
Includes/Action.php CHANGED
@@ -27,41 +27,46 @@ class Action {
27
  }
28
 
29
  public function processEnableAccessRequest() {
30
- $page = Helper::getAccessRequestPage();
31
  $enabled = Helper::isEnabled('enable_access_request', 'settings');
32
- $status = ($enabled) ? 'private' : 'draft';
33
- if ($enabled && $page === false) {
34
- $result = wp_insert_post(array(
35
- 'post_type' => 'page',
36
- 'post_status' => $status,
37
- 'post_title' => __('Data Access Request', WP_GDPR_C_SLUG),
38
- 'post_content' => '[wpgdprc_access_request_form]',
39
- 'meta_input' => array(
40
- '_wpgdprc_access_request' => 1,
41
- ),
42
- ), true);
43
- if (!is_wp_error($result)) {
44
- $page = get_post($result);
 
 
 
 
45
  }
46
  }
 
 
 
 
47
  if (!empty($page)) {
 
 
48
  wp_update_post(array(
49
  'ID' => $page->ID,
50
  'post_status' => $status
51
  ));
52
  }
53
- if ($enabled) {
54
- Helper::createUserRequestDataTables();
55
- }
56
  }
57
 
58
  public function showNoticesRequestUserData() {
59
  $enabled = Helper::isEnabled('enable_access_request', 'settings');
60
  if ($enabled) {
61
- global $wpdb;
62
- $accessRequest = $wpdb->query("SHOW TABLES LIKE '" . AccessRequest::getDatabaseTableName() . "'");
63
- $deleteRequest = $wpdb->query("SHOW TABLES LIKE '" . DeleteRequest::getDatabaseTableName() . "'");
64
- if ($accessRequest !== 1 || $deleteRequest !== 1) {
65
  $pluginData = Helper::getPluginData();
66
  printf(
67
  '<div class="%s"><p><strong>%s:</strong> %s %s</p></div>',
@@ -71,7 +76,7 @@ class Action {
71
  sprintf(
72
  '<a class="button" href="%s">%s</a>',
73
  add_query_arg(
74
- array('action' => 'create_request_tables'),
75
  Helper::getPluginAdminUrl()
76
  ),
77
  __('Retry', WP_GDPR_C_SLUG)
27
  }
28
 
29
  public function processEnableAccessRequest() {
 
30
  $enabled = Helper::isEnabled('enable_access_request', 'settings');
31
+ if ($enabled) {
32
+ $accessRequest = AccessRequest::databaseTableExists();
33
+ $deleteRequest = DeleteRequest::databaseTableExists();
34
+ if (!$accessRequest || !$deleteRequest) {
35
+ Helper::createUserRequestDataTables();
36
+ $result = wp_insert_post(array(
37
+ 'post_type' => 'page',
38
+ 'post_status' => 'private',
39
+ 'post_title' => __('Data Access Request', WP_GDPR_C_SLUG),
40
+ 'post_content' => '[wpgdprc_access_request_form]',
41
+ 'meta_input' => array(
42
+ '_wpgdprc_access_request' => 1,
43
+ ),
44
+ ), true);
45
+ if (!is_wp_error($result)) {
46
+ update_option(WP_GDPR_C_PREFIX . '_settings_access_request_page', $result);
47
+ }
48
  }
49
  }
50
+ }
51
+
52
+ public function processToggleAccessRequest() {
53
+ $page = Helper::getAccessRequestPage();
54
  if (!empty($page)) {
55
+ $enabled = Helper::isEnabled('enable_access_request', 'settings');
56
+ $status = ($enabled) ? 'private' : 'draft';
57
  wp_update_post(array(
58
  'ID' => $page->ID,
59
  'post_status' => $status
60
  ));
61
  }
 
 
 
62
  }
63
 
64
  public function showNoticesRequestUserData() {
65
  $enabled = Helper::isEnabled('enable_access_request', 'settings');
66
  if ($enabled) {
67
+ $accessRequest = AccessRequest::databaseTableExists();
68
+ $deleteRequest = DeleteRequest::databaseTableExists();
69
+ if (!$accessRequest || !$deleteRequest) {
 
70
  $pluginData = Helper::getPluginData();
71
  printf(
72
  '<div class="%s"><p><strong>%s:</strong> %s %s</p></div>',
76
  sprintf(
77
  '<a class="button" href="%s">%s</a>',
78
  add_query_arg(
79
+ array('wpgdprc-action' => 'create_request_tables'),
80
  Helper::getPluginAdminUrl()
81
  ),
82
  __('Retry', WP_GDPR_C_SLUG)
Includes/Ajax.php CHANGED
@@ -119,19 +119,24 @@ class Ajax {
119
  $request,
120
  $siteName
121
  );
 
122
  $message = sprintf(
123
  __('You have requested to access your data on %s.', WP_GDPR_C_SLUG),
124
  sprintf('<a target="_blank" href="%s">%s</a>', $siteUrl, $siteName)
125
  ) . '<br /><br />';
126
  $message .= sprintf(
127
- __('Please visit this %s to view the data linked to the email address %s', WP_GDPR_C_SLUG),
128
  $deleteRequestPage,
129
  $emailAddress
130
  ) . '<br /><br />';
131
- $message .= __('This page is available for 24 hours and can only be reached from the same IP address you requested from.', WP_GDPR_C_SLUG) . '<br />';
132
  $message .= sprintf(
133
- __('If your link is invalid please fill in a new request: %s.', WP_GDPR_C_SLUG),
134
- sprintf('<a target="_blank" href="%s">%s</a>', get_permalink($page), get_the_title($page))
 
 
 
 
135
  );
136
  $message = apply_filters('wpgdprc_access_request_mail_content', $message, $request, $deleteRequestPage);
137
  $headers = array(
119
  $request,
120
  $siteName
121
  );
122
+
123
  $message = sprintf(
124
  __('You have requested to access your data on %s.', WP_GDPR_C_SLUG),
125
  sprintf('<a target="_blank" href="%s">%s</a>', $siteUrl, $siteName)
126
  ) . '<br /><br />';
127
  $message .= sprintf(
128
+ __('Please visit this %s to view the data linked to the email address %s.', WP_GDPR_C_SLUG),
129
  $deleteRequestPage,
130
  $emailAddress
131
  ) . '<br /><br />';
132
+ $message .= __('This page is available for 24 hours and can only be reached from the same device, IP address and browser session you requested from.', WP_GDPR_C_SLUG) . '<br /><br />';
133
  $message .= sprintf(
134
+ __('If your link is invalid you can fill in a new request after 24 hours: %s.', WP_GDPR_C_SLUG),
135
+ sprintf(
136
+ '<a target="_blank" href="%s">%s</a>',
137
+ get_permalink($page),
138
+ get_the_title($page)
139
+ )
140
  );
141
  $message = apply_filters('wpgdprc_access_request_mail_content', $message, $request, $deleteRequestPage);
142
  $headers = array(
Includes/Data.php CHANGED
@@ -75,7 +75,7 @@ class Data {
75
  );
76
  break;
77
  }
78
- $output[] = '<input type="checkbox" class="wpgdprc-select-all" />';
79
  return $output;
80
  }
81
 
@@ -120,7 +120,8 @@ class Data {
120
  /** @var WooCommerceOrder $woocommerceOrder */
121
  foreach ($data as $woocommerceOrder) {
122
  $request = DeleteRequest::getInstance()->getByTypeAndDataIdAndAccessRequestId($type, $woocommerceOrder->getOrderId(), $requestId);
123
- $address = (!empty($woocommerceOrder->getBillingAddressTwo())) ? sprintf('%s,<br />%s', $woocommerceOrder->getBillingAddressOne(), $woocommerceOrder->getBillingAddressTwo()) : $woocommerceOrder->getBillingAddressOne();
 
124
  $output[$woocommerceOrder->getOrderId()] = array(
125
  sprintf('#%d', $woocommerceOrder->getOrderId()),
126
  $woocommerceOrder->getBillingEmailAddress(),
@@ -155,8 +156,9 @@ class Data {
155
  $output .= '<table class="wpgdprc-table">';
156
  $output .= '<thead>';
157
  $output .= '<tr>';
158
- foreach (self::getOutputColumns($type) as $column) {
159
- $output .= sprintf('<th scope="col">%s</th>', $column);
 
160
  }
161
  $output .= '</tr>';
162
  $output .= '</thead>';
75
  );
76
  break;
77
  }
78
+ $output['checkbox'] = '<input type="checkbox" class="wpgdprc-select-all" />';
79
  return $output;
80
  }
81
 
120
  /** @var WooCommerceOrder $woocommerceOrder */
121
  foreach ($data as $woocommerceOrder) {
122
  $request = DeleteRequest::getInstance()->getByTypeAndDataIdAndAccessRequestId($type, $woocommerceOrder->getOrderId(), $requestId);
123
+ $billingAddressTwo = $woocommerceOrder->getBillingAddressTwo();
124
+ $address = (!empty($billingAddressTwo)) ? sprintf('%s,<br />%s', $woocommerceOrder->getBillingAddressOne(), $billingAddressTwo) : $woocommerceOrder->getBillingAddressOne();
125
  $output[$woocommerceOrder->getOrderId()] = array(
126
  sprintf('#%d', $woocommerceOrder->getOrderId()),
127
  $woocommerceOrder->getBillingEmailAddress(),
156
  $output .= '<table class="wpgdprc-table">';
157
  $output .= '<thead>';
158
  $output .= '<tr>';
159
+ foreach (self::getOutputColumns($type) as $key => $column) {
160
+ $class = (is_string($key)) ? $key : sanitize_title($column);
161
+ $output .= sprintf('<th class="wpgdprc-table__head wpgdprc-table__head--%s" scope="col">%s</th>', $class, $column);
162
  }
163
  $output .= '</tr>';
164
  $output .= '</thead>';
Includes/DeleteRequest.php CHANGED
@@ -366,6 +366,15 @@ class DeleteRequest {
366
  $this->dateCreated = $dateCreated;
367
  }
368
 
 
 
 
 
 
 
 
 
 
369
  /**
370
  * @return string
371
  */
366
  $this->dateCreated = $dateCreated;
367
  }
368
 
369
+ /**
370
+ * @return bool
371
+ */
372
+ public static function databaseTableExists() {
373
+ global $wpdb;
374
+ $result = $wpdb->query("SHOW TABLES LIKE '" . self::getDatabaseTableName() . "'");
375
+ return ($result === 1);
376
+ }
377
+
378
  /**
379
  * @return string
380
  */
Includes/Filter.php CHANGED
@@ -10,17 +10,6 @@ class Filter {
10
  /** @var null */
11
  private static $instance = null;
12
 
13
- public function processEnableAccessRequest($value) {
14
- $enabled = Helper::isEnabled('enable_access_request', 'settings');
15
- if (empty($value) && $enabled) {
16
- $page = Helper::getAccessRequestPage();
17
- if (!empty($page)) {
18
- $value = $page->ID;
19
- }
20
- }
21
- return $value;
22
- }
23
-
24
  /**
25
  * @return null|Filter
26
  */
10
  /** @var null */
11
  private static $instance = null;
12
 
 
 
 
 
 
 
 
 
 
 
 
13
  /**
14
  * @return null|Filter
15
  */
Includes/Helper.php CHANGED
@@ -29,6 +29,21 @@ class Helper {
29
  ));
30
  }
31
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
  /**
33
  * @param string $plugin
34
  * @return mixed
@@ -173,7 +188,7 @@ class Helper {
173
  * @return bool
174
  */
175
  public static function isEnabled($option = '', $type = 'integrations') {
176
- return filter_var(get_option(WP_GDPR_C_PREFIX . '_' . $type . '_' . $option), FILTER_VALIDATE_BOOLEAN);
177
  }
178
 
179
  /**
@@ -429,7 +444,7 @@ class Helper {
429
  global $wpdb;
430
  require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
431
  $charsetCollate = $wpdb->get_charset_collate();
432
- $sql = "CREATE TABLE IF NOT EXISTS `" . AccessRequest::getDatabaseTableName() . "` (
433
  `ID` bigint(20) NOT NULL AUTO_INCREMENT,
434
  `site_id` bigint(20) NOT NULL,
435
  `email_address` varchar(100) NOT NULL,
@@ -438,9 +453,9 @@ class Helper {
438
  `expired` tinyint(1) DEFAULT '0' NOT NULL,
439
  `date_created` datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
440
  PRIMARY KEY (`ID`)
441
- ) $charsetCollate;";
442
- dbDelta($sql);
443
- $sql = "CREATE TABLE IF NOT EXISTS `" . DeleteRequest::getDatabaseTableName() . "` (
444
  `ID` bigint(20) NOT NULL AUTO_INCREMENT,
445
  `site_id` bigint(20) NOT NULL,
446
  `access_request_id` bigint(20) NOT NULL,
@@ -451,8 +466,8 @@ class Helper {
451
  `processed` tinyint(1) DEFAULT '0' NOT NULL,
452
  `date_created` datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
453
  PRIMARY KEY (`ID`)
454
- ) $charsetCollate;";
455
- dbDelta($sql);
456
  }
457
 
458
  /**
29
  ));
30
  }
31
 
32
+ /**
33
+ * @param string $action
34
+ */
35
+ public static function doAction($action = '') {
36
+ if (!empty($action)) {
37
+ switch ($action) {
38
+ case 'create_request_tables' :
39
+ Helper::createUserRequestDataTables();
40
+ wp_safe_redirect(Helper::getPluginAdminUrl());
41
+ die();
42
+ break;
43
+ }
44
+ }
45
+ }
46
+
47
  /**
48
  * @param string $plugin
49
  * @return mixed
188
  * @return bool
189
  */
190
  public static function isEnabled($option = '', $type = 'integrations') {
191
+ return filter_var(get_option(WP_GDPR_C_PREFIX . '_' . $type . '_' . $option, false), FILTER_VALIDATE_BOOLEAN);
192
  }
193
 
194
  /**
444
  global $wpdb;
445
  require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
446
  $charsetCollate = $wpdb->get_charset_collate();
447
+ $query = "CREATE TABLE IF NOT EXISTS `" . AccessRequest::getDatabaseTableName() . "` (
448
  `ID` bigint(20) NOT NULL AUTO_INCREMENT,
449
  `site_id` bigint(20) NOT NULL,
450
  `email_address` varchar(100) NOT NULL,
453
  `expired` tinyint(1) DEFAULT '0' NOT NULL,
454
  `date_created` datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
455
  PRIMARY KEY (`ID`)
456
+ ) $charsetCollate;";
457
+ dbDelta($query);
458
+ $query = "CREATE TABLE IF NOT EXISTS `" . DeleteRequest::getDatabaseTableName() . "` (
459
  `ID` bigint(20) NOT NULL AUTO_INCREMENT,
460
  `site_id` bigint(20) NOT NULL,
461
  `access_request_id` bigint(20) NOT NULL,
466
  `processed` tinyint(1) DEFAULT '0' NOT NULL,
467
  `date_created` datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,
468
  PRIMARY KEY (`ID`)
469
+ ) $charsetCollate;";
470
+ dbDelta($query);
471
  }
472
 
473
  /**
Includes/Integration.php CHANGED
@@ -265,7 +265,7 @@ class Integration {
265
  $output = get_option(WP_GDPR_C_PREFIX . '_settings_delete_request_form_explanation_text');
266
  if (empty($output)) {
267
  $output = sprintf(
268
- __('Below we show you all of the data stored by %s on %s Select the data you wish the site owner to anonymise so it cannot be linked to your email address any longer. It is the site\'s owner responsibility to act upon your request. When your data is anonymised you will receive an email confirmation.', WP_GDPR_C_SLUG),
269
  get_option('blogname'),
270
  get_option('siteurl')
271
  );
265
  $output = get_option(WP_GDPR_C_PREFIX . '_settings_delete_request_form_explanation_text');
266
  if (empty($output)) {
267
  $output = sprintf(
268
+ __('Below we show you all of the data stored by %s on %s. Select the data you wish the site owner to anonymise so it cannot be linked to your email address any longer. It is the site\'s owner responsibility to act upon your request. When your data is anonymised you will receive an email confirmation.', WP_GDPR_C_SLUG),
269
  get_option('blogname'),
270
  get_option('siteurl')
271
  );
Includes/Page.php CHANGED
@@ -37,16 +37,6 @@ class Page {
37
  }
38
 
39
  public function generatePage() {
40
- $action = (isset($_REQUEST['action'])) ? esc_html($_REQUEST['action']) : false;
41
- if (!empty($action)) {
42
- switch ($action) {
43
- case 'create_request_tables' :
44
- Helper::createUserRequestDataTables();
45
- wp_redirect(Helper::getPluginAdminUrl());
46
- die();
47
- break;
48
- }
49
- }
50
  $type = (isset($_REQUEST['type'])) ? esc_html($_REQUEST['type']) : false;
51
  $pluginData = Helper::getPluginData();
52
  $daysLeftToComply = Helper::getDaysLeftToComply();
@@ -139,9 +129,17 @@ class Page {
139
  <div class="wpgdprc-sidebar-block">
140
  <h3><?php _e('Rate us', WP_GDPR_C_SLUG); ?></h3>
141
  <div class="wpgdprc-stars"></div>
142
- <p><?php echo sprintf(__('Did %s help you out? Please leave a positive 5-star review.', WP_GDPR_C_SLUG), $pluginData['Name']); ?></p>
143
  <a target="_blank" href="//wordpress.org/support/plugin/wp-gdpr-compliance/reviews/#new-post" class="button button-primary" rel="noopener noreferrer"><?php _e('Write a review', WP_GDPR_C_SLUG); ?></a>
144
  </div>
 
 
 
 
 
 
 
 
145
  </div>
146
 
147
  <div class="wpgdprc-background"><?php include(WP_GDPR_C_DIR_SVG . '/inline-waves.svg.php'); ?></div>
@@ -311,7 +309,7 @@ class Page {
311
  <div class="wpgdprc-setting">
312
  <label for="<?php echo $optionNameEnableAccessRequest; ?>"><?php _e('Activate', WP_GDPR_C_SLUG); ?></label>
313
  <div class="wpgdprc-options">
314
- <label><input type="checkbox" name="<?php echo $optionNameEnableAccessRequest; ?>" id="<?php echo $optionNameEnableAccessRequest; ?>" value="1" tabindex="1" data-type="save_setting" data-option="<?php echo $optionNameEnableAccessRequest; ?>" <?php checked(true, $enableAccessRequest); ?> /> <?php _e('Activate page', WP_GDPR_C_SLUG); ?></label>
315
  <div class="wpgdprc-information">
316
  <?php
317
  printf(
@@ -485,7 +483,7 @@ class Page {
485
  <th scope="col" width="22%"><?php _e('Email Address', WP_GDPR_C_SLUG); ?></th>
486
  <th scope="col" width="18%"><?php _e('IP Address', WP_GDPR_C_SLUG); ?></th>
487
  <th scope="col" width="22%"><?php _e('Date', WP_GDPR_C_SLUG); ?></th>
488
- <th scope="col" width="8%"><?php _e('Expired', WP_GDPR_C_SLUG); ?></th>
489
  </tr>
490
  </thead>
491
  <tbody>
@@ -494,7 +492,7 @@ class Page {
494
  foreach ($requests as $request) :
495
  $amountOfDeleteRequests = DeleteRequest::getInstance()->getAmountByAccessRequestId($request->getId());
496
  ?>
497
- <tr>
498
  <td><?php printf('#%d', $request->getId()); ?></td>
499
  <td>
500
  <?php printf('%d', $amountOfDeleteRequests); ?>
@@ -517,7 +515,7 @@ class Page {
517
  <td><?php echo $request->getEmailAddress(); ?></td>
518
  <td><?php echo $request->getIpAddress(); ?></td>
519
  <td><?php echo $request->getDateCreated(); ?></td>
520
- <td><span class="dashicons dashicons-<?php echo ($request->getExpired()) ? 'yes' : 'no'; ?>"></span></td>
521
  </tr>
522
  <?php
523
  endforeach;
37
  }
38
 
39
  public function generatePage() {
 
 
 
 
 
 
 
 
 
 
40
  $type = (isset($_REQUEST['type'])) ? esc_html($_REQUEST['type']) : false;
41
  $pluginData = Helper::getPluginData();
42
  $daysLeftToComply = Helper::getDaysLeftToComply();
129
  <div class="wpgdprc-sidebar-block">
130
  <h3><?php _e('Rate us', WP_GDPR_C_SLUG); ?></h3>
131
  <div class="wpgdprc-stars"></div>
132
+ <p><?php echo sprintf(__('Did %s help you out? Please leave a 5-star review. Thank you!', WP_GDPR_C_SLUG), $pluginData['Name']); ?></p>
133
  <a target="_blank" href="//wordpress.org/support/plugin/wp-gdpr-compliance/reviews/#new-post" class="button button-primary" rel="noopener noreferrer"><?php _e('Write a review', WP_GDPR_C_SLUG); ?></a>
134
  </div>
135
+
136
+ <div class="wpgdprc-sidebar-block">
137
+ <h3><?php _e('Support', WP_GDPR_C_SLUG); ?></h3>
138
+ <p><?php echo sprintf(
139
+ __('Need a helping hand? Please ask for help on the %s. Be sure to mention your WordPress version and give as much additional information as possible.', WP_GDPR_C_SLUG),
140
+ sprintf('<a target="_blank" href="//wordpress.org/support/plugin/wp-gdpr-compliance#new-post" rel="noopener noreferrer">%s</a>', __('Support forum', WP_GDPR_C_SLUG))
141
+ ); ?></p>
142
+ </div>
143
  </div>
144
 
145
  <div class="wpgdprc-background"><?php include(WP_GDPR_C_DIR_SVG . '/inline-waves.svg.php'); ?></div>
309
  <div class="wpgdprc-setting">
310
  <label for="<?php echo $optionNameEnableAccessRequest; ?>"><?php _e('Activate', WP_GDPR_C_SLUG); ?></label>
311
  <div class="wpgdprc-options">
312
+ <label><input type="checkbox" name="<?php echo $optionNameEnableAccessRequest; ?>" id="<?php echo $optionNameEnableAccessRequest; ?>" value="1" tabindex="1" <?php checked(true, $enableAccessRequest); ?> /> <?php _e('Activate page', WP_GDPR_C_SLUG); ?></label>
313
  <div class="wpgdprc-information">
314
  <?php
315
  printf(
483
  <th scope="col" width="22%"><?php _e('Email Address', WP_GDPR_C_SLUG); ?></th>
484
  <th scope="col" width="18%"><?php _e('IP Address', WP_GDPR_C_SLUG); ?></th>
485
  <th scope="col" width="22%"><?php _e('Date', WP_GDPR_C_SLUG); ?></th>
486
+ <th scope="col" width="8%"><?php _e('Status', WP_GDPR_C_SLUG); ?></th>
487
  </tr>
488
  </thead>
489
  <tbody>
492
  foreach ($requests as $request) :
493
  $amountOfDeleteRequests = DeleteRequest::getInstance()->getAmountByAccessRequestId($request->getId());
494
  ?>
495
+ <tr class="wpgdprc-table__row <?php echo ($request->getExpired()) ? 'wpgdprc-table__row--expired' : ''; ?>">
496
  <td><?php printf('#%d', $request->getId()); ?></td>
497
  <td>
498
  <?php printf('%d', $amountOfDeleteRequests); ?>
515
  <td><?php echo $request->getEmailAddress(); ?></td>
516
  <td><?php echo $request->getIpAddress(); ?></td>
517
  <td><?php echo $request->getDateCreated(); ?></td>
518
+ <td><?php echo ($request->getExpired()) ? __('Expired', WP_GDPR_C_SLUG) : __('Active', WP_GDPR_C_SLUG); ?></td>
519
  </tr>
520
  <?php
521
  endforeach;
Includes/Shortcode.php CHANGED
@@ -67,13 +67,25 @@ class Shortcode {
67
  );
68
  }
69
  } else {
70
- wp_die(
71
- '<p>' . sprintf(
 
 
72
  __('<strong>ERROR</strong>: %s', WP_GDPR_C_SLUG),
73
- __('What are you trying to do?', WP_GDPR_C_SLUG)
74
- ) . '</p>'
 
 
 
 
 
 
 
 
 
 
 
75
  );
76
- exit;
77
  }
78
  } else {
79
  $output .= __('This request is expired or doesn\'t exist.', WP_GDPR_C_SLUG);
67
  );
68
  }
69
  } else {
70
+ $accessRequestPage = Helper::getAccessRequestPage();
71
+ $output .= sprintf(
72
+ '<div class="wpgdprc-feedback wpgdprc-feedback--error"><p>%s</p></div>',
73
+ sprintf(
74
  __('<strong>ERROR</strong>: %s', WP_GDPR_C_SLUG),
75
+ sprintf(
76
+ '%s<br /><br />%s',
77
+ __('You are only able to view your data when visiting this page on the same device with the same IP and in the same browser session as when you performed your request. This is an extra security measure to keep your data safe.', WP_GDPR_C_SLUG),
78
+ sprintf(
79
+ __('If needed you can put in a new request after 24 hours here: %s.', WP_GDPR_C_SLUG),
80
+ sprintf(
81
+ '<a target="_blank" href="%s">%s</a>',
82
+ get_permalink($accessRequestPage),
83
+ get_the_title($accessRequestPage)
84
+ )
85
+ )
86
+ )
87
+ )
88
  );
 
89
  }
90
  } else {
91
  $output .= __('This request is expired or doesn\'t exist.', WP_GDPR_C_SLUG);
assets/css/admin.css CHANGED
@@ -226,6 +226,10 @@ table.wpgdprc-table tr:nth-child(even) {
226
  background-color: #F1F1F1;
227
  }
228
 
 
 
 
 
229
  .wpgdprc-background {
230
  position: fixed;
231
  right: 0;
226
  background-color: #F1F1F1;
227
  }
228
 
229
+ table.wpgdprc-table tr.wpgdprc-table__row--expired {
230
+ opacity: .5;
231
+ }
232
+
233
  .wpgdprc-background {
234
  position: fixed;
235
  right: 0;
assets/js/admin.js CHANGED
@@ -143,8 +143,10 @@
143
  return;
144
  }
145
  $checkbox.on('change', function (e) {
146
- e.preventDefault();
147
- _doProcessAction($(this));
 
 
148
  });
149
  },
150
  initSelectAll = function () {
143
  return;
144
  }
145
  $checkbox.on('change', function (e) {
146
+ if ($(this).data('type')) {
147
+ e.preventDefault();
148
+ _doProcessAction($(this));
149
+ }
150
  });
151
  },
152
  initSelectAll = function () {
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-05-14 14:17+0200\n"
6
  "Last-Translator: \n"
7
  "Language-Team: Van Ons <info@van-ons.nl>\n"
8
  "MIME-Version: 1.0\n"
@@ -17,19 +17,19 @@ msgstr ""
17
  "X-Poedit-Basepath: ..\n"
18
  "X-Poedit-SearchPath-0: .\n"
19
 
20
- #: Includes/Action.php:37
21
  msgid "Data Access Request"
22
  msgstr ""
23
 
24
- #: Includes/Action.php:70
25
  msgid "Couldn't create the required database tables."
26
  msgstr ""
27
 
28
- #: Includes/Action.php:77
29
  msgid "Retry"
30
  msgstr ""
31
 
32
- #: Includes/Ajax.php:27 Includes/Ajax.php:262
33
  msgid "Missing data."
34
  msgstr ""
35
 
@@ -62,137 +62,138 @@ msgstr ""
62
  msgid "%s - Your data request"
63
  msgstr ""
64
 
65
- #: Includes/Ajax.php:123
66
  #, php-format
67
  msgid "You have requested to access your data on %s."
68
  msgstr ""
69
 
70
- #: Includes/Ajax.php:127
71
  #, php-format
72
- msgid "Please visit this %s to view the data linked to the email address %s"
73
  msgstr ""
74
 
75
- #: Includes/Ajax.php:131
76
  msgid ""
77
- "This page is available for 24 hours and can only be reached from the same IP "
78
- "address you requested from."
79
  msgstr ""
80
 
81
- #: Includes/Ajax.php:133
82
  #, php-format
83
- msgid "If your link is invalid please fill in a new request: %s."
 
84
  msgstr ""
85
 
86
- #: Includes/Ajax.php:143
87
  msgid "Success. You will receive an email with your data shortly."
88
  msgstr ""
89
 
90
- #: Includes/Ajax.php:147
91
  msgid "Something went wrong while saving the request. Please try again."
92
  msgstr ""
93
 
94
- #: Includes/Ajax.php:150
95
  msgid ""
96
  "You have already requested your data. Please check your mailbox. After 24 "
97
  "hours you can put in a new request."
98
  msgstr ""
99
 
100
- #: Includes/Ajax.php:163
101
  msgid "Missing session."
102
  msgstr ""
103
 
104
- #: Includes/Ajax.php:167
105
  msgid "Missing or invalid type."
106
  msgstr ""
107
 
108
- #: Includes/Ajax.php:171
109
  msgid "No value selected."
110
  msgstr ""
111
 
112
- #: Includes/Ajax.php:192
113
  msgid "Something went wrong while saving this request. Please try again."
114
  msgstr ""
115
 
116
- #: Includes/Ajax.php:203 Includes/Page.php:74
117
  msgid "Requests"
118
  msgstr ""
119
 
120
- #: Includes/Ajax.php:207
121
  #, php-format
122
  msgid "%s - New anonymise request"
123
  msgstr ""
124
 
125
- #: Includes/Ajax.php:212
126
  #, php-format
127
  msgid "You have received a new anonymise request on %s."
128
  msgstr ""
129
 
130
- #: Includes/Ajax.php:216
131
  #, php-format
132
  msgid "You can manage this request in the admin panel: %s"
133
  msgstr ""
134
 
135
- #: Includes/Ajax.php:227
136
  msgid "Session doesn't match."
137
  msgstr ""
138
 
139
- #: Includes/Ajax.php:230
140
  msgid "No session found."
141
  msgstr ""
142
 
143
- #: Includes/Ajax.php:252
144
  msgid "The access request functionality is not enabled."
145
  msgstr ""
146
 
147
- #: Includes/Ajax.php:266
148
  msgid "This request doesn't exist."
149
  msgstr ""
150
 
151
- #: Includes/Ajax.php:286
152
  msgid "This user doesn't exist."
153
  msgstr ""
154
 
155
- #: Includes/Ajax.php:292
156
  msgid "You're not allowed to edit users."
157
  msgstr ""
158
 
159
- #: Includes/Ajax.php:305
160
  msgid "This comment doesn't exist."
161
  msgstr ""
162
 
163
- #: Includes/Ajax.php:311
164
  msgid "You're not allowed to edit comments."
165
  msgstr ""
166
 
167
- #: Includes/Ajax.php:336
168
  msgid "You're not allowed to edit WooCommerce orders."
169
  msgstr ""
170
 
171
- #: Includes/Ajax.php:348
172
  #, php-format
173
  msgid "%s - Your request"
174
  msgstr ""
175
 
176
- #: Includes/Ajax.php:353
177
  #, php-format
178
  msgid ""
179
  "We have successfully processed your request and your data has been "
180
  "anonymised on %s."
181
  msgstr ""
182
 
183
- #: Includes/Ajax.php:356
184
  msgid "The following has been processed:"
185
  msgstr ""
186
 
187
- #: Includes/Ajax.php:365
188
  msgid "Successfully sent an confirmation mail to the user."
189
  msgstr ""
190
 
191
- #: Includes/Ajax.php:369
192
  msgid "This request has already been processed."
193
  msgstr ""
194
 
195
- #: Includes/Data.php:27 Includes/Extensions/WP.php:34 Includes/Shortcode.php:72
196
  #, php-format
197
  msgid "<strong>ERROR</strong>: %s"
198
  msgstr ""
@@ -210,7 +211,7 @@ msgid "Display Name"
210
  msgstr ""
211
 
212
  #: Includes/Data.php:54 Includes/Data.php:63 Includes/Data.php:70
213
- #: Includes/Page.php:485
214
  msgid "Email Address"
215
  msgstr ""
216
 
@@ -230,7 +231,7 @@ msgstr ""
230
  msgid "Content"
231
  msgstr ""
232
 
233
- #: Includes/Data.php:64 Includes/Page.php:401 Includes/Page.php:486
234
  msgid "IP Address"
235
  msgstr ""
236
 
@@ -254,7 +255,7 @@ msgstr ""
254
  msgid "City"
255
  msgstr ""
256
 
257
- #: Includes/Data.php:176
258
  #, php-format
259
  msgid "Anonymise selected %s(s)"
260
  msgstr ""
@@ -302,30 +303,30 @@ msgstr ""
302
  msgid "GDPR Accepted On"
303
  msgstr ""
304
 
305
- #: Includes/Helper.php:84
306
  #, php-format
307
  msgid "You can use: %s"
308
  msgstr ""
309
 
310
- #: Includes/Helper.php:90 Includes/Helper.php:111 Includes/Page.php:319
311
  msgid "Note"
312
  msgstr ""
313
 
314
- #: Includes/Helper.php:91
315
  msgid "No HTML allowed due to plugin limitations."
316
  msgstr ""
317
 
318
- #: Includes/Helper.php:112
319
  msgid ""
320
  "Please disable the custom comments form in Jetpack to make your WordPress "
321
  "Comments GDPR compliant."
322
  msgstr ""
323
 
324
- #: Includes/Helper.php:139
325
  msgid "Do you have a contact form?"
326
  msgstr ""
327
 
328
- #: Includes/Helper.php:140
329
  msgid ""
330
  "Make sure you add a checkbox specifically asking the user of the form if "
331
  "they consent to you storing and using their personal information to get back "
@@ -333,11 +334,11 @@ msgid ""
333
  "if you will send or share the data with any 3rd-parties and which."
334
  msgstr ""
335
 
336
- #: Includes/Helper.php:143
337
  msgid "Can visitors comment anywhere on your website?"
338
  msgstr ""
339
 
340
- #: Includes/Helper.php:144
341
  msgid ""
342
  "Make sure you add a checkbox specifically asking the user of the comment "
343
  "section if they consent to storing their message attached to the e-mail "
@@ -346,11 +347,11 @@ msgid ""
346
  "which."
347
  msgstr ""
348
 
349
- #: Includes/Helper.php:147
350
  msgid "Is there an order form on your website or webshop present?"
351
  msgstr ""
352
 
353
- #: Includes/Helper.php:148
354
  msgid ""
355
  "Make sure you add a checkbox specifically asking the user of the form if "
356
  "they consent to you storing and using their personal information to ship the "
@@ -360,11 +361,11 @@ msgid ""
360
  "which."
361
  msgstr ""
362
 
363
- #: Includes/Helper.php:151
364
  msgid "Do you provide a forum or message board?"
365
  msgstr ""
366
 
367
- #: Includes/Helper.php:152
368
  msgid ""
369
  "Make sure you add a checkbox specifically asking forum / board users if they "
370
  "consent to you storing and using their personal information and messages. "
@@ -372,11 +373,11 @@ msgid ""
372
  "share the data with any 3rd-parties and which."
373
  msgstr ""
374
 
375
- #: Includes/Helper.php:155
376
  msgid "Can visitors chat with your company directly?"
377
  msgstr ""
378
 
379
- #: Includes/Helper.php:156
380
  msgid ""
381
  "Make sure you add a checkbox specifically asking chat users if they consent "
382
  "to you storing and using their personal information and messages. The "
@@ -395,7 +396,7 @@ msgid "Activate for this form:"
395
  msgstr ""
396
 
397
  #: Includes/Integration.php:115 Includes/Integration.php:156
398
- #: Includes/Integration.php:183 Includes/Page.php:349
399
  msgid "Checkbox text"
400
  msgstr ""
401
 
@@ -418,20 +419,20 @@ msgstr ""
418
  msgid "Please accept the privacy checkbox."
419
  msgstr ""
420
 
421
- #: Includes/Integration.php:243 Includes/Page.php:285 Includes/Page.php:289
422
  msgid "Privacy Policy"
423
  msgstr ""
424
 
425
  #: Includes/Integration.php:268
426
  #, php-format
427
  msgid ""
428
- "Below we show you all of the data stored by %s on %s Select the data you "
429
  "wish the site owner to anonymise so it cannot be linked to your email "
430
  "address any longer. It is the site's owner responsibility to act upon your "
431
  "request. When your data is anonymised you will receive an email confirmation."
432
  msgstr ""
433
 
434
- #: Includes/Integration.php:306 Includes/Page.php:389
435
  msgid "WordPress Comments"
436
  msgstr ""
437
 
@@ -453,7 +454,7 @@ msgstr ""
453
  msgid "Gravity Forms"
454
  msgstr ""
455
 
456
- #: Includes/Integration.php:335 Includes/Page.php:390
457
  msgid "WooCommerce"
458
  msgstr ""
459
 
@@ -463,109 +464,109 @@ msgid ""
463
  "page."
464
  msgstr ""
465
 
466
- #: Includes/Page.php:64
467
  msgid "Integration"
468
  msgstr ""
469
 
470
- #: Includes/Page.php:84
471
  msgid "Checklist"
472
  msgstr ""
473
 
474
- #: Includes/Page.php:85 wp-gdpr-compliance.php:108
475
  msgid "Settings"
476
  msgstr ""
477
 
478
- #: Includes/Page.php:113
479
  msgid ""
480
  "This plugin assists website and webshop owners to comply with European "
481
  "privacy regulations known as GDPR. By May 25th, 2018 your site or shop has "
482
  "to comply."
483
  msgstr ""
484
 
485
- #: Includes/Page.php:116
486
  #, php-format
487
  msgid ""
488
  "%s currently supports %s. Please visit %s for frequently asked questions and "
489
  "our development roadmap."
490
  msgstr ""
491
 
492
- #: Includes/Page.php:124
493
  msgid ""
494
  "Disclaimer: The creators of this plugin do not have a legal background "
495
  "please contact a law firm for rock solid legal advice."
496
  msgstr ""
497
 
498
- #: Includes/Page.php:133
499
  #, php-format
500
  msgid "You have %s left to comply with GDPR."
501
  msgstr ""
502
 
503
- #: Includes/Page.php:133
504
  #, php-format
505
  msgid "%s day"
506
  msgstr ""
507
 
508
- #: Includes/Page.php:140
509
  msgid "Rate us"
510
  msgstr ""
511
 
512
- #: Includes/Page.php:142
513
  #, php-format
514
- msgid "Did %s help you out? Please leave a positive 5-star review."
515
  msgstr ""
516
 
517
- #: Includes/Page.php:143
518
  msgid "Write a review"
519
  msgstr ""
520
 
521
- #: Includes/Page.php:151
522
  msgid "Yes"
523
  msgstr ""
524
 
525
- #: Includes/Page.php:152
526
  msgid "No"
527
  msgstr ""
528
 
529
- #: Includes/Page.php:179
530
  msgid "Enable:"
531
  msgstr ""
532
 
533
- #: Includes/Page.php:205
534
  #, php-format
535
  msgid "This plugin is outdated. %s supports version %s and up."
536
  msgstr ""
537
 
538
- #: Includes/Page.php:214
539
  msgid "Couldn't find any supported plugins installed."
540
  msgstr ""
541
 
542
- #: Includes/Page.php:215
543
  msgid "The following plugins are supported as of now:"
544
  msgstr ""
545
 
546
- #: Includes/Page.php:221
547
  msgid "More plugins will be added in the future."
548
  msgstr ""
549
 
550
- #: Includes/Page.php:233
551
  msgid ""
552
  "Below we ask you what private data you currently collect and provide you "
553
  "with tips to comply."
554
  msgstr ""
555
 
556
- #: Includes/Page.php:294 Includes/Page.php:336
557
  msgid "Select an option"
558
  msgstr ""
559
 
560
- #: Includes/Page.php:302
561
  msgid "Link text"
562
  msgstr ""
563
 
564
- #: Includes/Page.php:307
565
  msgid "Request User Data"
566
  msgstr ""
567
 
568
- #: Includes/Page.php:309
569
  msgid ""
570
  "Allow your site's visitors to request their data stored in the WordPress "
571
  "database (comments, WooCommerce orders etc.). Data found is send to their "
@@ -573,96 +574,104 @@ msgid ""
573
  "data anonymised."
574
  msgstr ""
575
 
576
- #: Includes/Page.php:312
577
  msgid "Activate"
578
  msgstr ""
579
 
580
- #: Includes/Page.php:314
581
  msgid "Activate page"
582
  msgstr ""
583
 
584
- #: Includes/Page.php:321
585
  #, php-format
586
  msgid ""
587
  "Enabling this will create one private page containing the necessary "
588
  "shortcode: %s. You can determine when and how to publish this page yourself."
589
  msgstr ""
590
 
591
- #: Includes/Page.php:331
592
  msgid "Page"
593
  msgstr ""
594
 
595
- #: Includes/Page.php:343
596
  msgid "Click here to edit this page"
597
  msgstr ""
598
 
599
- #: Includes/Page.php:355
600
  msgid "Anonymise request explanation"
601
  msgstr ""
602
 
603
- #: Includes/Page.php:386
604
  msgid ""
605
  "Anonymise a request by ticking the checkbox and clicking on the green "
606
  "anonymise button below."
607
  msgstr ""
608
 
609
- #: Includes/Page.php:388
610
  msgid "WordPress Users"
611
  msgstr ""
612
 
613
- #: Includes/Page.php:399
614
  msgid "Request"
615
  msgstr ""
616
 
617
- #: Includes/Page.php:400
618
  msgid "Type"
619
  msgstr ""
620
 
621
- #: Includes/Page.php:402 Includes/Page.php:487
622
  msgid "Date"
623
  msgstr ""
624
 
625
- #: Includes/Page.php:403
626
  msgid "Processed"
627
  msgstr ""
628
 
629
- #: Includes/Page.php:404
630
  msgid "Action"
631
  msgstr ""
632
 
633
- #: Includes/Page.php:419
634
  msgid "View"
635
  msgstr ""
636
 
637
- #: Includes/Page.php:433
638
  msgid "Anonymise selected request(s)"
639
  msgstr ""
640
 
641
- #: Includes/Page.php:455 Includes/Page.php:546
642
  #, php-format
643
  msgid "%d of %d results found"
644
  msgstr ""
645
 
646
- #: Includes/Page.php:461 Includes/Page.php:552
647
  msgid "No requests found."
648
  msgstr ""
649
 
650
- #: Includes/Page.php:483
651
  msgid "ID"
652
  msgstr ""
653
 
654
- #: Includes/Page.php:484
655
  msgid "Requests to Process"
656
  msgstr ""
657
 
658
- #: Includes/Page.php:488
659
- msgid "Expired"
660
  msgstr ""
661
 
662
- #: Includes/Page.php:512
663
  msgid "Manage"
664
  msgstr ""
665
 
 
 
 
 
 
 
 
 
666
  #: Includes/Shortcode.php:33
667
  msgid "Users"
668
  msgstr ""
@@ -690,22 +699,31 @@ msgstr ""
690
  msgid "No WooCommerce orders found with email address %s."
691
  msgstr ""
692
 
693
- #: Includes/Shortcode.php:73
694
- msgid "What are you trying to do?"
 
 
 
 
695
  msgstr ""
696
 
697
  #: Includes/Shortcode.php:79
 
 
 
 
 
698
  msgid "This request is expired or doesn't exist."
699
  msgstr ""
700
 
701
- #: Includes/Shortcode.php:99
702
  msgid "Your Email Address"
703
  msgstr ""
704
 
705
- #: Includes/Shortcode.php:113
706
  msgid "Send"
707
  msgstr ""
708
 
709
- #: wp-gdpr-compliance.php:108
710
  msgid "View WP GDPR Compliance settings"
711
  msgstr ""
2
  msgid ""
3
  msgstr ""
4
  "Project-Id-Version: WP GDPR Compliance\n"
5
+ "POT-Creation-Date: 2018-05-16 17:26+0200\n"
6
  "Last-Translator: \n"
7
  "Language-Team: Van Ons <info@van-ons.nl>\n"
8
  "MIME-Version: 1.0\n"
17
  "X-Poedit-Basepath: ..\n"
18
  "X-Poedit-SearchPath-0: .\n"
19
 
20
+ #: Includes/Action.php:39
21
  msgid "Data Access Request"
22
  msgstr ""
23
 
24
+ #: Includes/Action.php:75
25
  msgid "Couldn't create the required database tables."
26
  msgstr ""
27
 
28
+ #: Includes/Action.php:82
29
  msgid "Retry"
30
  msgstr ""
31
 
32
+ #: Includes/Ajax.php:27 Includes/Ajax.php:267
33
  msgid "Missing data."
34
  msgstr ""
35
 
62
  msgid "%s - Your data request"
63
  msgstr ""
64
 
65
+ #: Includes/Ajax.php:124
66
  #, php-format
67
  msgid "You have requested to access your data on %s."
68
  msgstr ""
69
 
70
+ #: Includes/Ajax.php:128
71
  #, php-format
72
+ msgid "Please visit this %s to view the data linked to the email address %s."
73
  msgstr ""
74
 
75
+ #: Includes/Ajax.php:132
76
  msgid ""
77
+ "This page is available for 24 hours and can only be reached from the same "
78
+ "device, IP address and browser session you requested from."
79
  msgstr ""
80
 
81
+ #: Includes/Ajax.php:134
82
  #, php-format
83
+ msgid ""
84
+ "If your link is invalid you can fill in a new request after 24 hours: %s."
85
  msgstr ""
86
 
87
+ #: Includes/Ajax.php:148
88
  msgid "Success. You will receive an email with your data shortly."
89
  msgstr ""
90
 
91
+ #: Includes/Ajax.php:152
92
  msgid "Something went wrong while saving the request. Please try again."
93
  msgstr ""
94
 
95
+ #: Includes/Ajax.php:155
96
  msgid ""
97
  "You have already requested your data. Please check your mailbox. After 24 "
98
  "hours you can put in a new request."
99
  msgstr ""
100
 
101
+ #: Includes/Ajax.php:168
102
  msgid "Missing session."
103
  msgstr ""
104
 
105
+ #: Includes/Ajax.php:172
106
  msgid "Missing or invalid type."
107
  msgstr ""
108
 
109
+ #: Includes/Ajax.php:176
110
  msgid "No value selected."
111
  msgstr ""
112
 
113
+ #: Includes/Ajax.php:197
114
  msgid "Something went wrong while saving this request. Please try again."
115
  msgstr ""
116
 
117
+ #: Includes/Ajax.php:208 Includes/Page.php:64
118
  msgid "Requests"
119
  msgstr ""
120
 
121
+ #: Includes/Ajax.php:212
122
  #, php-format
123
  msgid "%s - New anonymise request"
124
  msgstr ""
125
 
126
+ #: Includes/Ajax.php:217
127
  #, php-format
128
  msgid "You have received a new anonymise request on %s."
129
  msgstr ""
130
 
131
+ #: Includes/Ajax.php:221
132
  #, php-format
133
  msgid "You can manage this request in the admin panel: %s"
134
  msgstr ""
135
 
136
+ #: Includes/Ajax.php:232
137
  msgid "Session doesn't match."
138
  msgstr ""
139
 
140
+ #: Includes/Ajax.php:235
141
  msgid "No session found."
142
  msgstr ""
143
 
144
+ #: Includes/Ajax.php:257
145
  msgid "The access request functionality is not enabled."
146
  msgstr ""
147
 
148
+ #: Includes/Ajax.php:271
149
  msgid "This request doesn't exist."
150
  msgstr ""
151
 
152
+ #: Includes/Ajax.php:291
153
  msgid "This user doesn't exist."
154
  msgstr ""
155
 
156
+ #: Includes/Ajax.php:297
157
  msgid "You're not allowed to edit users."
158
  msgstr ""
159
 
160
+ #: Includes/Ajax.php:310
161
  msgid "This comment doesn't exist."
162
  msgstr ""
163
 
164
+ #: Includes/Ajax.php:316
165
  msgid "You're not allowed to edit comments."
166
  msgstr ""
167
 
168
+ #: Includes/Ajax.php:341
169
  msgid "You're not allowed to edit WooCommerce orders."
170
  msgstr ""
171
 
172
+ #: Includes/Ajax.php:353
173
  #, php-format
174
  msgid "%s - Your request"
175
  msgstr ""
176
 
177
+ #: Includes/Ajax.php:358
178
  #, php-format
179
  msgid ""
180
  "We have successfully processed your request and your data has been "
181
  "anonymised on %s."
182
  msgstr ""
183
 
184
+ #: Includes/Ajax.php:361
185
  msgid "The following has been processed:"
186
  msgstr ""
187
 
188
+ #: Includes/Ajax.php:370
189
  msgid "Successfully sent an confirmation mail to the user."
190
  msgstr ""
191
 
192
+ #: Includes/Ajax.php:374
193
  msgid "This request has already been processed."
194
  msgstr ""
195
 
196
+ #: Includes/Data.php:27 Includes/Extensions/WP.php:34 Includes/Shortcode.php:74
197
  #, php-format
198
  msgid "<strong>ERROR</strong>: %s"
199
  msgstr ""
211
  msgstr ""
212
 
213
  #: Includes/Data.php:54 Includes/Data.php:63 Includes/Data.php:70
214
+ #: Includes/Page.php:475
215
  msgid "Email Address"
216
  msgstr ""
217
 
231
  msgid "Content"
232
  msgstr ""
233
 
234
+ #: Includes/Data.php:64 Includes/Page.php:391 Includes/Page.php:476
235
  msgid "IP Address"
236
  msgstr ""
237
 
255
  msgid "City"
256
  msgstr ""
257
 
258
+ #: Includes/Data.php:178
259
  #, php-format
260
  msgid "Anonymise selected %s(s)"
261
  msgstr ""
303
  msgid "GDPR Accepted On"
304
  msgstr ""
305
 
306
+ #: Includes/Helper.php:99
307
  #, php-format
308
  msgid "You can use: %s"
309
  msgstr ""
310
 
311
+ #: Includes/Helper.php:105 Includes/Helper.php:126 Includes/Page.php:309
312
  msgid "Note"
313
  msgstr ""
314
 
315
+ #: Includes/Helper.php:106
316
  msgid "No HTML allowed due to plugin limitations."
317
  msgstr ""
318
 
319
+ #: Includes/Helper.php:127
320
  msgid ""
321
  "Please disable the custom comments form in Jetpack to make your WordPress "
322
  "Comments GDPR compliant."
323
  msgstr ""
324
 
325
+ #: Includes/Helper.php:154
326
  msgid "Do you have a contact form?"
327
  msgstr ""
328
 
329
+ #: Includes/Helper.php:155
330
  msgid ""
331
  "Make sure you add a checkbox specifically asking the user of the form if "
332
  "they consent to you storing and using their personal information to get back "
334
  "if you will send or share the data with any 3rd-parties and which."
335
  msgstr ""
336
 
337
+ #: Includes/Helper.php:158
338
  msgid "Can visitors comment anywhere on your website?"
339
  msgstr ""
340
 
341
+ #: Includes/Helper.php:159
342
  msgid ""
343
  "Make sure you add a checkbox specifically asking the user of the comment "
344
  "section if they consent to storing their message attached to the e-mail "
347
  "which."
348
  msgstr ""
349
 
350
+ #: Includes/Helper.php:162
351
  msgid "Is there an order form on your website or webshop present?"
352
  msgstr ""
353
 
354
+ #: Includes/Helper.php:163
355
  msgid ""
356
  "Make sure you add a checkbox specifically asking the user of the form if "
357
  "they consent to you storing and using their personal information to ship the "
361
  "which."
362
  msgstr ""
363
 
364
+ #: Includes/Helper.php:166
365
  msgid "Do you provide a forum or message board?"
366
  msgstr ""
367
 
368
+ #: Includes/Helper.php:167
369
  msgid ""
370
  "Make sure you add a checkbox specifically asking forum / board users if they "
371
  "consent to you storing and using their personal information and messages. "
373
  "share the data with any 3rd-parties and which."
374
  msgstr ""
375
 
376
+ #: Includes/Helper.php:170
377
  msgid "Can visitors chat with your company directly?"
378
  msgstr ""
379
 
380
+ #: Includes/Helper.php:171
381
  msgid ""
382
  "Make sure you add a checkbox specifically asking chat users if they consent "
383
  "to you storing and using their personal information and messages. The "
396
  msgstr ""
397
 
398
  #: Includes/Integration.php:115 Includes/Integration.php:156
399
+ #: Includes/Integration.php:183 Includes/Page.php:339
400
  msgid "Checkbox text"
401
  msgstr ""
402
 
419
  msgid "Please accept the privacy checkbox."
420
  msgstr ""
421
 
422
+ #: Includes/Integration.php:243 Includes/Page.php:275 Includes/Page.php:279
423
  msgid "Privacy Policy"
424
  msgstr ""
425
 
426
  #: Includes/Integration.php:268
427
  #, php-format
428
  msgid ""
429
+ "Below we show you all of the data stored by %s on %s. Select the data you "
430
  "wish the site owner to anonymise so it cannot be linked to your email "
431
  "address any longer. It is the site's owner responsibility to act upon your "
432
  "request. When your data is anonymised you will receive an email confirmation."
433
  msgstr ""
434
 
435
+ #: Includes/Integration.php:306 Includes/Page.php:379
436
  msgid "WordPress Comments"
437
  msgstr ""
438
 
454
  msgid "Gravity Forms"
455
  msgstr ""
456
 
457
+ #: Includes/Integration.php:335 Includes/Page.php:380
458
  msgid "WooCommerce"
459
  msgstr ""
460
 
464
  "page."
465
  msgstr ""
466
 
467
+ #: Includes/Page.php:54
468
  msgid "Integration"
469
  msgstr ""
470
 
471
+ #: Includes/Page.php:74
472
  msgid "Checklist"
473
  msgstr ""
474
 
475
+ #: Includes/Page.php:75 wp-gdpr-compliance.php:112
476
  msgid "Settings"
477
  msgstr ""
478
 
479
+ #: Includes/Page.php:103
480
  msgid ""
481
  "This plugin assists website and webshop owners to comply with European "
482
  "privacy regulations known as GDPR. By May 25th, 2018 your site or shop has "
483
  "to comply."
484
  msgstr ""
485
 
486
+ #: Includes/Page.php:106
487
  #, php-format
488
  msgid ""
489
  "%s currently supports %s. Please visit %s for frequently asked questions and "
490
  "our development roadmap."
491
  msgstr ""
492
 
493
+ #: Includes/Page.php:114
494
  msgid ""
495
  "Disclaimer: The creators of this plugin do not have a legal background "
496
  "please contact a law firm for rock solid legal advice."
497
  msgstr ""
498
 
499
+ #: Includes/Page.php:123
500
  #, php-format
501
  msgid "You have %s left to comply with GDPR."
502
  msgstr ""
503
 
504
+ #: Includes/Page.php:123
505
  #, php-format
506
  msgid "%s day"
507
  msgstr ""
508
 
509
+ #: Includes/Page.php:130
510
  msgid "Rate us"
511
  msgstr ""
512
 
513
+ #: Includes/Page.php:132
514
  #, php-format
515
+ msgid "Did %s help you out? Please leave a 5-star review. Thank you!"
516
  msgstr ""
517
 
518
+ #: Includes/Page.php:133
519
  msgid "Write a review"
520
  msgstr ""
521
 
522
+ #: Includes/Page.php:141
523
  msgid "Yes"
524
  msgstr ""
525
 
526
+ #: Includes/Page.php:142
527
  msgid "No"
528
  msgstr ""
529
 
530
+ #: Includes/Page.php:169
531
  msgid "Enable:"
532
  msgstr ""
533
 
534
+ #: Includes/Page.php:195
535
  #, php-format
536
  msgid "This plugin is outdated. %s supports version %s and up."
537
  msgstr ""
538
 
539
+ #: Includes/Page.php:204
540
  msgid "Couldn't find any supported plugins installed."
541
  msgstr ""
542
 
543
+ #: Includes/Page.php:205
544
  msgid "The following plugins are supported as of now:"
545
  msgstr ""
546
 
547
+ #: Includes/Page.php:211
548
  msgid "More plugins will be added in the future."
549
  msgstr ""
550
 
551
+ #: Includes/Page.php:223
552
  msgid ""
553
  "Below we ask you what private data you currently collect and provide you "
554
  "with tips to comply."
555
  msgstr ""
556
 
557
+ #: Includes/Page.php:284 Includes/Page.php:326
558
  msgid "Select an option"
559
  msgstr ""
560
 
561
+ #: Includes/Page.php:292
562
  msgid "Link text"
563
  msgstr ""
564
 
565
+ #: Includes/Page.php:297
566
  msgid "Request User Data"
567
  msgstr ""
568
 
569
+ #: Includes/Page.php:299
570
  msgid ""
571
  "Allow your site's visitors to request their data stored in the WordPress "
572
  "database (comments, WooCommerce orders etc.). Data found is send to their "
574
  "data anonymised."
575
  msgstr ""
576
 
577
+ #: Includes/Page.php:302
578
  msgid "Activate"
579
  msgstr ""
580
 
581
+ #: Includes/Page.php:304
582
  msgid "Activate page"
583
  msgstr ""
584
 
585
+ #: Includes/Page.php:311
586
  #, php-format
587
  msgid ""
588
  "Enabling this will create one private page containing the necessary "
589
  "shortcode: %s. You can determine when and how to publish this page yourself."
590
  msgstr ""
591
 
592
+ #: Includes/Page.php:321
593
  msgid "Page"
594
  msgstr ""
595
 
596
+ #: Includes/Page.php:333
597
  msgid "Click here to edit this page"
598
  msgstr ""
599
 
600
+ #: Includes/Page.php:345
601
  msgid "Anonymise request explanation"
602
  msgstr ""
603
 
604
+ #: Includes/Page.php:376
605
  msgid ""
606
  "Anonymise a request by ticking the checkbox and clicking on the green "
607
  "anonymise button below."
608
  msgstr ""
609
 
610
+ #: Includes/Page.php:378
611
  msgid "WordPress Users"
612
  msgstr ""
613
 
614
+ #: Includes/Page.php:389
615
  msgid "Request"
616
  msgstr ""
617
 
618
+ #: Includes/Page.php:390
619
  msgid "Type"
620
  msgstr ""
621
 
622
+ #: Includes/Page.php:392 Includes/Page.php:477
623
  msgid "Date"
624
  msgstr ""
625
 
626
+ #: Includes/Page.php:393
627
  msgid "Processed"
628
  msgstr ""
629
 
630
+ #: Includes/Page.php:394
631
  msgid "Action"
632
  msgstr ""
633
 
634
+ #: Includes/Page.php:409
635
  msgid "View"
636
  msgstr ""
637
 
638
+ #: Includes/Page.php:423
639
  msgid "Anonymise selected request(s)"
640
  msgstr ""
641
 
642
+ #: Includes/Page.php:445 Includes/Page.php:536
643
  #, php-format
644
  msgid "%d of %d results found"
645
  msgstr ""
646
 
647
+ #: Includes/Page.php:451 Includes/Page.php:542
648
  msgid "No requests found."
649
  msgstr ""
650
 
651
+ #: Includes/Page.php:473
652
  msgid "ID"
653
  msgstr ""
654
 
655
+ #: Includes/Page.php:474
656
  msgid "Requests to Process"
657
  msgstr ""
658
 
659
+ #: Includes/Page.php:478
660
+ msgid "Status"
661
  msgstr ""
662
 
663
+ #: Includes/Page.php:502
664
  msgid "Manage"
665
  msgstr ""
666
 
667
+ #: Includes/Page.php:510
668
+ msgid "Expired"
669
+ msgstr ""
670
+
671
+ #: Includes/Page.php:510
672
+ msgid "Active"
673
+ msgstr ""
674
+
675
  #: Includes/Shortcode.php:33
676
  msgid "Users"
677
  msgstr ""
699
  msgid "No WooCommerce orders found with email address %s."
700
  msgstr ""
701
 
702
+ #: Includes/Shortcode.php:77
703
+ msgid ""
704
+ "You are only able to view your data when visiting this page on the same "
705
+ "device with the same IP and in the same browser session as when you "
706
+ "performed your request. This is an extra security measure to keep your data "
707
+ "safe."
708
  msgstr ""
709
 
710
  #: Includes/Shortcode.php:79
711
+ #, php-format
712
+ msgid "If needed you can put in a new request after 24 hours here: %s."
713
+ msgstr ""
714
+
715
+ #: Includes/Shortcode.php:91
716
  msgid "This request is expired or doesn't exist."
717
  msgstr ""
718
 
719
+ #: Includes/Shortcode.php:111
720
  msgid "Your Email Address"
721
  msgstr ""
722
 
723
+ #: Includes/Shortcode.php:125
724
  msgid "Send"
725
  msgstr ""
726
 
727
+ #: wp-gdpr-compliance.php:112
728
  msgid "View WP GDPR Compliance settings"
729
  msgstr ""
readme.txt CHANGED
@@ -4,7 +4,7 @@ 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.3.3
8
  License: GPLv2 or later
9
  License URI: https://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -38,6 +38,14 @@ You'll find answers to many of your questions on [wpgdprc.com](https://www.wpgdp
38
 
39
  == Changelog ==
40
 
 
 
 
 
 
 
 
 
41
  = 1.3.3 =
42
  *Release date: May 14th, 2018*
43
  * Fixed a bug that caused anonymise request mails to fail.
4
  Requires at least: 4.5
5
  Tested up to: 4.9.4
6
  Requires PHP: 5.3
7
+ Stable tag: 1.3.4
8
  License: GPLv2 or later
9
  License URI: https://www.gnu.org/licenses/gpl-2.0.html
10
 
38
 
39
  == Changelog ==
40
 
41
+ = 1.3.4 =
42
+ *Release date: May 16th, 2018*
43
+ * Fixed a bug when creating the database tables used by the request user data functionality.
44
+ * Fixed a bug when creating the request user data page.
45
+ * Expired access requests are shown more clearly.
46
+ * Improved error messages.
47
+ * Added a link to the support forum. We're happy to help!
48
+
49
  = 1.3.3 =
50
  *Release date: May 14th, 2018*
51
  * Fixed a bug that caused anonymise request mails to fail.
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.3.3
8
  Author: Van Ons
9
  Author URI: https://www.van-ons.nl/
10
  License: GPL2
@@ -33,7 +33,6 @@ namespace WPGDPRC;
33
  use WPGDPRC\Includes\Action;
34
  use WPGDPRC\Includes\Ajax;
35
  use WPGDPRC\Includes\Cron;
36
- use WPGDPRC\Includes\Filter;
37
  use WPGDPRC\Includes\Helper;
38
  use WPGDPRC\Includes\Integration;
39
  use WPGDPRC\Includes\Page;
@@ -69,6 +68,8 @@ class WPGDPRC {
69
  private static $instance = null;
70
 
71
  public function init() {
 
 
72
  if (is_admin() && !function_exists('get_plugin_data')) {
73
  require_once(ABSPATH . 'wp-admin/includes/plugin.php');
74
  }
@@ -81,10 +82,10 @@ class WPGDPRC {
81
  add_action('core_version_check_query_args', array(Action::getInstance(), 'onlySendEssentialDataDuringUpdateCheck'));
82
  add_action('wp_ajax_nopriv_wpgdprc_process_action', array(Ajax::getInstance(), 'processAction'));
83
  add_action('wp_ajax_wpgdprc_process_action', array(Ajax::getInstance(), 'processAction'));
84
- add_action('update_option_wpgdprc_settings_enable_access_request', array(Action::getInstance(), 'processEnableAccessRequest'));
85
- add_filter('pre_update_option_wpgdprc_settings_access_request_page', array(Filter::getInstance(), 'processEnableAccessRequest'));
86
  Integration::getInstance();
87
  if (Helper::isEnabled('enable_access_request', 'settings')) {
 
88
  add_action('admin_notices', array(Action::getInstance(), 'showNoticesRequestUserData'));
89
  add_action('wpgdprc_deactivate_access_requests', array(Cron::getInstance(), 'deactivateAccessRequests'));
90
  add_action('wp_ajax_wpgdprc_process_delete_request', array(Ajax::getInstance(), 'processDeleteRequest'));
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.3.4
8
  Author: Van Ons
9
  Author URI: https://www.van-ons.nl/
10
  License: GPL2
33
  use WPGDPRC\Includes\Action;
34
  use WPGDPRC\Includes\Ajax;
35
  use WPGDPRC\Includes\Cron;
 
36
  use WPGDPRC\Includes\Helper;
37
  use WPGDPRC\Includes\Integration;
38
  use WPGDPRC\Includes\Page;
68
  private static $instance = null;
69
 
70
  public function init() {
71
+ $action = (isset($_REQUEST['wpgdprc-action'])) ? esc_html($_REQUEST['wpgdprc-action']) : false;
72
+ Helper::doAction($action);
73
  if (is_admin() && !function_exists('get_plugin_data')) {
74
  require_once(ABSPATH . 'wp-admin/includes/plugin.php');
75
  }
82
  add_action('core_version_check_query_args', array(Action::getInstance(), 'onlySendEssentialDataDuringUpdateCheck'));
83
  add_action('wp_ajax_nopriv_wpgdprc_process_action', array(Ajax::getInstance(), 'processAction'));
84
  add_action('wp_ajax_wpgdprc_process_action', array(Ajax::getInstance(), 'processAction'));
85
+ add_action('update_option_wpgdprc_settings_enable_access_request', array(Action::getInstance(), 'processToggleAccessRequest'));
 
86
  Integration::getInstance();
87
  if (Helper::isEnabled('enable_access_request', 'settings')) {
88
+ add_action('init', array(Action::getInstance(), 'processEnableAccessRequest'));
89
  add_action('admin_notices', array(Action::getInstance(), 'showNoticesRequestUserData'));
90
  add_action('wpgdprc_deactivate_access_requests', array(Cron::getInstance(), 'deactivateAccessRequests'));
91
  add_action('wp_ajax_wpgdprc_process_delete_request', array(Ajax::getInstance(), 'processDeleteRequest'));