PluginProbe ʕ •ᴥ•ʔ
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress / 4.0.3
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress v4.0.3
4.17.2 4.17.1 4.17.0 4.16.19 4.16.18 4.16.17 4.16.16 trunk 1.0 1.0.1 1.0.2 1.1 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.5a 1.1.6 1.1.7 1.2 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.3 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.4 1.4.1 1.4.2 1.5 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.7 1.7.1 1.7.2 1.8 1.8.1 1.8.10 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.8.7 1.8.8 1.8.9 1.9 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.1.9 2.2.10 2.2.11 2.2.12 2.2.13 2.2.14 2.2.15 2.2.16 2.2.2 2.2.5 2.2.6 2.2.7 2.2.8 2.2.9 3.0 3.1 3.1.1 3.1.10 3.1.11 3.1.12 3.1.13 3.1.14 3.1.15 3.1.16 3.1.17 3.1.18 3.1.19 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.2.0 3.2.1 3.2.10 3.2.11 3.2.12 3.2.13 3.2.14 3.2.15 3.2.16 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 3.2.8 3.2.9 4.0.0 4.0.1 4.0.2 4.0.3 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.10.0 4.10.1 4.10.2 4.10.3 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.13.3 4.13.4 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.15.0 4.15.1 4.15.10 4.15.11 4.15.12 4.15.13 4.15.14 4.15.15 4.15.16 4.15.17 4.15.18 4.15.19 4.15.2 4.15.20 4.15.20.1 4.15.21 4.15.22 4.15.23 4.15.24 4.15.25 4.15.3 4.15.4 4.15.5 4.15.6 4.15.7 4.15.8 4.15.9 4.16.0 4.16.1 4.16.10 4.16.11 4.16.12 4.16.13 4.16.14 4.16.15 4.16.2 4.16.3 4.16.4 4.16.5 4.16.6 4.16.7 4.16.8 4.16.9 4.2.0 4.3.0 4.3.1 4.3.2 4.4.0 4.4.1 4.5.0 4.5.1 4.5.2 4.5.3 4.5.4 4.5.5 4.6.0 4.7.0 4.8.0 4.9.0
wp-user-avatar / src / Classes / GDPR.php
wp-user-avatar / src / Classes Last commit date
Installer 5 years ago AdminNotices.php 4 years ago AjaxHandler.php 4 years ago Autologin.php 4 years ago BuddyPressBbPress.php 5 years ago EditUserProfile.php 4 years ago ExtensionManager.php 4 years ago FileUploader.php 4 years ago FormPreviewHandler.php 5 years ago FormRepository.php 4 years ago FormShortcodeDefaults.php 5 years ago GDPR.php 4 years ago Geolocation.php 4 years ago GlobalSiteAccess.php 4 years ago ImageUploader.php 4 years ago LoginAuth.php 4 years ago Miscellaneous.php 4 years ago ModifyRedirectDefaultLinks.php 4 years ago PPRESS_Session.php 4 years ago PROFILEPRESS_sql.php 4 years ago PasswordReset.php 4 years ago ProfileUrlRewrite.php 4 years ago RegistrationAuth.php 4 years ago SendEmail.php 4 years ago ShortcodeThemeFactory.php 5 years ago UserAvatar.php 4 years ago UserSignupLocationListingPage.php 4 years ago UsernameEmailRestrictLogin.php 4 years ago WPProfileFieldParserTrait.php 4 years ago WelcomeEmailAfterSignup.php 4 years ago default-email-template.php 4 years ago index.php 5 years ago
GDPR.php
139 lines
1 <?php
2
3 namespace ProfilePress\Core\Classes;
4
5
6 use ProfilePress\Core\Classes\PROFILEPRESS_sql as PROFILEPRESS_sql;
7
8 class GDPR
9 {
10 public function __construct()
11 {
12 add_filter('wp_privacy_personal_data_exporters', [$this, 'wp_export_data']);
13 add_filter('wp_privacy_personal_data_erasers', [$this, 'wp_erase_data']);
14 }
15
16 public function wp_erase_data($erasers)
17 {
18 $erasers['profilepress'] = [
19 'eraser_friendly_name' => esc_html__('User Extra Information', 'wp-user-avatar'),
20 'callback' => [$this, 'erase_data']
21 ];
22
23 return $erasers;
24 }
25
26 public function erase_data($email_address)
27 {
28 $user = get_user_by('email', $email_address);
29 $user_id = $user->ID;
30 /** @todo loop through billing details too. maybe use ppress_custom_fields_key_value_pair() */
31 $custom_fields = PROFILEPRESS_sql::get_profile_custom_fields();
32
33 $items_removed = false;
34 $items_retained = false;
35
36 if ( ! empty($custom_fields) && is_array($custom_fields)) {
37
38 foreach ($custom_fields as $custom_field) {
39
40 $get_meta_value = get_user_meta($user_id, $custom_field['field_key']);
41 if (empty($get_meta_value)) continue;
42
43 $deleted = delete_user_meta($user_id, $custom_field['field_key']);
44 if ($deleted) {
45 $items_removed = true;
46 } else {
47 $items_retained = true;
48 }
49 }
50 }
51
52 return [
53 'items_removed' => $items_removed,
54 'items_retained' => $items_retained,
55 'messages' => [],
56 'done' => true,
57 ];
58 }
59
60 public function wp_export_data($exporters)
61 {
62 $exporters[] = array(
63 'exporter_friendly_name' => esc_html__('User Extra Information', 'wp-user-avatar'),
64 'callback' => function ($email_address) {
65 $user = get_user_by('email', $email_address);
66 $user_id = $user->ID;
67
68 $data_to_export = [];
69
70 /** @todo loop through biiling details too */
71 $custom_fields = PROFILEPRESS_sql::get_profile_custom_fields();
72 $db_contact_infos = PROFILEPRESS_sql::get_contact_info_fields();
73
74 if ( ! empty($db_contact_infos) || ! empty($custom_fields)) {
75
76 $lead_data_to_export = [];
77
78 if ( ! empty($db_contact_infos) && is_array($db_contact_infos)) {
79
80 foreach ($db_contact_infos as $key => $value) {
81
82 $usermeta_value = get_user_meta($user_id, $key, true);
83
84 if ( ! empty($usermeta_value)) {
85 $lead_data_to_export[] = [
86 'name' => $value,
87 'value' => $usermeta_value
88 ];
89 }
90 }
91 }
92
93 if ( ! empty($custom_fields) && is_array($custom_fields)) {
94
95 foreach ($custom_fields as $custom_field) {
96
97 $usermeta_value = get_user_meta($user_id, $custom_field['field_key'], true);
98
99 if ( ! empty($usermeta_value)) {
100 $lead_data_to_export[] = [
101 'name' => $custom_field['label_name'],
102 'value' => $usermeta_value
103 ];
104 }
105 }
106 }
107
108 $data_to_export[] = [
109 'group_id' => 'profilepress',
110 'group_label' => esc_html__('User Extra Information', 'wp-user-avatar'),
111 'item_id' => "profilepress-{$user_id}",
112 'data' => $lead_data_to_export
113 ];
114 }
115
116 return [
117 'data' => $data_to_export,
118 'done' => true,
119 ];
120 }
121 );
122
123 return $exporters;
124 }
125
126 /**
127 * @return GDPR
128 */
129 public static function get_instance()
130 {
131 static $instance = null;
132
133 if (is_null($instance)) {
134 $instance = new self();
135 }
136
137 return $instance;
138 }
139 }