WordPress.org

Make WordPress Core


Ignore:
Timestamp:
05/01/2018 01:58:02 PM (3 years ago)
Author:
azaozz
Message:

Privacy: add user information to the personal data export file.

Props TZ-Media, desrosj.
See #43547.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/user.php

    r43014 r43055  
    28272827
    28282828/**
     2829 * Registers the personal data exporter for users.
     2830 *
     2831 * @since 4.9.6
     2832 *
     2833 * @param array $exporters  An array of personal data exporters.
     2834 * @return array An array of personal data exporters.
     2835 */
     2836function wp_register_user_personal_data_exporter( $exporters ) {
     2837    $exporters[] = array(
     2838        'exporter_friendly_name' => __( 'WordPress User' ),
     2839        'callback'               => 'wp_user_personal_data_exporter',
     2840    );
     2841
     2842    return $exporters;
     2843}
     2844
     2845/**
     2846 * Finds and exports personal data associated with an email address from the user and user_meta table.
     2847 *
     2848 * @since 4.9.6
     2849 *
     2850 * @param string $email_address  The users email address.
     2851 * @return array An array of personal data.
     2852 */
     2853function wp_user_personal_data_exporter( $email_address ) {
     2854    $email_address = trim( $email_address );
     2855
     2856    $data_to_export = array();
     2857
     2858    $user = get_user_by( 'email', $email_address );
     2859
     2860    if ( ! $user ) {
     2861        return array(
     2862            'data' => array(),
     2863            'done' => true,
     2864        );
     2865    }
     2866
     2867    $user_meta = get_user_meta( $user->ID );
     2868
     2869    $user_prop_to_export = array(
     2870        'ID'              => __( 'User ID' ),
     2871        'user_login'      => __( 'User Login Name' ),
     2872        'user_nicename'   => __( 'User Nice Name' ),
     2873        'user_email'      => __( 'User Email' ),
     2874        'user_url'        => __( 'User URL' ),
     2875        'user_registered' => __( 'User Registration Date' ),
     2876        'display_name'    => __( 'User Display Name' ),
     2877        'nickname'        => __( 'User Nickname' ),
     2878        'first_name'      => __( 'User First Name' ),
     2879        'last_name'       => __( 'User Last Name' ),
     2880        'description'     => __( 'User Description' ),
     2881    );
     2882
     2883    $user_data_to_export = array();
     2884
     2885    foreach ( $user_prop_to_export as $key => $name ) {
     2886        $value = '';
     2887
     2888        switch ( $key ) {
     2889            case 'ID':
     2890            case 'user_login':
     2891            case 'user_nicename':
     2892            case 'user_email':
     2893            case 'user_url':
     2894            case 'user_registered':
     2895            case 'display_name':
     2896                $value = $user->data->$key;
     2897                break;
     2898            case 'nickname':
     2899            case 'first_name':
     2900            case 'last_name':
     2901            case 'description':
     2902                $value = $user_meta[ $key ][0];
     2903                break;
     2904        }
     2905
     2906        if ( ! empty( $value ) ) {
     2907            $user_data_to_export[] = array(
     2908                'name'  => $name,
     2909                'value' => $value,
     2910            );
     2911        }
     2912    }
     2913
     2914    $data_to_export[] = array(
     2915        'group_id'    => 'user',
     2916        'group_label' => __( 'User' ),
     2917        'item_id'     => "user-{$user->ID}",
     2918        'data'        => $user_data_to_export,
     2919    );
     2920
     2921    return array(
     2922        'data' => $data_to_export,
     2923        'done' => true,
     2924    );
     2925}
     2926
     2927/**
    28292928 * Update log when privacy request is confirmed.
    28302929 *
Note: See TracChangeset for help on using the changeset viewer.