PluginProbe
Flamingo / trunk
Flamingo vtrunk
2.6.4 2.6.3 2.6.2 trunk 1.0 1.0.1 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.1 1.1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 2.0 2.1 2.1.1 2.2 All 33 releases
flamingo / admin / includes / privacy.php

privacy.php in Flamingo trunk, at admin/includes/privacy.php

121 lines 2.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Support for personal data eraser tool
4 *
5 * @link https://developer.wordpress.org/plugins/privacy/adding-the-personal-data-eraser-to-your-plugin/
6 */
7
8
9 add_filter( 'wp_privacy_personal_data_erasers',
10 'flamingo_privacy_register_personal_data_erasers',
11 10, 1
12 );
13
14 /**
15 * Registers callback functions.
16 */
17 function flamingo_privacy_register_personal_data_erasers( $erasers ) {
18 return array_merge( (array) $erasers, array(
19 'flamingo-contact' => array(
20 'eraser_friendly_name' => __( 'Flamingo Address Book', 'flamingo' ),
21 'callback' => 'flamingo_privacy_contact_eraser',
22 ),
23 'flamingo-inbound' => array(
24 'eraser_friendly_name' => __( 'Flamingo Inbound Messages', 'flamingo' ),
25 'callback' => 'flamingo_privacy_inbound_eraser',
26 ),
27 ) );
28 }
29
30
31 /**
32 * Callback for the contact data.
33 */
34 function flamingo_privacy_contact_eraser( $email_address, $page = 1 ) {
35 $number = 100;
36
37 $posts = Flamingo_Contact::find( array(
38 'meta_key' => '_email',
39 'meta_value' => $email_address,
40 'posts_per_page' => $number,
41 'paged' => (int) $page,
42 ) );
43
44 $items_removed = false;
45 $items_retained = false;
46 $messages = array();
47
48 foreach ( (array) $posts as $post ) {
49 if ( ! current_user_can( 'flamingo_delete_contact', $post->id() ) ) {
50 $items_retained = true;
51
52 $messages = array(
53 __( 'Flamingo Address Book: You are not allowed to delete contact data.', 'flamingo' ),
54 );
55
56 continue;
57 }
58
59 if ( $post->delete() ) {
60 $items_removed = true;
61 } else {
62 $items_retained = true;
63 }
64 }
65
66 $done = Flamingo_Contact::count() < $number;
67
68 return array(
69 'items_removed' => $items_removed,
70 'items_retained' => $items_retained,
71 'messages' => array_map( 'esc_html', (array) $messages ),
72 'done' => $done,
73 );
74 }
75
76
77 /**
78 * Callback for the inbound messages data.
79 */
80 function flamingo_privacy_inbound_eraser( $email_address, $page = 1 ) {
81 $number = 100;
82
83 $posts = Flamingo_Inbound_Message::find( array(
84 'meta_key' => '_from_email',
85 'meta_value' => $email_address,
86 'posts_per_page' => $number,
87 'paged' => (int) $page,
88 ) );
89
90 $items_removed = false;
91 $items_retained = false;
92 $messages = array();
93
94 foreach ( (array) $posts as $post ) {
95 if ( ! current_user_can( 'flamingo_delete_inbound_message', $post->id() ) ) {
96 $items_retained = true;
97
98 $messages = array(
99 __( 'Flamingo Inbound Messages: You are not allowed to delete inbound messages.', 'flamingo' ),
100 );
101
102 continue;
103 }
104
105 if ( $post->delete() ) {
106 $items_removed = true;
107 } else {
108 $items_retained = true;
109 }
110 }
111
112 $done = Flamingo_Inbound_Message::count() < $number;
113
114 return array(
115 'items_removed' => $items_removed,
116 'items_retained' => $items_retained,
117 'messages' => array_map( 'esc_html', (array) $messages ),
118 'done' => $done,
119 );
120 }
121