From b93dfd3571fff236db62c729f4d688ded55db1d6 Mon Sep 17 00:00:00 2001 From: Andrew Ozz Date: Fri, 9 Mar 2018 15:04:33 +0000 Subject: [PATCH] Add Privacy Tools admin page under the Tools menu. Props allendav, xkon, azaozz. See #43435. Built from https://develop.svn.wordpress.org/trunk@42814 git-svn-id: http://core.svn.wordpress.org/trunk@42644 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-admin/about.php | 2 +- wp-admin/credits.php | 2 +- wp-admin/freedoms.php | 19 +++- wp-admin/menu.php | 1 + wp-admin/privacy.php | 199 ++++++++++++++++++++++++++++++++++++---- wp-includes/version.php | 2 +- 6 files changed, 200 insertions(+), 25 deletions(-) diff --git a/wp-admin/about.php b/wp-admin/about.php index f39b22e830..960cacf9e3 100644 --- a/wp-admin/about.php +++ b/wp-admin/about.php @@ -27,7 +27,7 @@ include( ABSPATH . 'wp-admin/admin-header.php' ); - +
diff --git a/wp-admin/credits.php b/wp-admin/credits.php index 451d2abf75..3ca2f9fdc7 100644 --- a/wp-admin/credits.php +++ b/wp-admin/credits.php @@ -28,7 +28,7 @@ include( ABSPATH . 'wp-admin/admin-header.php' ); - +
diff --git a/wp-admin/freedoms.php b/wp-admin/freedoms.php index e3fd29ff79..110959449d 100644 --- a/wp-admin/freedoms.php +++ b/wp-admin/freedoms.php @@ -14,6 +14,9 @@ $title = __( 'Freedoms' ); list( $display_version ) = explode( '-', get_bloginfo( 'version' ) ); include( ABSPATH . 'wp-admin/admin-header.php' ); + +$is_privacy_notice = isset( $_GET['privacy-notice'] ); + ?>
@@ -26,10 +29,21 @@ include( ABSPATH . 'wp-admin/admin-header.php' ); + + +
+

+ +

WordPress.org stats page.' ), 'https://wordpress.org/about/stats/' ); ?>

+ +

WordPress.org/about/privacy.' ), 'https://wordpress.org/about/privacy/' ); ?>

+
+ +

license, the GPL.' ), 'https://wordpress.org/about/license/' ); ?>

@@ -55,5 +69,6 @@ include( ABSPATH . 'wp-admin/admin-header.php' );

Free Software Foundation.' ); ?>

+
diff --git a/wp-admin/menu.php b/wp-admin/menu.php index 6c8edf4eb0..51d9cac1a8 100644 --- a/wp-admin/menu.php +++ b/wp-admin/menu.php @@ -256,6 +256,7 @@ $menu[75] = array( __( 'Tools' ), 'edit_posts', 'tools.php', $submenu['tools.php'][5] = array( __( 'Available Tools' ), 'edit_posts', 'tools.php' ); $submenu['tools.php'][10] = array( __( 'Import' ), 'import', 'import.php' ); $submenu['tools.php'][15] = array( __( 'Export' ), 'export', 'export.php' ); + $submenu['tools.php'][20] = array( __( 'Privacy' ), 'manage_options', 'privacy.php' ); if ( is_multisite() && ! is_main_site() ) { $submenu['tools.php'][25] = array( __( 'Delete Site' ), 'delete_site', 'ms-delete-site.php' ); } diff --git a/wp-admin/privacy.php b/wp-admin/privacy.php index c0fcbba87b..3630260f19 100644 --- a/wp-admin/privacy.php +++ b/wp-admin/privacy.php @@ -1,6 +1,6 @@ __( 'Privacy Policy' ), + 'post_status' => 'draft', + 'post_type' => 'page', + ), + true + ); + + if ( is_wp_error( $privacy_policy_page_id ) ) { + add_settings_error( + 'page_for_privacy_policy', + 'page_for_privacy_policy', + __( 'Unable to create privacy policy page.' ), + 'error' + ); + } else { + update_option( 'wp_page_for_privacy_policy', $privacy_policy_page_id ); + add_settings_error( + 'page_for_privacy_policy', + 'page_for_privacy_policy', + __( 'Privacy policy page created successfully.' ), + 'updated' + ); + } + } +} + +// If a privacy policy page ID is available, make sure the page actually exists. If not, display a warning +$privacy_policy_page_exists = false; +$privacy_policy_page_id = (int) get_option( 'wp_page_for_privacy_policy' ); + +if ( ! empty( $privacy_policy_page_id ) ) { + $privacy_policy_page = get_post( $privacy_policy_page_id ); + if ( ! $privacy_policy_page instanceof WP_Post ) { + add_settings_error( + 'page_for_privacy_policy', + 'page_for_privacy_policy', + __( 'The currently selected privacy policy page does not exist. Please create or select new page.' ), + 'warning' + ); + } else { + if ( 'trash' === $privacy_policy_page->post_status ) { + add_settings_error( + 'page_for_privacy_policy', + 'page_for_privacy_policy', + sprintf( + __( 'The currently selected privacy policy page is in the trash. Please create or select new privacy policy page or restore the current page.' ), + 'edit.php?post_status=trash&post_type=page' + ), + 'error' + ); + } else { + $privacy_policy_page_exists = true; + } + } +} + +$title = __( 'Privacy Tools' ); + +get_current_screen()->add_help_tab( array( + 'id' => 'privacy', + 'title' => __( 'Privacy' ), + 'content' => '

' . __( 'This page provides tools with which you can manage your user\'s personal data and site\'s privacy policy.' ) . '

', +) ); + +get_current_screen()->set_help_sidebar( + '

' . __( 'For more information:' ) . '

' . + '

' . __( 'Documentation on privacy' ) . '

' +); + +require_once( ABSPATH . 'wp-admin/admin-header.php' ); -include( ABSPATH . 'wp-admin/admin-header.php' ); ?> -
+
+

+ -

+

+ +

+ if ( $privacy_policy_page_exists ) { + $edit_href = add_query_arg( + array( + 'post' => $privacy_policy_page_id, + 'action' => 'edit', + ), + admin_url( 'post.php' ) + ); + $view_href = get_permalink( $privacy_policy_page_id ); -
+ ?> + + + + - - - - - + ?> + + + + + WordPress.org/about/privacy.' ), 'https://wordpress.org/about/privacy/' ); ?>

+ if ( ! $privacy_policy_page_exists ) { + ?> + + + + + +
+ Edit or view your privacy policy.' ), + $edit_href, + $view_href + ); + ?> +
+ -

+ if ( $privacy_policy_page_exists ) { + _e( 'Select another page for your privacy policy' ); + } else { + _e( 'Select an existing privacy policy page' ); + } -

WordPress.org stats page.' ), 'https://wordpress.org/about/stats/' ); ?>

+ ?> +
+
+ + +
+ + +
+ +
+
+
+ + + +
+
-
- +