Make WordPress Core

Ticket #43883: 43883.diff

File 43883.diff, 4.0 KB (added by allendav, 7 years ago)

Add to the export report links to all the user's attachments

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

     
    19761976                $group_html .= '<tbody>';
    19771977
    19781978                foreach ( (array) $group_item_data as $group_item_datum ) {
     1979                        $value = $group_item_datum['value'];
     1980                        // If it looks like a link, make it a link
     1981                        if ( FALSE === strpos( $value, ' ' ) ) {
     1982                                if ( ( 0 === strpos( $value, 'http://' ) ) || ( 0 === strpos( $value, 'https://' ) ) ) {
     1983                                        $value = '<a href="' . esc_url( $value ) . '" target="_blank">' . esc_html( $value ) . '</a>';
     1984                                }
     1985                        }
     1986
    19791987                        $group_html .= '<tr>';
    19801988                        $group_html .= '<th>' . esc_html( $group_item_datum['name'] ) . '</th>';
    1981                         $group_html .= '<td>' . wp_kses( $group_item_datum['value'], $allowed_tags, $allowed_protocols ) . '</td>';
     1989                        $group_html .= '<td>' . wp_kses( $value, $allowed_tags, $allowed_protocols ) . '</td>';
    19821990                        $group_html .= '</tr>';
    19831991                }
    19841992
  • src/wp-includes/default-filters.php

     
    351351add_action( 'user_request_action_confirmed', '_wp_privacy_account_request_confirmed' );
    352352add_filter( 'user_request_action_confirmed_message', '_wp_privacy_account_request_confirmed_message', 10, 2 );
    353353add_filter( 'wp_privacy_personal_data_exporters', 'wp_register_comment_personal_data_exporter' );
     354add_filter( 'wp_privacy_personal_data_exporters', 'wp_register_media_personal_data_exporter' );
    354355add_filter( 'wp_privacy_personal_data_erasers', 'wp_register_comment_personal_data_eraser' );
    355356add_action( 'init', 'wp_schedule_delete_old_privacy_export_files' );
    356357add_action( 'wp_privacy_delete_old_export_files', 'wp_privacy_delete_old_export_files' );
  • src/wp-includes/media.php

     
    40934093
    40944094        return array( $mediaelement, $wpmediaelement );
    40954095}
     4096
     4097/**
     4098 * Registers the personal data exporter for media
     4099 *
     4100 * @param array   $exporters   An array of personal data exporters.
     4101 * @return array  An array of personal data exporters.
     4102 */
     4103function wp_register_media_personal_data_exporter( $exporters ) {
     4104        $exporters[] = array(
     4105                'exporter_friendly_name' => __( 'WordPress Media' ),
     4106                'callback'               => 'wp_media_personal_data_exporter',
     4107        );
     4108
     4109        return $exporters;
     4110}
     4111
     4112/**
     4113 * Finds and exports attachments associated with an email address.
     4114 *
     4115 * @since 4.9.6
     4116 *
     4117 * @param  string $email_address The attachment owner email address.
     4118 * @param  int    $page          Attachment page.
     4119 * @return array  $return        An array of personal data.
     4120 */
     4121function wp_media_personal_data_exporter( $email_address, $page = 1 ) {
     4122        // Limit us to 50 attachments at a time to avoid timing out.
     4123        $number = 50;
     4124        $page   = (int) $page;
     4125
     4126        $data_to_export = array();
     4127
     4128        $user = get_user_by( 'email' , $email_address );
     4129        if ( false === $user ) {
     4130                return array(
     4131                        'data' => $data_to_export,
     4132                        'done' => true,
     4133                );
     4134        }
     4135
     4136        $post_query = new WP_Query(
     4137                array(
     4138                        'author'         => $user->ID,
     4139                        'posts_per_page' => $number,
     4140                        'paged'          => $page,
     4141                        'post_type'      => 'attachment',
     4142                        'post_status'    => 'any',
     4143                        'orderby'        => 'ID',
     4144                        'order'          => 'ASC',
     4145                )
     4146        );
     4147
     4148        foreach ( (array) $post_query->posts as $post ) {
     4149                $attachment_url = wp_get_attachment_url( $post->ID );
     4150
     4151                if ( $attachment_url ) {
     4152                        $post_data_to_export = array(
     4153                                array( 'name'  => __( 'URL' ), 'value' => $attachment_url ),
     4154                        );
     4155
     4156                        $data_to_export[] = array(
     4157                                'group_id'    => 'media',
     4158                                'group_label' => __( 'Media' ),
     4159                                'item_id'     => "post-{$post->ID}",
     4160                                'data'        => $post_data_to_export,
     4161                        );
     4162                }
     4163        }
     4164
     4165        $done = $post_query->max_num_pages <= $page;
     4166
     4167        return array(
     4168                'data' => $data_to_export,
     4169                'done' => $done,
     4170        );
     4171}