| | 2953 | /** |
| | 2954 | * Notify the site administrator via email when a request is confirmed. |
| | 2955 | * |
| | 2956 | * Without this, the admin would have to manually check the site to see if any |
| | 2957 | * action was needed on their part yet. |
| | 2958 | * |
| | 2959 | * @since 4.9.6 |
| | 2960 | * |
| | 2961 | * @param int $request_id The ID of the request. |
| | 2962 | */ |
| | 2963 | function _wp_privacy_send_request_confirmation_notification( $request_id ) { |
| | 2964 | $request_data = wp_get_user_request_data( $request_id ); |
| | 2965 | |
| | 2966 | if ( ! is_a( $request_data, 'WP_User_Request' ) || 'request-confirmed' !== $request_data->status ) { |
| | 2967 | return; |
| | 2968 | } |
| | 2969 | |
| | 2970 | $subject = sprintf( |
| | 2971 | /* translators: %s Site name. */ |
| | 2972 | __( '[%s] Action Confirmed' ), |
| | 2973 | wp_specialchars_decode( get_option( 'blogname' ), ENT_QUOTES ) |
| | 2974 | ); |
| | 2975 | |
| | 2976 | $manage_url = add_query_arg( 'page', $request_data->action_name, admin_url( 'tools.php' ) ); |
| | 2977 | |
| | 2978 | /** |
| | 2979 | * Filters the recipient of the data request confirmation notification. |
| | 2980 | * |
| | 2981 | * In a Multisite environment, this will default to the email address of the |
| | 2982 | * network admin because, by default, single site admins do not have the |
| | 2983 | * capabilities required to process requests. Some networks may wish to |
| | 2984 | * delegate those capabilities to a single-site admin, or a dedicated person |
| | 2985 | * responsible for managing privacy requests. |
| | 2986 | * |
| | 2987 | * @since 4.9.6 |
| | 2988 | * |
| | 2989 | * @param string $admin_email The email address of the notification recipient. |
| | 2990 | * @param WP_User_Request $request_data The request that is initiating the notification. |
| | 2991 | */ |
| | 2992 | $admin_email = apply_filters( 'user_request_confirmed_email_to', get_site_option( 'admin_email' ), $request_data ); |
| | 2993 | |
| | 2994 | $email_data = array( |
| | 2995 | 'request' => $request_data, |
| | 2996 | 'user_email' => $request_data->email, |
| | 2997 | 'description' => wp_user_request_action_description( $request_data->action_name ), |
| | 2998 | 'manage_url' => $manage_url, |
| | 2999 | 'sitename' => get_option( 'blogname' ), |
| | 3000 | 'siteurl' => home_url(), |
| | 3001 | 'admin_email' => $admin_email, |
| | 3002 | ); |
| | 3003 | |
| | 3004 | /* translators: Do not translate SITENAME, USER_EMAIL, DESCRIPTION, MANAGE_URL, SITEURL; those are placeholders. */ |
| | 3005 | $email_text = __( |
| | 3006 | 'Howdy, |
| | 3007 | |
| | 3008 | A user data privacy request has been confirmed on ###SITENAME###: |
| | 3009 | |
| | 3010 | User: ###USER_EMAIL### |
| | 3011 | Request: ###DESCRIPTION### |
| | 3012 | |
| | 3013 | You can view and manage these data privacy requests here: |
| | 3014 | |
| | 3015 | ###MANAGE_URL### |
| | 3016 | |
| | 3017 | Regards, |
| | 3018 | All at ###SITENAME### |
| | 3019 | ###SITEURL###' |
| | 3020 | ); |
| | 3021 | |
| | 3022 | /** |
| | 3023 | * Filters the body of the user request confirmation email. |
| | 3024 | * |
| | 3025 | * The email is sent to an administrator when an user request is confirmed. |
| | 3026 | * The following strings have a special meaning and will get replaced dynamically: |
| | 3027 | * |
| | 3028 | * ###SITENAME### The name of the site. |
| | 3029 | * ###USER_EMAIL### The user email for the request. |
| | 3030 | * ###DESCRIPTION### Description of the action being performed so the user knows what the email is for. |
| | 3031 | * ###MANAGE_URL### The URL to manage requests. |
| | 3032 | * ###SITEURL### The URL to the site. |
| | 3033 | * |
| | 3034 | * @since 4.9.6 |
| | 3035 | * |
| | 3036 | * @param string $email_text Text in the email. |
| | 3037 | * @param array $email_data { |
| | 3038 | * Data relating to the account action email. |
| | 3039 | * |
| | 3040 | * @type WP_User_Request $request User request object. |
| | 3041 | * @type string $user_email The email address confirming a request |
| | 3042 | * @type string $description Description of the action being performed so the user knows what the email is for. |
| | 3043 | * @type string $manage_url The link to click manage privacy requests of this type. |
| | 3044 | * @type string $sitename The site name sending the mail. |
| | 3045 | * @type string $siteurl The site URL sending the mail. |
| | 3046 | * } |
| | 3047 | */ |
| | 3048 | $content = apply_filters( 'user_confirmed_action_email_content', $email_text, $email_data ); |
| | 3049 | |
| | 3050 | $content = str_replace( '###SITENAME###', wp_specialchars_decode( $email_data['sitename'], ENT_QUOTES ), $content ); |
| | 3051 | $content = str_replace( '###USER_EMAIL###', $email_data['user_email'], $content ); |
| | 3052 | $content = str_replace( '###DESCRIPTION###', $email_data['description'], $content ); |
| | 3053 | $content = str_replace( '###MANAGE_URL###', esc_url_raw( $email_data['manage_url'] ), $content ); |
| | 3054 | $content = str_replace( '###SITEURL###', esc_url_raw( $email_data['siteurl'] ), $content ); |
| | 3055 | |
| | 3056 | wp_mail( $email_data['admin_email'], $subject, $content ); |
| | 3057 | } |
| | 3058 | |