Patch to replace CSV creation with PHP's own fputcsv.
-
As I said in my previous ticket there are problems with none scalar values in user meta. This fixes that and also switches over to PHP’s own CSV creation tool that does a better job of handling weird content. I made these changes to my own instance of this plug-in and just feeding them back to you as they may help you.
$headers = array(); foreach ( $fields as $key => $field ) { if ( in_array( $field, $exclude_data ) ) unset( $fields[$key] ); else { // Due to a bug with Excel and CSVs that have ID as the first 2 bytes we change that to lower case to bypass the bug. :/ $headers[] = $field == 'ID' && $key == 0 ? strtolower( $field ) : $field; } } // Open the file resource $f = @fopen( 'php://output', 'w' ); // Very unlikely but just in case. if ( !is_resource( $f ) ) { _e( 'Error creating output', 'export-users-to-csv' ); exit; } // Write the header row fputcsv( $f, $headers ); // Step over the user data foreach ( $users as $user ) { $data = array(); foreach ( $fields as $field ) { $data[] = isset( $user->{$field} ) ? maybe_serialize( $user->{$field} ) : ''; } fputcsv( $f, $data ); } // Close the file resource fclose( $f ); exit;
- The topic ‘Patch to replace CSV creation with PHP's own fputcsv.’ is closed to new replies.