Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion blocks/templates/registration.php
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@
<div class="directorist-account-block-modal-wrap">
<div class="directorist-form-group directorist-mb-15">
<label for="username"><?php echo esc_html( $username ); ?> <strong class="directorist-form-required">*</strong></label>
<input id="username" class="directorist-form-element" type="text" name="username" value="<?php echo isset( $_REQUEST['username'] ) ? esc_attr( sanitize_text_field( wp_unslash( $_REQUEST['username'] ) ) ) : ''; ?>" required>
<input id="username" class="directorist-form-element" type="text" name="username" minlength="4" maxlength="60" value="<?php echo isset( $_REQUEST['username'] ) ? esc_attr( sanitize_text_field( wp_unslash( $_REQUEST['username'] ) ) ) : ''; ?>" required>
</div>
<div class="directorist-form-group directorist-mb-15">
<label for="email"><?php echo esc_html( $email ); ?> <strong class="directorist-form-required">*</strong></label>
Expand Down
16 changes: 9 additions & 7 deletions includes/classes/class-ajax-handler.php
Original file line number Diff line number Diff line change
Expand Up @@ -195,13 +195,16 @@ public function send_confirm_email() {
$user = get_user_by( 'email', $email );
if ( $user instanceof \WP_User && get_user_meta( $user->ID, 'directorist_user_email_unverified', true ) ) {
ATBDP()->email->send_user_confirmation_email( $user );
$query_args = [ 'send_verification_email' => true ];
} else {
$resent = ATBDP()->user->pending_registration->resend( $email );

$query_args = is_wp_error( $resent )
? [ 'pending_registration_error' => $resent->get_error_code() ]
: [ 'send_verification_email' => true ];
}

$args = ATBDP_Permalink::get_signin_signup_page_link(
[
'send_verification_email' => true
]
);
$args = ATBDP_Permalink::get_signin_signup_page_link( $query_args );

wp_safe_redirect( $args );
exit;
Expand Down Expand Up @@ -953,8 +956,7 @@ public function atbdp_post_attachment_upload() {
$upload_token = isset( $_POST['upload_token'] ) ? sanitize_text_field( wp_unslash( $_POST['upload_token'] ) ) : '';
$token_data = $upload_token ? get_transient( 'directorist_file_upload_' . $upload_token ) : false;

if (
empty( $token_data )
if ( empty( $token_data )
|| ! is_array( $token_data )
|| (int) ( $token_data['directory'] ?? 0 ) !== $directory
|| (string) ( $token_data['field_key'] ?? '' ) !== $field_id
Expand Down
79 changes: 78 additions & 1 deletion includes/classes/class-email.php
Original file line number Diff line number Diff line change
Expand Up @@ -1323,5 +1323,82 @@ public function send_user_confirmation_email( Wp_User $user ) {

return $this->send_mail( $user->user_email, $subject, $body, $this->get_email_headers() );
}

/**
* Send an email-verification message before a WordPress user exists.
*
* @since 8.9.3
*
* @param array $registration Sanitized pending registration data.
* @param string $verification_url Opaque verification URL.
* @return bool Whether the email was sent.
*/
public function send_pending_user_confirmation_email( array $registration, $verification_url ) {
if ( get_directorist_option( 'disable_email_notification' ) ) {
return false;
}

$display_name = trim( $registration['first_name'] . ' ' . $registration['last_name'] );
$display_name = $display_name ? $display_name : $registration['user_login'];
$pending_user = new WP_User();
$pending_user->data = (object) [
'ID' => 0,
'user_login' => $registration['user_login'],
'user_email' => $registration['user_email'],
'display_name' => $display_name,
];

$title = apply_filters( 'directorist_email_verification_title', __( 'Verify your email address', 'directorist' ), $pending_user );
$title = apply_filters( 'directorist_pending_registration_email_verification_title', $title, $registration );

$subject = get_directorist_option( 'email_sub_email_verification', __( '[==NAME==] Verify Your Email Address', 'directorist' ) );
$body = get_directorist_option(
'email_tmpl_email_verification',
'Hi ==USERNAME==,

Thank you for signing up at ==SITE_NAME==, to complete the registration, please verify your email address.

To activate your account simply click on the link below and verify your email address within 24 hours. For your safety, you will not be able to access your account until verification of your email has been completed.

==CONFIRM_EMAIL_ADDRESS_URL==

<p align="center">If you did not sign up for this account you can ignore this email.</p>'
);

$site_name = get_option( 'blogname' );
$site_url = site_url();
$button_label = ! empty( $registration['generated_password'] ) ? __( 'Set Password And Confirm Email Address', 'directorist' ) : __( 'Confirm Email Address', 'directorist' );
$button = sprintf(
'<p align="center"><a style="text-decoration: none;background-color: #8569fb;padding: 8px 10px;color: #fff;border-radius: 4px;" href="%s">%s</a></p>',
esc_url( $verification_url ),
esc_html( $button_label )
);

$find_replace = [
'==NAME==' => $display_name,
'==USERNAME==' => $registration['user_login'],
'==USER_EMAIL==' => $registration['user_email'],
'==SITE_NAME==' => $site_name,
'==SITE_LINK==' => sprintf( '<a href="%s">%s</a>', esc_url( $site_url ), esc_html( $site_name ) ),
'==SITE_URL==' => sprintf( '<a href="%s">%s</a>', esc_url( $site_url ), esc_html( $site_url ) ),
'==DASHBOARD_LINK==' => sprintf( '<a href="%s">%s</a>', esc_url( ATBDP_Permalink::get_dashboard_page_link() ), esc_html( ATBDP_Permalink::get_dashboard_page_link() ) ),
'==CONFIRM_EMAIL_ADDRESS_URL==' => $button,
'==SET_PASSWORD_AND_CONFIRM_EMAIL_ADDRESS_URL==' => $button,
'==USER_PASSWORD==' => '',
];

$find_replace = apply_filters( 'directorist_replace_in_content', $find_replace, 0, $pending_user );

$subject = strtr( $subject, $find_replace );
$body = nl2br( strtr( $body, $find_replace ) );
$body = apply_filters( 'directorist_pending_registration_email_body', atbdp_email_html( $title, $body ), $registration, $verification_url );
$sent = $this->send_mail( $registration['user_email'], $subject, $body, $this->get_email_headers() );

if ( $sent ) {
do_action( 'directorist_after_pending_registration_verification_email_sent', $registration, $subject, $body );
}

return $sent;
}
} // ends class
endif;
endif;
Loading
Loading