__( 'VendorVerse Vendor Data', 'vendorverse' ), 'callback' => [ $this, 'export_vendor_data' ], ]; return $exporters; } public function register_eraser( $erasers ) { $erasers['vendorverse'] = [ 'eraser_friendly_name' => __( 'VendorVerse Vendor Data', 'vendorverse' ), 'callback' => [ $this, 'erase_vendor_data' ], ]; return $erasers; } public function export_vendor_data( $email, $page = 1 ) { global $wpdb; $user = get_user_by( 'email', $email ); if ( ! $user ) return [ 'data' => [], 'done' => true ]; $uid = $user->ID; $data = []; // Transactions $txns = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM {$wpdb->prefix}vv_wallet_transactions WHERE user_id=%d", $uid ) ); foreach ( $txns as $t ) { $data[] = [ 'group_id' => 'vv_transactions', 'group_label'=> __( 'VendorVerse Transactions', 'vendorverse' ), 'item_id' => 'txn-' . $t->id, 'data' => [ [ 'name' => 'Date', 'value' => $t->created_at ], [ 'name' => 'Amount', 'value' => $t->amount ], [ 'name' => 'Type', 'value' => $t->type ], [ 'name' => 'Description', 'value' => $t->description ], ], ]; } // Withdrawals $withdrawals = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM {$wpdb->prefix}vv_withdrawals WHERE vendor_id=%d", $uid ) ); foreach ( $withdrawals as $w ) { $data[] = [ 'group_id' => 'vv_withdrawals', 'group_label'=> __( 'VendorVerse Withdrawals', 'vendorverse' ), 'item_id' => 'withdrawal-' . $w->id, 'data' => [ [ 'name' => 'Amount', 'value' => $w->amount ], [ 'name' => 'Method', 'value' => $w->method ], [ 'name' => 'Status', 'value' => $w->status ], [ 'name' => 'Created', 'value' => $w->created_at ], ], ]; } // Bank details $bank_fields = [ 'vv_bank_account_name', 'vv_bank_account', 'vv_name_of_bank', 'vv_ifsc_code', 'vv_iban', 'vv_bic' ]; $bank_data = []; foreach ( $bank_fields as $f ) { $val = get_user_meta( $uid, $f, true ); if ( $val ) $bank_data[] = [ 'name' => ucwords( str_replace( '_', ' ', str_replace( 'vv_', '', $f ) ) ), 'value' => $val ]; } if ( $bank_data ) { $data[] = [ 'group_id' => 'vv_bank', 'group_label'=> __( 'VendorVerse Bank Details', 'vendorverse' ), 'item_id' => 'bank-' . $uid, 'data' => $bank_data, ]; } return [ 'data' => $data, 'done' => true ]; } public function erase_vendor_data( $email, $page = 1 ) { global $wpdb; $user = get_user_by( 'email', $email ); if ( ! $user ) return [ 'items_removed' => false, 'items_retained' => false, 'messages' => [], 'done' => true ]; $uid = $user->ID; $removed = 0; $removed += $wpdb->delete( "{$wpdb->prefix}vv_wallet_transactions", [ 'user_id' => $uid ], [ '%d' ] ); $removed += $wpdb->delete( "{$wpdb->prefix}vv_withdrawals", [ 'vendor_id' => $uid ], [ '%d' ] ); $removed += $wpdb->delete( "{$wpdb->prefix}vv_messages", [ 'sender_id' => $uid ], [ '%d' ] ); $removed += $wpdb->delete( "{$wpdb->prefix}vv_followers", [ 'vendor_id' => $uid ], [ '%d' ] ); $removed += $wpdb->delete( "{$wpdb->prefix}vv_followers", [ 'customer_id' => $uid ], [ '%d' ] ); $bank_fields = [ 'vv_bank_account_name', 'vv_bank_account', 'vv_name_of_bank', 'vv_ifsc_code', 'vv_iban', 'vv_bic', 'vv_lock_bank' ]; foreach ( $bank_fields as $f ) delete_user_meta( $uid, $f ); return [ 'items_removed' => $removed > 0, 'items_retained' => false, 'messages' => [ sprintf( __( '%d VendorVerse records removed.', 'vendorverse' ), $removed ) ], 'done' => true, ]; } }