WordPress.org

Make WordPress Core

Ticket #43890: 43890.2.diff

File 43890.2.diff, 7.8 KB (added by xkon, 17 months ago)

refresh

  • src/wp-admin/includes/user.php

    diff --git a/src/wp-admin/includes/user.php b/src/wp-admin/includes/user.php
    index 82d792fb3c..fb5352305a 100644
    a b function _wp_privacy_completed_request( $request_id ) { 
    630630
    631631        update_post_meta( $request_id, '_wp_user_request_completed_timestamp', time() );
    632632
     633        $status = 'request-skipped';
     634
     635        if ( get_post_status( $request_id ) === $status ) {
     636                return;
     637        }
     638
    633639        $result = wp_update_post(
    634640                array(
    635641                        'ID'          => $request_id,
    function _wp_personal_data_handle_actions() { 
    687693                                $action_type               = sanitize_text_field( wp_unslash( $_POST['type_of_action'] ) );
    688694                                $username_or_email_address = sanitize_text_field( wp_unslash( $_POST['username_or_email_for_privacy_request'] ) );
    689695                                $email_address             = '';
     696                                $request_confirmation      = sanitize_text_field( $_POST['request_confirmation'] );
    690697
    691698                                if ( ! in_array( $action_type, _wp_privacy_action_request_types(), true ) ) {
    692699                                        add_settings_error(
    function _wp_personal_data_handle_actions() { 
    717724                                        break;
    718725                                }
    719726
    720                                 $request_id = wp_create_user_request( $email_address, $action_type );
     727                                $request_id = wp_create_user_request( $email_address, $action_type, $request_confirmation );
    721728
    722729                                if ( is_wp_error( $request_id ) ) {
    723730                                        add_settings_error(
    function _wp_personal_data_handle_actions() { 
    737744                                        break;
    738745                                }
    739746
    740                                 wp_send_user_request( $request_id );
     747                                if ( 'yes' === $request_confirmation ) {
     748                                        wp_send_user_request( $request_id );
     749                                }
    741750
    742751                                add_settings_error(
    743752                                        'username_or_email_for_privacy_request',
    function _wp_personal_data_export_page() { 
    837846                        <div class="wp-privacy-request-form-field">
    838847                                <label for="username_or_email_for_privacy_request"><?php esc_html_e( 'Username or email address' ); ?></label>
    839848                                <input type="text" required class="regular-text" id="username_or_email_for_privacy_request" name="username_or_email_for_privacy_request" />
    840                                 <?php submit_button( __( 'Send Request' ), 'secondary', 'submit', false ); ?>
     849                                <select name="request_confirmation">
     850                                        <option value="yes"><?php _e( 'With Confirmation' ); ?></option>
     851                                        <option value="no"><?php _e( 'Without Confirmation' ); ?></option>
     852                                </select>
     853                                <?php submit_button( __( 'Add Request' ), 'secondary', 'submit', false ); ?>
    841854                        </div>
    842855                        <?php wp_nonce_field( 'personal-data-request' ); ?>
    843856                        <input type="hidden" name="action" value="add_export_personal_data_request" />
    function _wp_personal_data_removal_page() { 
    921934                        <div class="wp-privacy-request-form-field">
    922935                                <label for="username_or_email_for_privacy_request"><?php esc_html_e( 'Username or email address' ); ?></label>
    923936                                <input type="text" required class="regular-text" id="username_or_email_for_privacy_request" name="username_or_email_for_privacy_request" />
    924                                 <?php submit_button( __( 'Send Request' ), 'secondary', 'submit', false ); ?>
     937                                <select name="request_confirmation">
     938                                        <option value="yes"><?php _e( 'With Confirmation' ); ?></option>
     939                                        <option value="no"><?php _e( 'Without Confirmation' ); ?></option>
     940                                </select>
     941                                <?php submit_button( __( 'Add Request' ), 'secondary', 'submit', false ); ?>
    925942                        </div>
    926943                        <?php wp_nonce_field( 'personal-data-request' ); ?>
    927944                        <input type="hidden" name="action" value="add_remove_personal_data_request" />
    abstract class WP_Privacy_Requests_Table extends WP_List_Table { 
    13841401                        case 'request-completed':
    13851402                                $timestamp = $item->completed_timestamp;
    13861403                                break;
     1404                        case 'request-skipped':
     1405                                $timestamp = $item->completed_timestamp;
     1406                                break;
    13871407                }
    13881408
    13891409                echo '<span class="status-label status-' . esc_attr( $status ) . '">';
    class WP_Privacy_Data_Export_Requests_Table extends WP_Privacy_Requests_Table { 
    15561576                                esc_html_e( 'Waiting for confirmation' );
    15571577                                break;
    15581578                        case 'request-confirmed':
     1579                        case 'request-skipped':
    15591580                                /** This filter is documented in wp-admin/includes/ajax-actions.php */
    15601581                                $exporters       = apply_filters( 'wp_privacy_personal_data_exporters', array() );
    15611582                                $exporters_count = count( $exporters );
    class WP_Privacy_Data_Removal_Requests_Table extends WP_Privacy_Requests_Table { 
    16781699                                esc_html_e( 'Waiting for confirmation' );
    16791700                                break;
    16801701                        case 'request-confirmed':
     1702                        case 'request-skipped':
    16811703                                /** This filter is documented in wp-admin/includes/ajax-actions.php */
    16821704                                $erasers       = apply_filters( 'wp_privacy_personal_data_erasers', array() );
    16831705                                $erasers_count = count( $erasers );
  • src/wp-includes/post.php

    diff --git a/src/wp-includes/post.php b/src/wp-includes/post.php
    index eb69ac727b..38591e4071 100644
    a b function create_initial_post_types() { 
    429429                        'exclude_from_search' => false,
    430430                )
    431431        );
     432
     433        register_post_status(
     434                'request-skipped',
     435                array(
     436                        'label'               => _x( 'Confirmation Skipped', 'request status' ),
     437                        'internal'            => true,
     438                        '_builtin'            => true, /* internal use only. */
     439                        'exclude_from_search' => false,
     440                )
     441        );
    432442}
    433443
    434444/**
  • src/wp-includes/user.php

    diff --git a/src/wp-includes/user.php b/src/wp-includes/user.php
    index 752b92dcde..1e49d1e1f3 100644
    a b function _wp_privacy_account_request_confirmed_message( $request_id ) { 
    33013301 *
    33023302 * @since 4.9.6
    33033303 *
    3304  * @param string $email_address User email address. This can be the address of a registered or non-registered user.
    3305  * @param string $action_name   Name of the action that is being confirmed. Required.
    3306  * @param array  $request_data  Misc data you want to send with the verification request and pass to the actions once the request is confirmed.
    3307  * @return int|WP_Error Returns the request ID if successful, or a WP_Error object on failure.
     3304 * @param string $email_address        User email address. This can be the address of a registered or non-registered user.
     3305 * @param string $action_name          Name of the action that is being confirmed. Required.
     3306 * @param string $request_confirmation Option (yes/no) if the admins wants to send a confirmation e-mail to the user.
     3307 * @param array  $request_data         Misc data you want to send with the verification request and pass to the actions once the request is confirmed.
     3308 * @return int|WP_Error                Returns the request ID if successful, or a WP_Error object on failure.
    33083309 */
    3309 function wp_create_user_request( $email_address = '', $action_name = '', $request_data = array() ) {
    3310         $email_address = sanitize_email( $email_address );
    3311         $action_name   = sanitize_key( $action_name );
     3310function wp_create_user_request( $email_address = '', $action_name = '', $request_confirmation = '', $request_data = array() ) {
     3311        $email_address        = sanitize_email( $email_address );
     3312        $action_name          = sanitize_key( $action_name );
     3313        $request_confirmation = sanitize_text_field( $request_confirmation );
    33123314
    33133315        if ( ! is_email( $email_address ) ) {
    33143316                return new WP_Error( 'invalid_email', __( 'Invalid email address.' ) );
    function wp_create_user_request( $email_address = '', $action_name = '', $reques 
    33393341                return new WP_Error( 'duplicate_request', __( 'An incomplete request for this email address already exists.' ) );
    33403342        }
    33413343
     3344        if ( 'yes' === $request_confirmation ) {
     3345                $status = 'request-pending';
     3346        } else {
     3347                $status = 'request-skipped';
     3348        }
     3349
    33423350        $request_id = wp_insert_post(
    33433351                array(
    33443352                        'post_author'   => $user_id,
    33453353                        'post_name'     => $action_name,
    33463354                        'post_title'    => $email_address,
    33473355                        'post_content'  => wp_json_encode( $request_data ),
    3348                         'post_status'   => 'request-pending',
     3356                        'post_status'   => $status,
    33493357                        'post_type'     => 'user_request',
    33503358                        'post_date'     => current_time( 'mysql', false ),
    33513359                        'post_date_gmt' => current_time( 'mysql', true ),