@@ -75,7 +75,7 @@ public static function generate_preview( $csv_data, $field_mappings, $post_type,
7575
7676 $ formatted_value = implode ( ', ' , $ connection_display );
7777 } else {
78- $ formatted_value = self ::format_value_for_api ( $ processed_value , $ field_key , $ post_type );
78+ $ formatted_value = self ::format_value_for_preview ( $ processed_value , $ field_key , $ post_type );
7979 }
8080
8181 $ processed_row [$ field_key ] = [
@@ -457,7 +457,7 @@ private static function process_location_value( $raw_value ) {
457457 // Validate grid ID exists
458458 global $ wpdb ;
459459 $ grid_exists = $ wpdb ->get_var ($ wpdb ->prepare (
460- "SELECT grid_id FROM { $ wpdb ->prefix } dt_location_grid WHERE grid_id = %d " ,
460+ "SELECT grid_id FROM $ wpdb ->dt_location_grid WHERE grid_id = %d " ,
461461 intval ( $ raw_value )
462462 ));
463463
@@ -595,6 +595,110 @@ public static function format_value_for_api( $processed_value, $field_key, $post
595595 return $ processed_value ;
596596 }
597597
598+ /**
599+ * Format processed value for preview display (human-readable)
600+ */
601+ public static function format_value_for_preview ( $ processed_value , $ field_key , $ post_type ) {
602+ $ field_settings = DT_Posts::get_post_field_settings ( $ post_type );
603+
604+ if ( !isset ( $ field_settings [$ field_key ] ) ) {
605+ return $ processed_value ;
606+ }
607+
608+ $ field_config = $ field_settings [$ field_key ];
609+ $ field_type = $ field_config ['type ' ];
610+
611+ // Handle null/empty values
612+ if ( $ processed_value === null || $ processed_value === '' ) {
613+ return '' ;
614+ }
615+
616+ switch ( $ field_type ) {
617+ case 'multi_select ' :
618+ case 'tags ' :
619+ // Convert array to comma-separated display
620+ if ( is_array ( $ processed_value ) ) {
621+ return implode ( ', ' , $ processed_value );
622+ }
623+ break ;
624+
625+ case 'connection ' :
626+ // Already handled in generate_preview for connection fields
627+ return $ processed_value ;
628+
629+ case 'communication_channel ' :
630+ // Extract values from communication channel array
631+ if ( is_array ( $ processed_value ) ) {
632+ $ values = array_map ( function ( $ channel ) {
633+ return $ channel ['value ' ] ?? $ channel ;
634+ }, $ processed_value );
635+ return implode ( ', ' , $ values );
636+ }
637+ break ;
638+
639+ case 'location ' :
640+ case 'location_grid ' :
641+ case 'location_meta ' :
642+ // Handle location data for preview display
643+ if ( is_numeric ( $ processed_value ) ) {
644+ // Grid ID - try to get the location name
645+ global $ wpdb ;
646+ $ location_name = $ wpdb ->get_var ( $ wpdb ->prepare (
647+ "SELECT name FROM $ wpdb ->dt_location_grid WHERE grid_id = %d " ,
648+ intval ( $ processed_value )
649+ ) );
650+ return $ location_name ?: "Grid ID: {$ processed_value }" ;
651+ } elseif ( is_array ( $ processed_value ) ) {
652+ // Handle coordinate or address arrays
653+ if ( isset ( $ processed_value ['lat ' ] ) && isset ( $ processed_value ['lng ' ] ) ) {
654+ return "Coordinates: {$ processed_value ['lat ' ]}, {$ processed_value ['lng ' ]}" ;
655+ } elseif ( isset ( $ processed_value ['address ' ] ) ) {
656+ return $ processed_value ['address ' ];
657+ } elseif ( isset ( $ processed_value ['label ' ] ) ) {
658+ return $ processed_value ['label ' ];
659+ } elseif ( isset ( $ processed_value ['name ' ] ) ) {
660+ return $ processed_value ['name ' ];
661+ }
662+ // Fallback: return first non-empty value
663+ foreach ( $ processed_value as $ value ) {
664+ if ( !empty ( $ value ) ) {
665+ return $ value ;
666+ }
667+ }
668+ }
669+ break ;
670+
671+ case 'key_select ' :
672+ // Return the label for the selected key
673+ if ( isset ( $ field_config ['default ' ][$ processed_value ] ) ) {
674+ return $ field_config ['default ' ][$ processed_value ]['label ' ] ?? $ processed_value ;
675+ }
676+ break ;
677+
678+ case 'user_select ' :
679+ // Get user display name
680+ if ( is_numeric ( $ processed_value ) ) {
681+ $ user = get_user_by ( 'id ' , intval ( $ processed_value ) );
682+ return $ user ? $ user ->display_name : "User ID: {$ processed_value }" ;
683+ }
684+ break ;
685+
686+ case 'date ' :
687+ // Format date for display
688+ if ( is_numeric ( $ processed_value ) ) {
689+ return date ( 'Y-m-d ' , intval ( $ processed_value ) );
690+ }
691+ break ;
692+
693+ case 'boolean ' :
694+ // Convert boolean to Yes/No
695+ return $ processed_value ? 'Yes ' : 'No ' ;
696+ }
697+
698+ // For all other field types, return as string
699+ return is_array ( $ processed_value ) ? implode ( ', ' , $ processed_value ) : (string ) $ processed_value ;
700+ }
701+
598702 /**
599703 * Execute the actual import
600704 */
0 commit comments