PluginProbe
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More / 6.32
Formidable Forms – WordPress Form Builder for Contact Forms, Calculators, Quizzes & More v6.32
6.35 6.34 6.33.1 6.33 6.32.1 6.32 6.31 6.25 6.25.1 6.26 6.26.1 6.27 6.28 6.29 6.3 6.3.1 6.3.2 6.30 6.4 6.4.1 6.4.2 6.5 6.5.1 6.5.2 6.5.3 All 141 releases
← All changes | classes/models/FrmPersonalData.php +31 -19 6.36.32 View file →
@@ -4,10 +4,16 @@
4 4 }
5 5
6 6 class FrmPersonalData {
7 7
8 + /**
9 + * @var int
10 + */
8 11 private $limit = 200;
9 12
13 + /**
14 + * @var int
15 + */
10 16 private $page = 1;
11 17
12 18 public function __construct() {
13 19 add_filter( 'wp_privacy_personal_data_erasers', array( $this, 'register_data_eraser' ) );
@@ -50,8 +56,11 @@
50 56 return $erasers;
51 57 }
52 58
53 59 /**
60 + * @param string $email
61 + * @param int $page
62 + *
54 63 * @return array
55 64 */
56 65 public function export_data( $email, $page = 1 ) {
57 66 $this->page = absint( $page );
@@ -61,13 +70,14 @@
61 70 'done' => true,
62 71 );
63 72
64 73 $entries = $this->get_user_entries( $email );
65 - if ( empty( $entries ) ) {
74 +
75 + if ( ! $entries ) {
66 76 return $data_to_export;
67 77 }
68 78
69 - foreach ( (array) $entries as $entry ) {
79 + foreach ( $entries as $entry ) {
70 80 $data_to_export['data'][] = array(
71 81 'group_id' => 'formidable',
72 82 'group_label' => __( 'Form Submissions', 'formidable' ),
73 83 'item_id' => esc_attr( 'entry-' . $entry ),
@@ -80,8 +90,11 @@
80 90 return $data_to_export;
81 91 }
82 92
83 93 /**
94 + * @param string $email
95 + * @param int $page
96 + *
84 97 * @return array
85 98 */
86 99 public function erase_data( $email, $page = 1 ) {
87 100 $data_removed = array(
@@ -90,21 +103,22 @@
90 103 'messages' => array(),
91 104 'done' => true,
92 105 );
93 106
94 - if ( empty( $email ) ) {
107 + if ( ! $email ) {
95 108 return $data_removed;
96 109 }
97 110
98 111 $this->page = absint( $page );
99 112 $entries = $this->get_user_entries( $email );
100 - if ( empty( $entries ) ) {
113 +
114 + if ( ! $entries ) {
101 115 return $data_removed;
102 116 }
103 117
104 118 // TODO: Add an option to anonymize the entries with wp_privacy_anonymize_data( 'email', 'e@e.com' );
105 119
106 - foreach ( (array) $entries as $entry ) {
120 + foreach ( $entries as $entry ) {
107 121 $removed = FrmEntry::destroy( $entry );
108 122
109 123 if ( $removed ) {
110 124 $data_removed['items_removed'] = true;
@@ -123,9 +137,9 @@
123 137 * or with a field value that matches the email address
124 138 *
125 139 * @param string $email
126 140 *
127 - * @return array of entry ids
141 + * @return array Entry ids
128 142 */
129 143 private function get_user_entries( $email ) {
130 144 $query_args = array(
131 145 'order_by' => 'item_id ASC',
@@ -131,30 +145,28 @@
131 145 'order_by' => 'item_id ASC',
132 146 'limit' => $this->get_current_page(),
133 147 );
134 148
135 - $user = get_user_by( 'email', $email );
136 -
149 + $user = get_user_by( 'email', $email );
137 150 $entries_by_email = FrmDb::get_col( 'frm_item_metas', array( 'meta_value' => $email ), 'item_id', $query_args );
138 151
139 - if ( empty( $user ) ) {
140 - // no matching user, so return the entry ids we have
152 + if ( ! $user ) {
153 + // No matching user, so return the entry ids we have
141 154 return $entries_by_email;
142 155 }
143 156
144 157 $query_args['order_by'] = 'id ASC';
158 + $entries_by_user = FrmDb::get_col( 'frm_items', array( 'user_id' => $user->ID ), 'id', $query_args );
159 + $entry_ids = array_merge( $entries_by_user, $entries_by_email );
145 160
146 - $entries_by_user = FrmDb::get_col( 'frm_items', array( 'user_id' => $user->ID ), 'id', $query_args );
147 -
148 - $entry_ids = array_merge( (array) $entries_by_user, (array) $entries_by_email );
149 - $entry_ids = array_unique( array_filter( $entry_ids ) );
150 -
151 - return $entry_ids;
161 + return array_unique( array_filter( $entry_ids ) );
152 162 }
153 163
164 + /**
165 + * @return string
166 + */
154 167 private function get_current_page() {
155 168 $start = ( $this->page - 1 ) * $this->limit;
156 -
157 169 return FrmDb::esc_limit( $start . ',' . $this->limit );
158 170 }
159 171
160 172 /**
@@ -162,11 +174,11 @@
162 174 *
163 175 * @return array
164 176 */
165 177 private function prepare_entry_data( $entry ) {
166 - $entry = FrmEntry::getOne( $entry, true );
178 + $entry = FrmEntry::getOne( $entry, true );
179 + $entry_data = array();
167 180
168 - $entry_data = array();
169 181 foreach ( $entry->metas as $field_id => $meta ) {
170 182 $field = FrmField::getOne( $field_id );
171 183
172 184 $entry_data[] = array(