'HTML Forms', 'callback' => array( $this, 'export' ), ); return $exporters; } public function register_eraser( $erasers ) { $erasers['html-forms'] = array( 'eraser_friendly_name' => 'HTML Forms', 'callback' => array( $this, 'erase' ), ); return $erasers; } public function export( $email_address, $page = 1 ) { $submissions = $this->find_submissions_for_email_address( $email_address ); $data_to_export = array(); foreach ( $submissions as $s ) { $data_to_export[] = array( 'group_id' => 'html_forms_submissions', 'group_label' => __( 'Form submissions', 'html-forms' ), 'item_id' => sprintf( 'html-forms-submission-%d', $s->id ), 'data' => $this->export_submission( $s ), ); } return array( 'data' => $data_to_export, 'done' => true, ); } public function export_submission( Submission $submission ) { $data = array( array( 'name' => 'Submitted at', 'value' => $submission->submitted_at, ), ); if ( ! empty( $submission->ip_address ) ) { $data[] = array( 'name' => 'IP address', 'value' => $submission->ip_address, ); } if ( ! empty( $submission->user_agent ) ) { $data[] = array( 'name' => 'User agent', 'value' => $submission->user_agent, ); } foreach ( $submission->data as $field => $value ) { $data[] = array( 'name' => $field, 'value' => is_array( $value ) ? join( ', ', $value ) : $value, ); } return $data; } public function erase( $email_address, $page = 1 ) { global $wpdb; $table = $wpdb->prefix . 'hf_submissions'; $items_removed = false; $submissions = $this->find_submissions_for_email_address( $email_address ); foreach ( $submissions as $submission ) { $wpdb->delete( $table, array( 'id' => $submission->id ) ); $items_removed = true; } return array( 'items_removed' => $items_removed, 'items_retained' => false, 'messages' => array(), 'done' => true, ); } private function find_submissions_for_email_address( $email_address ) { global $wpdb; $table = $wpdb->prefix . 'hf_submissions'; $like = '%"' . $email_address . '"%'; $results = $wpdb->get_results( $wpdb->prepare( "SELECT s.* FROM {$table} s WHERE s.data LIKE %s ORDER BY s.submitted_at DESC", $like ), OBJECT_K ); $submissions = array(); foreach ( $results as $key => $object ) { $submission = Submission::from_object( $object ); $submissions[ $key ] = $submission; } return $submissions; } }