WordPress.org

Make WordPress Core

Ticket #43547: 43440.patch

File 43440.patch, 4.4 KB (added by TZ Media, 2 years ago)

Exporter for user and user_meta

  • src/wp-includes/default-filters.php

    IDEA additional info:
    Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
    <+>UTF-8
     
    329329add_action( 'do_robots', 'do_robots' );
    330330add_action( 'set_comment_cookies', 'wp_set_comment_cookies', 10, 3 );
    331331add_filter( 'wp_privacy_personal_data_exporters', 'wp_register_comment_personal_data_exporter', 10 );
     332add_filter( 'wp_privacy_personal_data_exporters', 'wp_register_user_personal_data_exporter', 10);
    332333add_action( 'sanitize_comment_cookies', 'sanitize_comment_cookies' );
    333334add_action( 'admin_print_scripts', 'print_emoji_detection_script' );
    334335add_action( 'admin_print_scripts', 'print_head_scripts', 20 );
  • src/wp-includes/user.php

    IDEA additional info:
    Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
    <+>UTF-8
     
    30963096        }
    30973097
    30983098        return $return;
     3099}
     3100
     3101/**
     3102 * Registers the personal data exporter for users.
     3103 *
     3104 * @param array   $exporters   An array of personal data exporters.
     3105 * @return array  An array of personal data exporters.
     3106 */
     3107function wp_register_user_personal_data_exporter( $exporters ) {
     3108    $exporters[] = array(
     3109        'exporter_friendly_name' => __( 'WordPress User' ),
     3110        'callback'               => 'wp_user_personal_data_exporter',
     3111    );
     3112
     3113    return $exporters;
     3114}
     3115
     3116/**
     3117 * Finds and exports personal data associated with an email address from the user and user_meta table.
     3118 *
     3119 * @param string  $email_address The users email address.
     3120 * @param int     $page
     3121 * @return array  An array of personal data.
     3122 */
     3123function wp_user_personal_data_exporter( $email_address, $page = 1 ) {
     3124    $email_address = trim( strtolower( $email_address ) );
     3125
     3126    $data_to_export = array();
     3127
     3128    $user = get_user_by( 'email', $email_address );
     3129    $user_meta = get_user_meta( $user->ID );
     3130
     3131    $user_prop_to_export = array(
     3132        'ID'                => __( 'User ID' ),
     3133        'user_login'        => __( 'User Login Name' ),
     3134//        'user_pass'         => __( 'User Password (hashed)'),
     3135        'user_nicename'     => __( 'User Nice Name' ),
     3136        'user_email'        => __( 'User Email' ),
     3137        'user_url'          => __( 'User URL' ),
     3138        'user_registered'   => __( 'User Registered At'),
     3139        'user_status'       => __( 'User Status'),
     3140        'display_name'      => __( 'User Display Name'),
     3141        'nickname'          => __( 'User Nickname' ),
     3142        'first_name'        => __( 'User First Name' ),
     3143        'last_name'         => __( 'User Last Name' ),
     3144        'description'       => __( 'User Description' ),
     3145    );
     3146
     3147    $user_data_to_export = array();
     3148
     3149    foreach ( $user_prop_to_export as $key => $name ) {
     3150        $value = '';
     3151
     3152        switch ( $key ) {
     3153            case 'ID':
     3154            case 'user_login':
     3155//            case 'user_pass':
     3156            case 'user_nicename':
     3157            case 'user_email':
     3158            case 'user_url':
     3159            case 'user_registered':
     3160            case 'display_name':
     3161                $value = $user->data->$key;
     3162                break;
     3163            case 'user_status':
     3164                if ($user->data->user_status == '0') {
     3165                    $value = __( 'Active' );
     3166                } elseif ($user->data->user_status = '1' ) {
     3167                    $value = __( 'Inactive' );
     3168                } else {
     3169                    $value = $user->data->user_status;
     3170                }
     3171                break;
     3172                //case ''
     3173            case 'nickname':
     3174            case 'first_name':
     3175            case 'last_name':
     3176            case 'description':
     3177                $value = $user_meta[ $key ][0];
     3178        }
     3179
     3180        if ( ! empty( $value ) ) {
     3181            $user_data_to_export[] = array( 'name' => $name, 'value' => $value);
     3182        }
     3183
     3184    }
     3185
     3186    $data_to_export[] = array(
     3187        'group_id' => 'user',
     3188        'group_label' => __( 'User' ),
     3189        'item_id' => "user-{$user->ID}",
     3190        'data' => $user_data_to_export,
     3191    );
     3192
     3193    $done = true;
     3194
     3195    return array(
     3196        'data' => $data_to_export,
     3197        'done' => $done,
     3198    );
    30993199}
     3200 No newline at end of file