wp_ajax_wp_privacy_export_personal_data() – Ajax handler for exporting a user’s personal data.

You appear to be a bot. Output may be restricted

Description

Ajax handler for exporting a user's personal data.

Usage

wp_ajax_wp_privacy_export_personal_data();

Parameters

Returns

void

Source

File name: wordpress/wp-admin/includes/ajax-actions.php
Lines:

1 to 100 of 184
function wp_ajax_wp_privacy_export_personal_data() {

  if ( empty( $_POST['id'] ) ) {
    wp_send_json_error( __( 'Missing request ID.' ) );
  }

  $request_id = (int) $_POST['id'];

  if ( $request_id < 1 ) {
    wp_send_json_error( __( 'Invalid request ID.' ) );
  }

  if ( ! current_user_can( 'export_others_personal_data' ) ) {
    wp_send_json_error( __( 'Sorry, you are not allowed to perform this action.' ) );
  }

  check_ajax_referer( 'wp-privacy-export-personal-data-' . $request_id, 'security' );

  // Get the request.
  $request = wp_get_user_request( $request_id );

  if ( ! $request || 'export_personal_data' !== $request->action_name ) {
    wp_send_json_error( __( 'Invalid request type.' ) );
  }

  $email_address = $request->email;
  if ( ! is_email( $email_address ) ) {
    wp_send_json_error( __( 'A valid email address must be given.' ) );
  }

  if ( ! isset( $_POST['exporter'] ) ) {
    wp_send_json_error( __( 'Missing exporter index.' ) );
  }

  $exporter_index = (int) $_POST['exporter'];

  if ( ! isset( $_POST['page'] ) ) {
    wp_send_json_error( __( 'Missing page index.' ) );
  }

  $page = (int) $_POST['page'];

  $send_as_email = isset( $_POST['sendAsEmail'] ) ? ( 'true' === $_POST['sendAsEmail'] ) : false;

  
/**
 * Filters the array of exporter callbacks.
 *
 * @since 4.9.6
 *
 * @param array $args {
 *     An array of callable exporters of personal data. Default empty array.
 *
 *     @type array ...$0 {
 *         Array of personal data exporters.
 *
 *         @type callable $callback               Callable exporter function that accepts an
 *                                                email address and a page and returns an array
 *                                                of name => value pairs of personal data.
 *         @type string   $exporter_friendly_name Translated user facing friendly name for the
 *                                                exporter.
 *     }
 * }
 */
  $exporters = apply_filters( 'wp_privacy_personal_data_exporters', array() );

  if ( ! is_array( $exporters ) ) {
    wp_send_json_error( __( 'An exporter has improperly used the registration filter.' ) );
  }

  // Do we have any registered exporters?
  if ( 0 < count( $exporters ) ) {
    if ( $exporter_index < 1 ) {
      wp_send_json_error( __( 'Exporter index cannot be negative.' ) );
    }

    if ( $exporter_index > count( $exporters ) ) {
      wp_send_json_error( __( 'Exporter index is out of range.' ) );
    }

    if ( $page < 1 ) {
      wp_send_json_error( __( 'Page index cannot be less than one.' ) );
    }

    $exporter_keys = array_keys( $exporters );
    $exporter_key  = $exporter_keys[ $exporter_index - 1 ];
    $exporter      = $exporters[ $exporter_key ];

    if ( ! is_array( $exporter ) ) {
      wp_send_json_error(
        /* translators: %s: Exporter array index. */
        sprintf( __( 'Expected an array describing the exporter at index %s.' ), $exporter_key )
      );
    }

    if ( ! array_key_exists( 'exporter_friendly_name', $exporter ) ) {
      wp_send_json_error(
        /* translators: %s: Exporter array index. */
        sprintf( __( 'Exporter array at index %s does not include a friendly name.' ), $exporter_key )
      );
    }
 

 View on GitHub View on Trac