diff -r 7b1b88e27a20 -r 48c4eec2b7e6 wp/wp-admin/includes/privacy-tools.php --- a/wp/wp-admin/includes/privacy-tools.php Thu Sep 29 08:06:27 2022 +0200 +++ b/wp/wp-admin/includes/privacy-tools.php Fri Sep 05 18:40:08 2025 +0200 @@ -275,7 +275,7 @@ foreach ( (array) $group_item_data as $group_item_datum ) { $value = $group_item_datum['value']; // If it looks like a link, make it a link. - if ( false === strpos( $value, ' ' ) && ( 0 === strpos( $value, 'http://' ) || 0 === strpos( $value, 'https://' ) ) ) { + if ( ! str_contains( $value, ' ' ) && ( str_starts_with( $value, 'http://' ) || str_starts_with( $value, 'https://' ) ) ) { $value = '' . esc_html( $value ) . ''; } @@ -535,7 +535,7 @@ wp_delete_file( $archive_pathname ); } - $zip = new ZipArchive; + $zip = new ZipArchive(); if ( true === $zip->open( $archive_pathname, ZipArchive::CREATE ) ) { if ( ! $zip->addFile( $json_report_pathname, 'export.json' ) ) { $error = __( 'Unable to archive the personal data export file (JSON format).' ); @@ -595,13 +595,11 @@ // Localize message content for user; fallback to site default for visitors. if ( ! empty( $request->user_id ) ) { - $locale = get_user_locale( $request->user_id ); + $switched_locale = switch_to_user_locale( $request->user_id ); } else { - $locale = get_locale(); + $switched_locale = switch_to_locale( get_locale() ); } - $switched_locale = switch_to_locale( $locale ); - /** This filter is documented in wp-includes/functions.php */ $expiration = apply_filters( 'wp_privacy_export_expiration', 3 * DAY_IN_SECONDS ); $expiration_date = date_i18n( get_option( 'date_format' ), time() + $expiration ); @@ -706,10 +704,10 @@ $content = apply_filters( 'wp_privacy_personal_data_email_content', $email_text, $request_id, $email_data ); $content = str_replace( '###EXPIRATION###', $expiration_date, $content ); - $content = str_replace( '###LINK###', esc_url_raw( $export_file_url ), $content ); + $content = str_replace( '###LINK###', sanitize_url( $export_file_url ), $content ); $content = str_replace( '###EMAIL###', $request_email, $content ); $content = str_replace( '###SITENAME###', $site_name, $content ); - $content = str_replace( '###SITEURL###', esc_url_raw( $site_url ), $content ); + $content = str_replace( '###SITEURL###', sanitize_url( $site_url ), $content ); $headers = '';