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