Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93

Warning: Undefined array key "page_file_edit_line" in /home/sportsfever/public_html/filemanger/edit_text_line.php on line 32
/home/sportsfe.../httpdocs/clone/wp-inclu...
File: user.php
* @since 5.4.0
[4500] Fix | Delete
* @deprecated 5.8.0 Use {@see 'user_erasure_fulfillment_email_headers'} instead.
[4501] Fix | Delete
*
[4502] Fix | Delete
* @param string|array $headers The email headers.
[4503] Fix | Delete
* @param string $subject The email subject.
[4504] Fix | Delete
* @param string $content The email content.
[4505] Fix | Delete
* @param int $request_id The request ID.
[4506] Fix | Delete
* @param array $email_data {
[4507] Fix | Delete
* Data relating to the account action email.
[4508] Fix | Delete
*
[4509] Fix | Delete
* @type WP_User_Request $request User request object.
[4510] Fix | Delete
* @type string $message_recipient The address that the email will be sent to. Defaults
[4511] Fix | Delete
* to the value of `$request->email`, but can be changed
[4512] Fix | Delete
* by the `user_erasure_fulfillment_email_to` filter.
[4513] Fix | Delete
* @type string $privacy_policy_url Privacy policy URL.
[4514] Fix | Delete
* @type string $sitename The site name sending the mail.
[4515] Fix | Delete
* @type string $siteurl The site URL sending the mail.
[4516] Fix | Delete
* }
[4517] Fix | Delete
*/
[4518] Fix | Delete
$headers = apply_filters_deprecated(
[4519] Fix | Delete
'user_erasure_complete_email_headers',
[4520] Fix | Delete
array( $headers, $subject, $content, $request_id, $email_data ),
[4521] Fix | Delete
'5.8.0',
[4522] Fix | Delete
'user_erasure_fulfillment_email_headers'
[4523] Fix | Delete
);
[4524] Fix | Delete
[4525] Fix | Delete
/**
[4526] Fix | Delete
* Filters the headers of the data erasure fulfillment notification.
[4527] Fix | Delete
*
[4528] Fix | Delete
* @since 5.8.0
[4529] Fix | Delete
*
[4530] Fix | Delete
* @param string|array $headers The email headers.
[4531] Fix | Delete
* @param string $subject The email subject.
[4532] Fix | Delete
* @param string $content The email content.
[4533] Fix | Delete
* @param int $request_id The request ID.
[4534] Fix | Delete
* @param array $email_data {
[4535] Fix | Delete
* Data relating to the account action email.
[4536] Fix | Delete
*
[4537] Fix | Delete
* @type WP_User_Request $request User request object.
[4538] Fix | Delete
* @type string $message_recipient The address that the email will be sent to. Defaults
[4539] Fix | Delete
* to the value of `$request->email`, but can be changed
[4540] Fix | Delete
* by the `user_erasure_fulfillment_email_to` filter.
[4541] Fix | Delete
* @type string $privacy_policy_url Privacy policy URL.
[4542] Fix | Delete
* @type string $sitename The site name sending the mail.
[4543] Fix | Delete
* @type string $siteurl The site URL sending the mail.
[4544] Fix | Delete
* }
[4545] Fix | Delete
*/
[4546] Fix | Delete
$headers = apply_filters( 'user_erasure_fulfillment_email_headers', $headers, $subject, $content, $request_id, $email_data );
[4547] Fix | Delete
[4548] Fix | Delete
$email_sent = wp_mail( $user_email, $subject, $content, $headers );
[4549] Fix | Delete
[4550] Fix | Delete
if ( $switched_locale ) {
[4551] Fix | Delete
restore_previous_locale();
[4552] Fix | Delete
}
[4553] Fix | Delete
[4554] Fix | Delete
if ( $email_sent ) {
[4555] Fix | Delete
update_post_meta( $request_id, '_wp_user_notified', true );
[4556] Fix | Delete
}
[4557] Fix | Delete
}
[4558] Fix | Delete
[4559] Fix | Delete
/**
[4560] Fix | Delete
* Returns request confirmation message HTML.
[4561] Fix | Delete
*
[4562] Fix | Delete
* @since 4.9.6
[4563] Fix | Delete
* @access private
[4564] Fix | Delete
*
[4565] Fix | Delete
* @param int $request_id The request ID being confirmed.
[4566] Fix | Delete
* @return string The confirmation message.
[4567] Fix | Delete
*/
[4568] Fix | Delete
function _wp_privacy_account_request_confirmed_message( $request_id ) {
[4569] Fix | Delete
$request = wp_get_user_request( $request_id );
[4570] Fix | Delete
[4571] Fix | Delete
$message = '<p class="success">' . __( 'Action has been confirmed.' ) . '</p>';
[4572] Fix | Delete
$message .= '<p>' . __( 'The site administrator has been notified and will fulfill your request as soon as possible.' ) . '</p>';
[4573] Fix | Delete
[4574] Fix | Delete
if ( $request && in_array( $request->action_name, _wp_privacy_action_request_types(), true ) ) {
[4575] Fix | Delete
if ( 'export_personal_data' === $request->action_name ) {
[4576] Fix | Delete
$message = '<p class="success">' . __( 'Thanks for confirming your export request.' ) . '</p>';
[4577] Fix | Delete
$message .= '<p>' . __( 'The site administrator has been notified. You will receive a link to download your export via email when they fulfill your request.' ) . '</p>';
[4578] Fix | Delete
} elseif ( 'remove_personal_data' === $request->action_name ) {
[4579] Fix | Delete
$message = '<p class="success">' . __( 'Thanks for confirming your erasure request.' ) . '</p>';
[4580] Fix | Delete
$message .= '<p>' . __( 'The site administrator has been notified. You will receive an email confirmation when they erase your data.' ) . '</p>';
[4581] Fix | Delete
}
[4582] Fix | Delete
}
[4583] Fix | Delete
[4584] Fix | Delete
/**
[4585] Fix | Delete
* Filters the message displayed to a user when they confirm a data request.
[4586] Fix | Delete
*
[4587] Fix | Delete
* @since 4.9.6
[4588] Fix | Delete
*
[4589] Fix | Delete
* @param string $message The message to the user.
[4590] Fix | Delete
* @param int $request_id The ID of the request being confirmed.
[4591] Fix | Delete
*/
[4592] Fix | Delete
$message = apply_filters( 'user_request_action_confirmed_message', $message, $request_id );
[4593] Fix | Delete
[4594] Fix | Delete
return $message;
[4595] Fix | Delete
}
[4596] Fix | Delete
[4597] Fix | Delete
/**
[4598] Fix | Delete
* Creates and logs a user request to perform a specific action.
[4599] Fix | Delete
*
[4600] Fix | Delete
* Requests are stored inside a post type named `user_request` since they can apply to both
[4601] Fix | Delete
* users on the site, or guests without a user account.
[4602] Fix | Delete
*
[4603] Fix | Delete
* @since 4.9.6
[4604] Fix | Delete
* @since 5.7.0 Added the `$status` parameter.
[4605] Fix | Delete
*
[4606] Fix | Delete
* @param string $email_address User email address. This can be the address of a registered
[4607] Fix | Delete
* or non-registered user.
[4608] Fix | Delete
* @param string $action_name Name of the action that is being confirmed. Required.
[4609] Fix | Delete
* @param array $request_data Misc data you want to send with the verification request and pass
[4610] Fix | Delete
* to the actions once the request is confirmed.
[4611] Fix | Delete
* @param string $status Optional request status (pending or confirmed). Default 'pending'.
[4612] Fix | Delete
* @return int|WP_Error Returns the request ID if successful, or a WP_Error object on failure.
[4613] Fix | Delete
*/
[4614] Fix | Delete
function wp_create_user_request( $email_address = '', $action_name = '', $request_data = array(), $status = 'pending' ) {
[4615] Fix | Delete
$email_address = sanitize_email( $email_address );
[4616] Fix | Delete
$action_name = sanitize_key( $action_name );
[4617] Fix | Delete
[4618] Fix | Delete
if ( ! is_email( $email_address ) ) {
[4619] Fix | Delete
return new WP_Error( 'invalid_email', __( 'Invalid email address.' ) );
[4620] Fix | Delete
}
[4621] Fix | Delete
[4622] Fix | Delete
if ( ! in_array( $action_name, _wp_privacy_action_request_types(), true ) ) {
[4623] Fix | Delete
return new WP_Error( 'invalid_action', __( 'Invalid action name.' ) );
[4624] Fix | Delete
}
[4625] Fix | Delete
[4626] Fix | Delete
if ( ! in_array( $status, array( 'pending', 'confirmed' ), true ) ) {
[4627] Fix | Delete
return new WP_Error( 'invalid_status', __( 'Invalid request status.' ) );
[4628] Fix | Delete
}
[4629] Fix | Delete
[4630] Fix | Delete
$user = get_user_by( 'email', $email_address );
[4631] Fix | Delete
$user_id = $user && ! is_wp_error( $user ) ? $user->ID : 0;
[4632] Fix | Delete
[4633] Fix | Delete
// Check for duplicates.
[4634] Fix | Delete
$requests_query = new WP_Query(
[4635] Fix | Delete
array(
[4636] Fix | Delete
'post_type' => 'user_request',
[4637] Fix | Delete
'post_name__in' => array( $action_name ), // Action name stored in post_name column.
[4638] Fix | Delete
'title' => $email_address, // Email address stored in post_title column.
[4639] Fix | Delete
'post_status' => array(
[4640] Fix | Delete
'request-pending',
[4641] Fix | Delete
'request-confirmed',
[4642] Fix | Delete
),
[4643] Fix | Delete
'fields' => 'ids',
[4644] Fix | Delete
)
[4645] Fix | Delete
);
[4646] Fix | Delete
[4647] Fix | Delete
if ( $requests_query->found_posts ) {
[4648] Fix | Delete
return new WP_Error( 'duplicate_request', __( 'An incomplete personal data request for this email address already exists.' ) );
[4649] Fix | Delete
}
[4650] Fix | Delete
[4651] Fix | Delete
$request_id = wp_insert_post(
[4652] Fix | Delete
array(
[4653] Fix | Delete
'post_author' => $user_id,
[4654] Fix | Delete
'post_name' => $action_name,
[4655] Fix | Delete
'post_title' => $email_address,
[4656] Fix | Delete
'post_content' => wp_json_encode( $request_data ),
[4657] Fix | Delete
'post_status' => 'request-' . $status,
[4658] Fix | Delete
'post_type' => 'user_request',
[4659] Fix | Delete
'post_date' => current_time( 'mysql', false ),
[4660] Fix | Delete
'post_date_gmt' => current_time( 'mysql', true ),
[4661] Fix | Delete
),
[4662] Fix | Delete
true
[4663] Fix | Delete
);
[4664] Fix | Delete
[4665] Fix | Delete
return $request_id;
[4666] Fix | Delete
}
[4667] Fix | Delete
[4668] Fix | Delete
/**
[4669] Fix | Delete
* Gets action description from the name and return a string.
[4670] Fix | Delete
*
[4671] Fix | Delete
* @since 4.9.6
[4672] Fix | Delete
*
[4673] Fix | Delete
* @param string $action_name Action name of the request.
[4674] Fix | Delete
* @return string Human readable action name.
[4675] Fix | Delete
*/
[4676] Fix | Delete
function wp_user_request_action_description( $action_name ) {
[4677] Fix | Delete
switch ( $action_name ) {
[4678] Fix | Delete
case 'export_personal_data':
[4679] Fix | Delete
$description = __( 'Export Personal Data' );
[4680] Fix | Delete
break;
[4681] Fix | Delete
case 'remove_personal_data':
[4682] Fix | Delete
$description = __( 'Erase Personal Data' );
[4683] Fix | Delete
break;
[4684] Fix | Delete
default:
[4685] Fix | Delete
/* translators: %s: Action name. */
[4686] Fix | Delete
$description = sprintf( __( 'Confirm the "%s" action' ), $action_name );
[4687] Fix | Delete
break;
[4688] Fix | Delete
}
[4689] Fix | Delete
[4690] Fix | Delete
/**
[4691] Fix | Delete
* Filters the user action description.
[4692] Fix | Delete
*
[4693] Fix | Delete
* @since 4.9.6
[4694] Fix | Delete
*
[4695] Fix | Delete
* @param string $description The default description.
[4696] Fix | Delete
* @param string $action_name The name of the request.
[4697] Fix | Delete
*/
[4698] Fix | Delete
return apply_filters( 'user_request_action_description', $description, $action_name );
[4699] Fix | Delete
}
[4700] Fix | Delete
[4701] Fix | Delete
/**
[4702] Fix | Delete
* Send a confirmation request email to confirm an action.
[4703] Fix | Delete
*
[4704] Fix | Delete
* If the request is not already pending, it will be updated.
[4705] Fix | Delete
*
[4706] Fix | Delete
* @since 4.9.6
[4707] Fix | Delete
*
[4708] Fix | Delete
* @param string $request_id ID of the request created via wp_create_user_request().
[4709] Fix | Delete
* @return true|WP_Error True on success, `WP_Error` on failure.
[4710] Fix | Delete
*/
[4711] Fix | Delete
function wp_send_user_request( $request_id ) {
[4712] Fix | Delete
$request_id = absint( $request_id );
[4713] Fix | Delete
$request = wp_get_user_request( $request_id );
[4714] Fix | Delete
[4715] Fix | Delete
if ( ! $request ) {
[4716] Fix | Delete
return new WP_Error( 'invalid_request', __( 'Invalid personal data request.' ) );
[4717] Fix | Delete
}
[4718] Fix | Delete
[4719] Fix | Delete
// Localize message content for user; fallback to site default for visitors.
[4720] Fix | Delete
if ( ! empty( $request->user_id ) ) {
[4721] Fix | Delete
$switched_locale = switch_to_user_locale( $request->user_id );
[4722] Fix | Delete
} else {
[4723] Fix | Delete
$switched_locale = switch_to_locale( get_locale() );
[4724] Fix | Delete
}
[4725] Fix | Delete
[4726] Fix | Delete
$email_data = array(
[4727] Fix | Delete
'request' => $request,
[4728] Fix | Delete
'email' => $request->email,
[4729] Fix | Delete
'description' => wp_user_request_action_description( $request->action_name ),
[4730] Fix | Delete
'confirm_url' => add_query_arg(
[4731] Fix | Delete
array(
[4732] Fix | Delete
'action' => 'confirmaction',
[4733] Fix | Delete
'request_id' => $request_id,
[4734] Fix | Delete
'confirm_key' => wp_generate_user_request_key( $request_id ),
[4735] Fix | Delete
),
[4736] Fix | Delete
wp_login_url()
[4737] Fix | Delete
),
[4738] Fix | Delete
'sitename' => wp_specialchars_decode( get_option( 'blogname' ), ENT_QUOTES ),
[4739] Fix | Delete
'siteurl' => home_url(),
[4740] Fix | Delete
);
[4741] Fix | Delete
[4742] Fix | Delete
/* translators: Confirm privacy data request notification email subject. 1: Site title, 2: Name of the action. */
[4743] Fix | Delete
$subject = sprintf( __( '[%1$s] Confirm Action: %2$s' ), $email_data['sitename'], $email_data['description'] );
[4744] Fix | Delete
[4745] Fix | Delete
/**
[4746] Fix | Delete
* Filters the subject of the email sent when an account action is attempted.
[4747] Fix | Delete
*
[4748] Fix | Delete
* @since 4.9.6
[4749] Fix | Delete
*
[4750] Fix | Delete
* @param string $subject The email subject.
[4751] Fix | Delete
* @param string $sitename The name of the site.
[4752] Fix | Delete
* @param array $email_data {
[4753] Fix | Delete
* Data relating to the account action email.
[4754] Fix | Delete
*
[4755] Fix | Delete
* @type WP_User_Request $request User request object.
[4756] Fix | Delete
* @type string $email The email address this is being sent to.
[4757] Fix | Delete
* @type string $description Description of the action being performed so the user knows what the email is for.
[4758] Fix | Delete
* @type string $confirm_url The link to click on to confirm the account action.
[4759] Fix | Delete
* @type string $sitename The site name sending the mail.
[4760] Fix | Delete
* @type string $siteurl The site URL sending the mail.
[4761] Fix | Delete
* }
[4762] Fix | Delete
*/
[4763] Fix | Delete
$subject = apply_filters( 'user_request_action_email_subject', $subject, $email_data['sitename'], $email_data );
[4764] Fix | Delete
[4765] Fix | Delete
/* translators: Do not translate DESCRIPTION, CONFIRM_URL, SITENAME, SITEURL: those are placeholders. */
[4766] Fix | Delete
$content = __(
[4767] Fix | Delete
'Howdy,
[4768] Fix | Delete
[4769] Fix | Delete
A request has been made to perform the following action on your account:
[4770] Fix | Delete
[4771] Fix | Delete
###DESCRIPTION###
[4772] Fix | Delete
[4773] Fix | Delete
To confirm this, please click on the following link:
[4774] Fix | Delete
###CONFIRM_URL###
[4775] Fix | Delete
[4776] Fix | Delete
You can safely ignore and delete this email if you do not want to
[4777] Fix | Delete
take this action.
[4778] Fix | Delete
[4779] Fix | Delete
Regards,
[4780] Fix | Delete
All at ###SITENAME###
[4781] Fix | Delete
###SITEURL###'
[4782] Fix | Delete
);
[4783] Fix | Delete
[4784] Fix | Delete
/**
[4785] Fix | Delete
* Filters the text of the email sent when an account action is attempted.
[4786] Fix | Delete
*
[4787] Fix | Delete
* The following strings have a special meaning and will get replaced dynamically:
[4788] Fix | Delete
*
[4789] Fix | Delete
* ###DESCRIPTION### Description of the action being performed so the user knows what the email is for.
[4790] Fix | Delete
* ###CONFIRM_URL### The link to click on to confirm the account action.
[4791] Fix | Delete
* ###SITENAME### The name of the site.
[4792] Fix | Delete
* ###SITEURL### The URL to the site.
[4793] Fix | Delete
*
[4794] Fix | Delete
* @since 4.9.6
[4795] Fix | Delete
*
[4796] Fix | Delete
* @param string $content Text in the email.
[4797] Fix | Delete
* @param array $email_data {
[4798] Fix | Delete
* Data relating to the account action email.
[4799] Fix | Delete
*
[4800] Fix | Delete
* @type WP_User_Request $request User request object.
[4801] Fix | Delete
* @type string $email The email address this is being sent to.
[4802] Fix | Delete
* @type string $description Description of the action being performed so the user knows what the email is for.
[4803] Fix | Delete
* @type string $confirm_url The link to click on to confirm the account action.
[4804] Fix | Delete
* @type string $sitename The site name sending the mail.
[4805] Fix | Delete
* @type string $siteurl The site URL sending the mail.
[4806] Fix | Delete
* }
[4807] Fix | Delete
*/
[4808] Fix | Delete
$content = apply_filters( 'user_request_action_email_content', $content, $email_data );
[4809] Fix | Delete
[4810] Fix | Delete
$content = str_replace( '###DESCRIPTION###', $email_data['description'], $content );
[4811] Fix | Delete
$content = str_replace( '###CONFIRM_URL###', sanitize_url( $email_data['confirm_url'] ), $content );
[4812] Fix | Delete
$content = str_replace( '###EMAIL###', $email_data['email'], $content );
[4813] Fix | Delete
$content = str_replace( '###SITENAME###', $email_data['sitename'], $content );
[4814] Fix | Delete
$content = str_replace( '###SITEURL###', sanitize_url( $email_data['siteurl'] ), $content );
[4815] Fix | Delete
[4816] Fix | Delete
$headers = '';
[4817] Fix | Delete
[4818] Fix | Delete
/**
[4819] Fix | Delete
* Filters the headers of the email sent when an account action is attempted.
[4820] Fix | Delete
*
[4821] Fix | Delete
* @since 5.4.0
[4822] Fix | Delete
*
[4823] Fix | Delete
* @param string|array $headers The email headers.
[4824] Fix | Delete
* @param string $subject The email subject.
[4825] Fix | Delete
* @param string $content The email content.
[4826] Fix | Delete
* @param int $request_id The request ID.
[4827] Fix | Delete
* @param array $email_data {
[4828] Fix | Delete
* Data relating to the account action email.
[4829] Fix | Delete
*
[4830] Fix | Delete
* @type WP_User_Request $request User request object.
[4831] Fix | Delete
* @type string $email The email address this is being sent to.
[4832] Fix | Delete
* @type string $description Description of the action being performed so the user knows what the email is for.
[4833] Fix | Delete
* @type string $confirm_url The link to click on to confirm the account action.
[4834] Fix | Delete
* @type string $sitename The site name sending the mail.
[4835] Fix | Delete
* @type string $siteurl The site URL sending the mail.
[4836] Fix | Delete
* }
[4837] Fix | Delete
*/
[4838] Fix | Delete
$headers = apply_filters( 'user_request_action_email_headers', $headers, $subject, $content, $request_id, $email_data );
[4839] Fix | Delete
[4840] Fix | Delete
$email_sent = wp_mail( $email_data['email'], $subject, $content, $headers );
[4841] Fix | Delete
[4842] Fix | Delete
if ( $switched_locale ) {
[4843] Fix | Delete
restore_previous_locale();
[4844] Fix | Delete
}
[4845] Fix | Delete
[4846] Fix | Delete
if ( ! $email_sent ) {
[4847] Fix | Delete
return new WP_Error( 'privacy_email_error', __( 'Unable to send personal data export confirmation email.' ) );
[4848] Fix | Delete
}
[4849] Fix | Delete
[4850] Fix | Delete
return true;
[4851] Fix | Delete
}
[4852] Fix | Delete
[4853] Fix | Delete
/**
[4854] Fix | Delete
* Returns a confirmation key for a user action and stores the hashed version for future comparison.
[4855] Fix | Delete
*
[4856] Fix | Delete
* @since 4.9.6
[4857] Fix | Delete
*
[4858] Fix | Delete
* @global PasswordHash $wp_hasher Portable PHP password hashing framework instance.
[4859] Fix | Delete
*
[4860] Fix | Delete
* @param int $request_id Request ID.
[4861] Fix | Delete
* @return string Confirmation key.
[4862] Fix | Delete
*/
[4863] Fix | Delete
function wp_generate_user_request_key( $request_id ) {
[4864] Fix | Delete
global $wp_hasher;
[4865] Fix | Delete
[4866] Fix | Delete
// Generate something random for a confirmation key.
[4867] Fix | Delete
$key = wp_generate_password( 20, false );
[4868] Fix | Delete
[4869] Fix | Delete
// Return the key, hashed.
[4870] Fix | Delete
if ( empty( $wp_hasher ) ) {
[4871] Fix | Delete
require_once ABSPATH . WPINC . '/class-phpass.php';
[4872] Fix | Delete
$wp_hasher = new PasswordHash( 8, true );
[4873] Fix | Delete
}
[4874] Fix | Delete
[4875] Fix | Delete
wp_update_post(
[4876] Fix | Delete
array(
[4877] Fix | Delete
'ID' => $request_id,
[4878] Fix | Delete
'post_status' => 'request-pending',
[4879] Fix | Delete
'post_password' => $wp_hasher->HashPassword( $key ),
[4880] Fix | Delete
)
[4881] Fix | Delete
);
[4882] Fix | Delete
[4883] Fix | Delete
return $key;
[4884] Fix | Delete
}
[4885] Fix | Delete
[4886] Fix | Delete
/**
[4887] Fix | Delete
* Validates a user request by comparing the key with the request's key.
[4888] Fix | Delete
*
[4889] Fix | Delete
* @since 4.9.6
[4890] Fix | Delete
*
[4891] Fix | Delete
* @global PasswordHash $wp_hasher Portable PHP password hashing framework instance.
[4892] Fix | Delete
*
[4893] Fix | Delete
* @param string $request_id ID of the request being confirmed.
[4894] Fix | Delete
* @param string $key Provided key to validate.
[4895] Fix | Delete
* @return true|WP_Error True on success, WP_Error on failure.
[4896] Fix | Delete
*/
[4897] Fix | Delete
function wp_validate_user_request_key( $request_id, $key ) {
[4898] Fix | Delete
global $wp_hasher;
[4899] Fix | Delete
[4900] Fix | Delete
$request_id = absint( $request_id );
[4901] Fix | Delete
$request = wp_get_user_request( $request_id );
[4902] Fix | Delete
$saved_key = $request->confirm_key;
[4903] Fix | Delete
$key_request_time = $request->modified_timestamp;
[4904] Fix | Delete
[4905] Fix | Delete
if ( ! $request || ! $saved_key || ! $key_request_time ) {
[4906] Fix | Delete
return new WP_Error( 'invalid_request', __( 'Invalid personal data request.' ) );
[4907] Fix | Delete
}
[4908] Fix | Delete
[4909] Fix | Delete
if ( ! in_array( $request->status, array( 'request-pending', 'request-failed' ), true ) ) {
[4910] Fix | Delete
return new WP_Error( 'expired_request', __( 'This personal data request has expired.' ) );
[4911] Fix | Delete
}
[4912] Fix | Delete
[4913] Fix | Delete
if ( empty( $key ) ) {
[4914] Fix | Delete
return new WP_Error( 'missing_key', __( 'The confirmation key is missing from this personal data request.' ) );
[4915] Fix | Delete
}
[4916] Fix | Delete
[4917] Fix | Delete
if ( empty( $wp_hasher ) ) {
[4918] Fix | Delete
require_once ABSPATH . WPINC . '/class-phpass.php';
[4919] Fix | Delete
$wp_hasher = new PasswordHash( 8, true );
[4920] Fix | Delete
}
[4921] Fix | Delete
[4922] Fix | Delete
/**
[4923] Fix | Delete
* Filters the expiration time of confirm keys.
[4924] Fix | Delete
*
[4925] Fix | Delete
* @since 4.9.6
[4926] Fix | Delete
*
[4927] Fix | Delete
* @param int $expiration The expiration time in seconds.
[4928] Fix | Delete
*/
[4929] Fix | Delete
$expiration_duration = (int) apply_filters( 'user_request_key_expiration', DAY_IN_SECONDS );
[4930] Fix | Delete
$expiration_time = $key_request_time + $expiration_duration;
[4931] Fix | Delete
[4932] Fix | Delete
if ( ! $wp_hasher->CheckPassword( $key, $saved_key ) ) {
[4933] Fix | Delete
return new WP_Error( 'invalid_key', __( 'The confirmation key is invalid for this personal data request.' ) );
[4934] Fix | Delete
}
[4935] Fix | Delete
[4936] Fix | Delete
if ( ! $expiration_time || time() > $expiration_time ) {
[4937] Fix | Delete
return new WP_Error( 'expired_key', __( 'The confirmation key has expired for this personal data request.' ) );
[4938] Fix | Delete
}
[4939] Fix | Delete
[4940] Fix | Delete
return true;
[4941] Fix | Delete
}
[4942] Fix | Delete
[4943] Fix | Delete
/**
[4944] Fix | Delete
* Returns the user request object for the specified request ID.
[4945] Fix | Delete
*
[4946] Fix | Delete
* @since 4.9.6
[4947] Fix | Delete
*
[4948] Fix | Delete
* @param int $request_id The ID of the user request.
[4949] Fix | Delete
* @return WP_User_Request|false
[4950] Fix | Delete
*/
[4951] Fix | Delete
function wp_get_user_request( $request_id ) {
[4952] Fix | Delete
$request_id = absint( $request_id );
[4953] Fix | Delete
$post = get_post( $request_id );
[4954] Fix | Delete
[4955] Fix | Delete
if ( ! $post || 'user_request' !== $post->post_type ) {
[4956] Fix | Delete
return false;
[4957] Fix | Delete
}
[4958] Fix | Delete
[4959] Fix | Delete
return new WP_User_Request( $post );
[4960] Fix | Delete
}
[4961] Fix | Delete
[4962] Fix | Delete
/**
[4963] Fix | Delete
* Checks if Application Passwords is supported.
[4964] Fix | Delete
*
[4965] Fix | Delete
* Application Passwords is supported only by sites using SSL or local environments
[4966] Fix | Delete
* but may be made available using the {@see 'wp_is_application_passwords_available'} filter.
[4967] Fix | Delete
*
[4968] Fix | Delete
* @since 5.9.0
[4969] Fix | Delete
*
[4970] Fix | Delete
* @return bool
[4971] Fix | Delete
*/
[4972] Fix | Delete
function wp_is_application_passwords_supported() {
[4973] Fix | Delete
return is_ssl() || 'local' === wp_get_environment_type();
[4974] Fix | Delete
}
[4975] Fix | Delete
[4976] Fix | Delete
/**
[4977] Fix | Delete
* Checks if Application Passwords is globally available.
[4978] Fix | Delete
*
[4979] Fix | Delete
* By default, Application Passwords is available to all sites using SSL or to local environments.
[4980] Fix | Delete
* Use the {@see 'wp_is_application_passwords_available'} filter to adjust its availability.
[4981] Fix | Delete
*
[4982] Fix | Delete
* @since 5.6.0
[4983] Fix | Delete
*
[4984] Fix | Delete
* @return bool
[4985] Fix | Delete
*/
[4986] Fix | Delete
function wp_is_application_passwords_available() {
[4987] Fix | Delete
/**
[4988] Fix | Delete
* Filters whether Application Passwords is available.
[4989] Fix | Delete
*
[4990] Fix | Delete
* @since 5.6.0
[4991] Fix | Delete
*
[4992] Fix | Delete
* @param bool $available True if available, false otherwise.
[4993] Fix | Delete
*/
[4994] Fix | Delete
return apply_filters( 'wp_is_application_passwords_available', wp_is_application_passwords_supported() );
[4995] Fix | Delete
}
[4996] Fix | Delete
[4997] Fix | Delete
/**
[4998] Fix | Delete
* Checks if Application Passwords is available for a specific user.
[4999] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function