WordPress.org

Make WordPress Core

Ticket #43547: 43547.diff

File 43547.diff, 3.7 KB (added by desrosj, 21 months ago)
  • src/wp-includes/default-filters.php

     
    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_filter( 'wp_privacy_personal_data_erasers', 'wp_register_comment_personal_data_eraser', 10 );
    333334add_action( 'sanitize_comment_cookies', 'sanitize_comment_cookies' );
    334335add_action( 'admin_print_scripts', 'print_emoji_detection_script' );
  • src/wp-includes/user.php

     
    31643164
    31653165        return $return;
    31663166}
     3167
     3168/**
     3169 * Registers the personal data exporter for users.
     3170 *
     3171 * @since 4.9.6
     3172 *
     3173 * @param array $exporters  An array of personal data exporters.
     3174 * @return array  An array of personal data exporters.
     3175 */
     3176function wp_register_user_personal_data_exporter( $exporters ) {
     3177        $exporters[] = array(
     3178                'exporter_friendly_name' => __( 'WordPress User' ),
     3179                'callback'               => 'wp_user_personal_data_exporter',
     3180        );
     3181
     3182        return $exporters;
     3183}
     3184
     3185/**
     3186 * Finds and exports personal data associated with an email address from the user and user_meta table.
     3187 *
     3188 * @since 4.9.6
     3189 *
     3190 * @param string $email_address  The users email address.
     3191 * @param int    $page
     3192 * @return array  An array of personal data.
     3193 */
     3194function wp_user_personal_data_exporter( $email_address, $page = 1 ) {
     3195        $email_address = trim( strtolower( $email_address ) );
     3196
     3197        $data_to_export = array();
     3198
     3199        $user = get_user_by( 'email', $email_address );
     3200        $user_meta = get_user_meta( $user->ID );
     3201
     3202        $user_prop_to_export = array(
     3203                'ID'              => __( 'User ID' ),
     3204                'user_login'      => __( 'User Login Name' ),
     3205                'user_nicename'   => __( 'User Nice Name' ),
     3206                'user_email'      => __( 'User Email' ),
     3207                'user_url'        => __( 'User URL' ),
     3208                'user_registered' => __( 'User Registered At'),
     3209                'user_status'     => __( 'User Status'),
     3210                'display_name'    => __( 'User Display Name'),
     3211                'nickname'        => __( 'User Nickname' ),
     3212                'first_name'      => __( 'User First Name' ),
     3213                'last_name'       => __( 'User Last Name' ),
     3214                'description'     => __( 'User Description' ),
     3215        );
     3216
     3217        $user_data_to_export = array();
     3218
     3219        foreach ( $user_prop_to_export as $key => $name ) {
     3220                $value = '';
     3221
     3222                switch ( $key ) {
     3223                        case 'ID':
     3224                        case 'user_login':
     3225                        case 'user_nicename':
     3226                        case 'user_email':
     3227                        case 'user_url':
     3228                        case 'user_registered':
     3229                        case 'display_name':
     3230                                $value = $user->data->$key;
     3231                                break;
     3232                        case 'user_status':
     3233                                if ( '0' == $user->data->user_status ) {
     3234                                        $value = __( 'Active' );
     3235                                } elseif ( '1' == $user->data->user_status ) {
     3236                                        $value = __( 'Inactive' );
     3237                                } else {
     3238                                        $value = $user->data->user_status;
     3239                                }
     3240                                break;
     3241                        case 'nickname':
     3242                        case 'first_name':
     3243                        case 'last_name':
     3244                        case 'description':
     3245                                $value = $user_meta[ $key ][0];
     3246                }
     3247
     3248                if ( ! empty( $value ) ) {
     3249                        $user_data_to_export[] = array(
     3250                                'name'  => $name,
     3251                                'value' => $value,
     3252                        );
     3253                }
     3254        }
     3255
     3256        $data_to_export[] = array(
     3257                'group_id'    => 'user',
     3258                'group_label' => __( 'User' ),
     3259                'item_id'     => "user-{$user->ID}",
     3260                'data'        => $user_data_to_export,
     3261        );
     3262
     3263        $done = true;
     3264
     3265        return array(
     3266                'data' => $data_to_export,
     3267                'done' => $done,
     3268        );
     3269}