Current File : /home/inteuuod/public_html/wp-content/plugins/userswp/includes//class-forms.php
<?php
/**
* Form related functions
*
* This class defines all code necessary to handle UsersWP forms like login. register etc.
*
* @since 1.0.0
* @author GeoDirectory Team <info@wpgeodirectory.com>
*/
class UsersWP_Forms {
protected $generated_password;
/**
* Logs the error message.
*
* @param array|object|string $log Error message.
*
* @return void
* @since 1.0.0
* @package userswp
*
*/
public static function uwp_error_log( $log ) {
uwp_error_log( $log );
}
/**
* Initialize UsersWP notices.
*
* @return void
* @package userswp
*
* @since 1.0.0
*/
public function init_notices() {
global $uwp_notices;
$uwp_notices = array();
}
/**
* Handles all UsersWP forms.
*
* @return void
* @package userswp
*
* @since 1.0.0
*/
public function handler() {
global $uwp_notices;
ob_start();
$errors = null;
$message = null;
$redirect = false;
$processed = false;
$type = null;
if ( isset( $_POST['uwp_avatar_submit'] ) ) {
$errors = $this->process_upload_submit( $_POST, $_FILES, 'avatar' );
if ( ! is_wp_error( $errors ) ) {
$redirect = $errors;
}
$message = __( 'Avatar cropped successfully.', 'userswp' );
$processed = true;
} elseif ( isset( $_POST['uwp_banner_submit'] ) ) {
$errors = $this->process_upload_submit( $_POST, $_FILES, 'banner' );
if ( ! is_wp_error( $errors ) ) {
$redirect = $errors;
}
$message = __( 'Banner cropped successfully.', 'userswp' );
$processed = true;
} elseif ( isset( $_POST['uwp_avatar_crop'] ) ) {
$errors = $this->process_image_crop( $_POST, 'avatar', true );
if ( ! is_wp_error( $errors ) ) {
$redirect = $errors;
}
$message = __( 'Avatar cropped successfully.', 'userswp' );
$processed = true;
} elseif ( isset( $_POST['uwp_banner_crop'] ) ) {
$errors = $this->process_image_crop( $_POST, 'banner', true );
if ( ! is_wp_error( $errors ) ) {
$redirect = $errors;
}
$message = __( 'Banner cropped successfully.', 'userswp' );
$processed = true;
} elseif ( isset( $_POST['uwp_avatar_reset'] ) ) {
$errors = $this->process_image_reset( 'avatar' );
if ( ! is_wp_error( $errors ) ) {
$redirect = $errors;
}
$message = __( 'Avatar reset successfully.', 'userswp' );
$processed = true;
} elseif ( isset( $_POST['uwp_banner_reset'] ) ) {
$errors = $this->process_image_reset( 'banner' );
if ( ! is_wp_error( $errors ) ) {
$redirect = $errors;
}
$message = __( 'Banner reset successfully.', 'userswp' );
$processed = true;
}
if ( $processed ) {
if ( is_wp_error( $errors ) ) {
echo aui()->alert(
array( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
'type' => 'error',
'class' => 'text-center',
'content' => wp_kses_post( $errors->get_error_message() ),
)
);
} elseif ( $redirect ) {
wp_safe_redirect( $redirect );
exit();
} else {
echo aui()->alert(
array( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
'type' => 'success',
'class' => 'text-center',
'content' => wp_kses_post( $message ),
)
);
}
}
if ( $type ) {
$uwp_notices[] = array( $type => ob_get_contents() );
} else {
$uwp_notices[] = ob_get_contents();
}
ob_end_clean();
}
/**
* Processes avatar and banner uploads form submission.
*
* @param array $data Submitted $_POST data
* @param array $files Submitted $_FILES data
*
* @return bool|WP_Error|string File url to crop.
* @package userswp
*
* @since 1.0.0
*/
public function process_upload_submit( $data = array(), $files = array(), $type = 'avatar' ) {
$file_obj = new UsersWP_Files();
$current_user_id = get_current_user_id();
if ( ! $current_user_id ) {
return false;
}
if ( ! isset( $data['uwp_upload_nonce'] ) || ! wp_verify_nonce( $data['uwp_upload_nonce'], 'uwp-upload-nonce' ) ) {
return false;
}
do_action( 'uwp_before_validate', $type );
$result = $file_obj->validate_uploads( $files, $type );
$result = apply_filters( 'uwp_validate_result', $result, $type, $data );
if ( is_wp_error( $result ) ) {
return $result;
}
$profile_url = uwp_build_profile_tab_url( $current_user_id );
$url = add_query_arg(
array(
'uwp_crop' => $result[ 'uwp_' . $type . '_file' ],
'type' => $type,
),
$profile_url
);
return $url;
}
/**
* Processes avatar and banner uploads image crop.
*
* @param array $data Submitted $_POST data
* @param string $type Image type. Default 'avatar'.
* @param bool $unlink_prev_img True to remove previous image. Default false;
*
* @return bool|WP_Error|string Profile url.
* @since 1.0.12 New param $unlink_prev_img introduced.
* @package userswp
*
* @since 1.0.0
*/
public function process_image_crop( $data = array(), $type = 'avatar', $unlink_prev_img = false ) {
global $wpdb;
if ( ! is_user_logged_in() ) {
return false;
}
if ( empty( $_POST['uwp_crop_nonce'] ) || ! wp_verify_nonce( $_POST['uwp_crop_nonce'], 'uwp_crop_nonce_' . $type ) ) {
return;
}
// If is current user's profile (profile.php)
if ( is_admin() && defined( 'IS_PROFILE_PAGE' ) && IS_PROFILE_PAGE ) {
$user_id = get_current_user_id();
// If is another user's profile page
} elseif ( is_admin() && current_user_can( 'manage_options' ) && ! empty( $_GET['user_id'] ) && is_numeric( $_GET['user_id'] ) ) {
$user_id = absint( $_GET['user_id'] );
// Otherwise something is wrong.
} else {
$user_id = get_current_user_id();
}
// Ensure we have a valid URL with an allowed meme type.
$image_url = $this->normalize_url( esc_url( $data['uwp_crop'] ) );
$filetype = wp_check_filetype( $image_url );
$errors = new WP_Error();
if ( empty( $image_url ) || empty( $filetype['ext'] ) ) {
$errors->add( 'something_wrong', __( 'Something went wrong. Please contact site admin.', 'userswp' ) );
}
if ( $errors->has_errors() ) {
return $errors;
}
// Retrieve current thumbnail.
$current_field = 'avatar' === $type ? 'avatar_thumb' : 'banner_thumb';
$current_thumbnail = $this->normalize_url( uwp_get_usermeta( $user_id, $current_field, '' ) );
$thumb_postfix = '_uwp_' . $type . '_thumb';
if ( $image_url ) {
if ( $type == 'avatar' ) {
$avatar_size = uwp_get_upload_image_size();
$full_width = $avatar_size['width'];
} else {
$banner_size = uwp_get_upload_image_size( 'banner' );
$full_width = $banner_size['width'];
}
add_filter( 'upload_dir', 'uwp_handle_multisite_profile_image', 10, 1 );
$uploads = wp_upload_dir();
remove_filter( 'upload_dir', 'uwp_handle_multisite_profile_image' );
$upload_url = $uploads['baseurl'];
$upload_path = $uploads['basedir'];
$image_path = str_replace( $upload_url, $upload_path, $image_url );
$ext = $filetype['ext']; // to get extension
$name = sanitize_file_name( pathinfo( $image_path, PATHINFO_FILENAME ) ); //file name without extension
$thumb_image_name = $name . $thumb_postfix . '.' . $ext;
$thumb_image_location = str_replace( $name . '.' . $ext, $thumb_image_name, $image_path );
//Get the new coordinates to crop the image.
$x = $data['x'];
$y = $data['y'];
$w = $data['w'];
$h = $data['h'];
//Scale the image based on cropped width setting
$scale = $full_width / $w;
//$scale = 1; // no scaling
// check we are not editing another user file
$db_value = trailingslashit( $uploads['subdir'] ) . $thumb_image_name;
$meta_table = get_usermeta_table_prefix() . 'uwp_usermeta';
$file_exists = $wpdb->get_var( $wpdb->prepare( "SELECT user_id FROM {$meta_table} WHERE ( `avatar_thumb` = %s OR `banner_thumb` = %s ) ", $db_value, $db_value ) ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
// if file already exists then we should not be cropping it.
if ( $file_exists ) {
wp_die( esc_html__( 'Something went wrong. Please contact site admin.', 'userswp' ), 403 );
}
$cropped = uwp_resizeThumbnailImage( $thumb_image_location, $image_path, $x, $y, $w, $h, $scale );
$cropped = str_replace( $upload_path, $upload_url, $cropped );
// Remove previous avatar/banner
$unlink_img = '';
if ( $unlink_prev_img && $current_thumbnail ) {
$unlink_img = untrailingslashit( $upload_path ) . '/' . ltrim( $current_thumbnail, '/' );
}
// remove the uploads path for easy migrations
$cropped = str_replace( $upload_url, '', $cropped );
if ( $type == 'avatar' ) {
uwp_update_usermeta( $user_id, 'avatar_thumb', $cropped );
} else {
uwp_update_usermeta( $user_id, 'banner_thumb', $cropped );
}
if ( $unlink_img && $unlink_img != $thumb_image_location && is_file( $unlink_img ) && file_exists( $unlink_img ) ) {
@unlink( $unlink_img );
$unlink_ori_img = str_replace( '_uwp_' . $type . '_thumb' . '.', '.', $unlink_img );
if ( is_file( $unlink_ori_img ) && file_exists( $unlink_ori_img ) ) {
@unlink( $unlink_ori_img );
}
}
}
if ( is_admin() ) {
if ( $user_id == get_current_user_id() ) {
$redirect_url = admin_url( 'profile.php' );
} else {
$redirect_url = admin_url( 'user-edit.php?user_id=' . $user_id );
}
} elseif ( uwp_current_page_url() ) {
$redirect_url = uwp_current_page_url();
} else {
$redirect_url = uwp_build_profile_tab_url( $user_id );
}
return $redirect_url;
}
/**
* Normalizes a URL.
*
*/
public function normalize_url( $url ) {
// Normalize.
$url = wp_normalize_path( $url );
// Remove query vars.
$url = strtok( $url, '?' );
// Split.
$url = explode( '/', $url );
// Clean.
$url = array_diff( $url, array( '..', '.' ) );
// Rejoin and return.
return implode( '/', $url );
}
/**
* Processes avatar and banner image reset.
*
* @param string $type Image type. Default 'avatar'.
*
* @return bool|WP_Error|string Profile url.
* @package userswp
*
*/
public function process_image_reset( $type ) {
if ( ! is_user_logged_in() ) {
return false;
}
if ( empty( $_POST['uwp_reset_nonce'] ) || ! wp_verify_nonce( $_POST['uwp_reset_nonce'], 'uwp_reset_nonce_' . $type ) ) {
return;
}
if ( is_admin() && defined( 'IS_PROFILE_PAGE' ) && IS_PROFILE_PAGE ) {
$user_id = get_current_user_id();
// If is another user's profile page
} elseif ( is_admin() && ! empty( $_GET['user_id'] ) && is_numeric( $_GET['user_id'] ) ) {
$user_id = absint( $_GET['user_id'] );
// Otherwise something is wrong.
} else {
$user_id = get_current_user_id();
}
$errors = new WP_Error();
if ( empty( $user_id ) ) {
$errors->add( 'something_wrong', __( 'Something went wrong. Please try again.', 'userswp' ) );
}
$error_code = $errors->get_error_code();
if ( ! empty( $error_code ) ) {
return $errors;
}
if ( $type == 'avatar' ) {
uwp_update_usermeta( $user_id, 'avatar_thumb', '' );
} elseif ( $type == 'banner' ) {
uwp_update_usermeta( $user_id, 'banner_thumb', '' );
} else {
// Do nothing
}
if ( is_admin() ) {
if ( $user_id == get_current_user_id() ) {
$redirect_url = admin_url( 'profile.php' );
} else {
$redirect_url = admin_url( 'user-edit.php?user_id=' . $user_id );
}
} elseif ( uwp_current_page_url() ) {
$redirect_url = uwp_current_page_url();
} else {
$redirect_url = uwp_build_profile_tab_url( $user_id );
}
return $redirect_url;
}
/**
* Displays links in a dropdown
*
* @param $options
*
* @package userswp
*
* @since 1.0.0
*/
public function output_dashboard_links( $options ) {
if ( ! empty( $options ) ) {
$class = uwp_get_option( 'design_style', 'bootstrap' ) == 'bootstrap' ? 'form-control' : 'aui-select2';
echo '<select class="' . esc_attr( $class ) . '" onchange="window.location = jQuery(this).val();">';
$this->output_options( $options );
echo '</select>';
}
}
/**
* Displays options for the dashboard links
*
* @param $options
*
* @package userswp
*
* @since 1.0.0
*/
public function output_options( $options ) {
if ( ! empty( $options ) ) {
foreach ( $options as $key => $link ) {
if ( ! isset( $link['text'] ) && isset( $link[0] ) && is_array( $link[0] ) ) {
$this->output_options( $link );
} elseif ( ! empty( $link['optgroup'] ) && $link['optgroup'] == 'open' ) {
echo "<optgroup label='" . esc_attr( $link['text'] ) . "'>";
} elseif ( ! empty( $link['optgroup'] ) && $link['optgroup'] == 'close' ) {
echo '</optgroup>';
} elseif ( ! empty( $link['text'] ) ) {
echo '<option value="' . ( ! empty( $link['url'] ) ? esc_url( $link['url'] ) : '' ) . '"' . selected( ! empty( $link['selected'] ), true, false ) . ( ! empty( $link['disabled'] ) ? ' disabled' : '' ) . '' . ( ! empty( $link['display_none'] ) ? ' style="display:none;"' : '' ) . '>';
echo esc_attr__( $link['text'], 'userswp' );
echo '</option>';
}
}
}
}
/**
* Displays UsersWP notices in forms.
*
* @param string $type Form type
*
* @return void
* @since 1.0.0
* @package userswp
*
*/
public function display_notices( $type ) {
global $uwp_notices;
if ( is_array( $uwp_notices ) ) {
foreach ( $uwp_notices as $notice ) {
// If the notification is type specific then only output on that type
if ( is_array( $notice ) ) {
foreach ( $notice as $key => $val ) {
if ( $key == $type ) {
echo wp_kses_post( $val );
}
}
} elseif ( ! empty( $notice ) ) {
echo wp_kses_post( $notice );
}
}
}
if ( $type == 'change' ) {
$user_id = get_current_user_id();
$password_nag = get_user_option( 'default_password_nag', $user_id );
if ( $password_nag ) {
$change_page = uwp_get_page_id( 'change_page', false );
$remove_nag_url = add_query_arg( 'uwp_remove_nag', 'yes', get_permalink( $change_page ) );
if ( isset( $_GET['uwp_remove_nag'] ) && $_GET['uwp_remove_nag'] == 'yes' ) {
delete_user_meta( $user_id, 'default_password_nag' );
$message = sprintf( __( 'We have removed the system generated password warning for you. From this point forward you can continue to access our site as usual. To go to home page, <a href="%s">click here</a>.', 'userswp' ), home_url( '/' ) );
echo aui()->alert(
array( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
'class' => 'text-center',
'type' => 'success',
'content' => wp_kses_post( $message ),
)
);
} else {
$message = sprintf( __( '<strong>Warning</strong>: It seems like you are using a system generated password. Please change the password in this page. If this is not a problem for you, you can remove this warning by <a href="%s">clicking here</a>.', 'userswp' ), $remove_nag_url );
echo aui()->alert(
array( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
'class' => 'text-center',
'type' => 'warning',
'content' => wp_kses_post( $message ),
)
);
}
}
}
}
/**
* Processes register form submission.
*
* @since 1.0.0
* @package userswp
*
*/
public function process_register() {
$data = $_POST;
if ( ! isset( $data['uwp_register_nonce'] ) ) {
return;
}
global $uwp_notices;
if ( isset( $data['uwp_register_hp'] ) && '' != $data['uwp_register_hp'] ) {
wp_die( esc_html__( 'No spam please!', 'userswp' ) );
}
if ( ! isset( $data['uwp_register_nonce'] ) || ! wp_verify_nonce( $data['uwp_register_nonce'], 'uwp-register-nonce' ) ) {
$message = aui()->alert(
array(
'type' => 'error',
'content' => __( 'Security verification failed. Try again.', 'userswp' ),
)
);
if ( wp_doing_ajax() ) {
wp_send_json_error( array( 'message' => $message ) );
} else {
$uwp_notices[] = array( 'register' => $message );
return;
}
}
$hash = substr( hash( 'SHA256', AUTH_KEY . site_url() ), 0, 25 );
if ( empty( $data['uwp_register_hash'] ) || $hash != $data['uwp_register_hash'] ) {
$message = aui()->alert(
array(
'type' => 'error',
'content' => __( 'Security hash failed. Try again.', 'userswp' ),
)
);
if ( wp_doing_ajax() ) {
wp_send_json_error( array( 'message' => $message ) );
} else {
$uwp_notices[] = array( 'register' => $message );
return;
}
}
if ( ! get_option( 'users_can_register' ) ) {
$message = aui()->alert(
array(
'type' => 'error',
'content' => __( 'User registration is currently not allowed. Please check settings of your site.', 'userswp' ),
)
);
if ( wp_doing_ajax() ) {
wp_send_json_error( array( 'message' => $message ) );
} else {
$uwp_notices[] = array( 'register' => $message );
return;
}
}
$files = $_FILES;
$errors = new WP_Error();
$file_obj = new UsersWP_Files();
do_action( 'uwp_before_validate', 'register' );
$result = uwp_validate_fields( $data, 'register' );
$result = apply_filters( 'uwp_validate_result', $result, 'register', $data );
if ( is_wp_error( $result ) ) {
$message = aui()->alert(
array(
'type' => 'error',
'content' => $result->get_error_message(),
)
);
if ( wp_doing_ajax() ) {
wp_send_json_error( array( 'message' => $message ) );
} else {
$uwp_notices[] = array( 'register' => $message );
return;
}
}
$uploads_result = $file_obj->validate_uploads( $files, 'register' );
if ( is_wp_error( $uploads_result ) ) {
$message = aui()->alert(
array(
'type' => 'error',
'content' => $uploads_result->get_error_message(),
)
);
if ( wp_doing_ajax() ) {
wp_send_json_error( array( 'message' => $message ) );
} else {
$uwp_notices[] = array( 'register' => $message );
return;
}
}
do_action( 'uwp_after_validate', $result, 'register', $data );
$result = array_merge( $result, $uploads_result );
if ( isset( $result['password'] ) && ! empty( $result['password'] ) ) {
$password = $result['password'];
$generated_password = false;
} else {
$password = wp_generate_password();
$this->generated_password = $password;
$generated_password = true;
}
$first_name = '';
if ( isset( $result['first_name'] ) && ! empty( $result['first_name'] ) ) {
$first_name = $result['first_name'];
}
$last_name = '';
if ( isset( $result['last_name'] ) && ! empty( $result['last_name'] ) ) {
$last_name = $result['last_name'];
}
if ( isset( $result['display_name'] ) && ! empty( $result['display_name'] ) ) {
$display_name = $result['display_name'];
} elseif ( ! empty( $first_name ) || ! empty( $last_name ) ) {
$display_name = $first_name . ' ' . $last_name;
} else {
$display_name = ! empty( $result['username'] ) ? $result['username'] : '';
}
$user_url = '';
if ( isset( $result['user_url'] ) && ! empty( $result['user_url'] ) ) {
$user_url = esc_url_raw( $result['user_url'] );
}
$user_login = ! empty( $result['username'] ) ? $result['username'] : '';
$email = ! empty( $result['email'] ) ? sanitize_email( $result['email'] ) : '';
if ( empty( $user_login ) ) {
$user_login = sanitize_user( str_replace( ' ', '', $display_name ), true );
if ( ! ( validate_username( $user_login ) && ! username_exists( $user_login ) ) ) {
$new_user_login = strstr( $email, '@', true );
if ( validate_username( $user_login ) && username_exists( $user_login ) ) {
$user_login = sanitize_user( $new_user_login, true );
}
if ( validate_username( $user_login ) && username_exists( $user_login ) ) {
$user_append_text = rand( 10, 1000 );
$user_login = sanitize_user( $new_user_login . $user_append_text, true );
}
if ( ! ( validate_username( $user_login ) && ! username_exists( $user_login ) ) ) {
$user_login = $email;
}
}
} elseif ( ! validate_username( $user_login ) ) {
$message = aui()->alert(
array(
'type' => 'error',
'content' => __( 'Sorry, that username is not allowed.', 'userswp' ),
)
);
if ( wp_doing_ajax() ) {
wp_send_json_error( array( 'message' => $message ) );
} else {
$uwp_notices[] = array( 'register' => $message );
return;
}
}
$args = array(
'user_login' => sanitize_user( $user_login ),
'user_email' => sanitize_email( $email ),
'user_pass' => $password,
'display_name' => sanitize_text_field( $display_name ),
'first_name' => esc_attr( $first_name ),
'last_name' => esc_attr( $last_name ),
'user_url' => esc_url_raw( $user_url ),
);
$user_id = wp_insert_user( $args );
if ( is_wp_error( $user_id ) ) {
$message = aui()->alert(
array(
'type' => 'error',
'content' => $user_id->get_error_message(),
)
);
if ( wp_doing_ajax() ) {
wp_send_json_error( array( 'message' => $message ) );
} else {
$uwp_notices[] = array( 'register' => $message );
return;
}
}
$result = apply_filters( 'uwp_before_extra_fields_save', $result, 'register', $user_id );
$form_id = 1;
if ( isset( $data['uwp_register_form_id'] ) && ! empty( $data['uwp_register_form_id'] ) ) {
update_user_meta( $user_id, '_uwp_register_form_id', (int) $data['uwp_register_form_id'] );
$form_id = (int) $data['uwp_register_form_id'];
}
$user_role = uwp_get_register_form_by( $form_id, 'user_role' );
if ( isset( $user_role ) && ! empty( $user_role ) ) {
$user_roles = uwp_get_user_roles();
$chosen_role = strtolower( $user_role );
if ( ! empty( $user_roles ) ) {
$wp_roles = wp_roles();
if ( $wp_roles->is_role( $chosen_role ) && in_array( $chosen_role, array_keys( $user_roles ) ) ) {
$new_user = get_userdata( $user_id );
if ( $new_user ) {
$new_user->set_role( $chosen_role );
}
}
}
}
$save_result = $this->save_user_extra_fields( $user_id, $result, 'register' );
$save_result = apply_filters( 'uwp_after_extra_fields_save', $save_result, $result, 'register', $user_id );
if ( is_wp_error( $save_result ) ) {
$message = aui()->alert(
array(
'type' => 'error',
'content' => $save_result->get_error_message(),
)
);
if ( wp_doing_ajax() ) {
wp_send_json_error( array( 'message' => $message ) );
} else {
$uwp_notices[] = array( 'register' => $message );
return;
}
}
if ( ! $save_result ) {
$message = aui()->alert(
array(
'type' => 'error',
'content' => __( 'Something went wrong. Please contact site admin.', 'userswp' ),
)
);
if ( wp_doing_ajax() ) {
wp_send_json_error( array( 'message' => $message ) );
} else {
$uwp_notices[] = array( 'register' => $message );
return;
}
}
//updating bio field after saving extra fields to reflect the points in mycred add on.
if ( isset( $result['bio'] ) && ! empty( $result['bio'] ) ) {
$args = array(
'ID' => $user_id,
'description' => $result['bio'],
);
wp_update_user( $args );
}
do_action( 'uwp_after_custom_fields_save', 'register', $data, $result, $user_id );
// Unset post data to empty the form on submit
$excluded_post_data = apply_filters( 'uwp_register_excluded_post_reset_fields', array( 'uwp_register_nonce' ) );
foreach ( $data as $key => $value ) {
if ( isset( $key ) && ! in_array( $key, $excluded_post_data ) ) {
unset( $_POST[ $key ] );
}
}
$reg_action = uwp_get_register_form_by( $form_id, 'reg_action' );
if ( ! $reg_action ) {
$reg_action = uwp_get_option( 'uwp_registration_action', false );
}
$form_fields = apply_filters( 'uwp_send_mail_form_fields', '', 'register', $user_id );
if ( $reg_action == 'require_email_activation' && ! $generated_password ) {
$user_data = get_userdata( $user_id );
$activation_link = uwp_get_activation_link( $user_id );
$message = __( 'To activate your account, visit the following address:', 'userswp' ) . "\r\n\r\n";
$message .= "<a href='" . esc_url_raw( $activation_link ) . "' target='_blank'>" . esc_url_raw( $activation_link ) . '</a>' . "\r\n";
$activate_message = '<p><b>' . __( 'Please activate your account :', 'userswp' ) . '</b></p><p>' . $message . '</p>';
$activate_message = apply_filters( 'uwp_activation_mail_message', $activate_message, $user_id );
$email_vars = array(
'user_id' => $user_id,
'login_details' => $activate_message,
'activation_link' => $activation_link,
);
UsersWP_Mails::send( $user_data->user_email, 'registration_activate', $email_vars );
} elseif ( $reg_action != 'require_admin_review' ) {
$user_data = get_userdata( $user_id );
if ( isset( $this->generated_password ) && ! empty( $this->generated_password ) ) {
if ( ! uwp_get_option( 'change_disable_password_nag' ) ) {
update_user_meta( $user_id, 'default_password_nag', true ); //Set up the Password change nag.
}
$message_pass = $this->generated_password;
$this->generated_password = false;
} else {
$message_pass = __( 'Password you entered during registration.', 'userswp' );
}
$message = '<p><b>' . __( 'Your login Information :', 'userswp' ) . '</b></p>
<p>' . __( 'Username:', 'userswp' ) . ' ' . $user_data->user_login . '</p>
<p>' . __( 'Password:', 'userswp' ) . ' ' . $message_pass . '</p>';
$message = apply_filters( 'uwp_register_mail_message', $message, $user_id, $this->generated_password );
$email_vars = array(
'user_id' => $user_id,
'login_details' => $message,
'form_fields' => $form_fields,
);
UsersWP_Mails::send( $user_data->user_email, 'registration_success', $email_vars );
}
$error_code = $errors->get_error_code();
if ( ! empty( $error_code ) ) {
$message = aui()->alert(
array(
'type' => 'error',
'content' => $result->get_error_message(),
)
);
if ( wp_doing_ajax() ) {
wp_send_json_error( array( 'message' => $message ) );
} else {
$uwp_notices[] = array( 'register' => $message );
return;
}
}
if ( $reg_action != 'require_admin_review' ) {
$user_data = get_userdata( $user_id );
$extras = '<p><b>' . __( 'User Information :', 'userswp' ) . '</b></p>
<p>' . __( 'First Name:', 'userswp' ) . ' ' . $user_data->first_name . '</p>
<p>' . __( 'Last Name:', 'userswp' ) . ' ' . $user_data->last_name . '</p>
<p>' . __( 'Username:', 'userswp' ) . ' ' . $user_data->user_login . '</p>
<p>' . __( 'Email:', 'userswp' ) . ' ' . $user_data->user_email . '</p>';
$extras = apply_filters( 'uwp_admin_mail_extras', $extras, 'register_admin', $user_id );
$email_vars = array(
'user_id' => $user_id,
'extras' => $extras,
'form_fields' => $form_fields,
);
UsersWP_Mails::send( get_option( 'admin_email' ), 'registration_success', $email_vars, true );
}
if ( $reg_action == 'auto_approve_login' ) {
$res = wp_signon(
array(
'user_login' => $user_login,
'user_password' => $password,
'remember' => false,
)
);
if ( is_wp_error( $res ) ) {
$message = aui()->alert(
array(
'type' => 'error',
'content' => $res->get_error_message(),
)
);
if ( wp_doing_ajax() ) {
wp_send_json_error( array( 'message' => $message ) );
} else {
$uwp_notices[] = array( 'register' => $message );
}
} else {
$redirect_to = $this->get_register_redirect_url( $data, $user_id );
do_action( 'uwp_after_process_register', $result, $user_id );
if ( wp_doing_ajax() ) {
$message = aui()->alert(
array(
'type' => 'success',
'content' => __( 'Account registered successfully. Redirecting...', 'userswp' ),
)
);
$response = array(
'message' => $message,
'redirect' => $redirect_to,
);
wp_send_json_success( $response );
} else {
wp_safe_redirect( $redirect_to );
}
exit();
}
} else {
if ( $reg_action == 'require_email_activation' ) {
$resend_link = uwp_get_register_page_url();
$resend_link = add_query_arg(
array(
'user_id' => $user_id,
'action' => 'uwp_resend',
'_nonce' => wp_create_nonce( 'uwp_resend' ),
),
$resend_link
);
$message = aui()->alert(
array(
'type' => 'success',
'content' => sprintf( __( 'An email has been sent to your registered email address. Please click the activation link to proceed. <a href="%s">Resend</a>.', 'userswp' ), $resend_link ),
)
);
} elseif ( $reg_action == 'require_admin_review' && defined( 'UWP_MOD_VERSION' ) ) {
update_user_meta( $user_id, 'uwp_mod', '1' );
do_action( 'uwp_require_admin_review', $user_id, $result );
$message = aui()->alert(
array(
'type' => 'success',
'content' => __( 'Your account is under moderation. We will email you once its approved.', 'userswp' ),
)
);
} else {
$login_page_url = wp_login_url();
if ( $generated_password ) {
$msg = sprintf( __( 'Account registered successfully. A password has been generated and mailed to your registered Email ID. Please login %1$shere%2$s.', 'userswp' ), '<a href="' . $login_page_url . '">', '</a>' );
} else {
$msg = sprintf( __( 'Account registered successfully. Please login %1$shere%2$s', 'userswp' ), '<a href="' . $login_page_url . '">', '</a>' );
}
$message = aui()->alert(
array(
'type' => 'success',
'content' => $msg,
)
);
}
do_action( 'uwp_after_process_register', $result, $user_id );
if ( wp_doing_ajax() ) {
wp_send_json_success( array( 'message' => $message ) );
} else {
$uwp_notices[] = array( 'register' => $message );
}
}
if ( wp_doing_ajax() ) {
wp_send_json_error();
} // if we got this far there is a problem
}
/**
* Saves UsersWP related user custom fields.
*
* @param int $user_id User ID.
* @param array $data Result array.
* @param string $type Form type.
*
* @return bool True when success. False when failure.
* @since 1.0.0
* @package userswp
*
*/
public function save_user_extra_fields( $user_id, $data, $type ) {
if ( empty( $user_id ) || empty( $data ) || empty( $type ) ) {
return false;
}
// custom user fields not applicable for login and forgot
if ( $type == 'login' || $type == 'forgot' ) {
return true;
}
if ( $type == 'account' || $type == 'register' ) {
if ( isset( $data['password'] ) ) {
unset( $data['password'] );
}
}
if ( $type == 'register' ) {
if ( isset( $data['username'] ) ) {
unset( $data['username'] );
}
if ( isset( $data['email'] ) ) {
unset( $data['email'] );
}
}
if ( empty( $data ) ) {
// no extra fields. so just return
return true;
} else {
foreach ( $data as $key => $value ) {
if ( 'uwp_language' == $key ) {
update_user_meta( $user_id, 'locale', $value );
}
uwp_update_usermeta( $user_id, $key, $value );
}
return true;
}
}
public function get_register_redirect_url( $data, $user ) {
if ( is_int( $user ) ) {
$user = get_userdata( $user );
}
$redirect_page_id = $custom_url = '';
if ( isset( $data['uwp_register_form_id'] ) && ! empty( $data['uwp_register_form_id'] ) ) {
$form_id = (int) $data['uwp_register_form_id'];
$redirect_page_id = uwp_get_register_form_by( $form_id, 'redirect_to' );
$custom_url = uwp_get_register_form_by( $form_id, 'custom_url' );
}
if ( ! $redirect_page_id ) {
$redirect_page_id = uwp_get_option( 'register_redirect_to', '' );
$custom_url = uwp_get_option( 'register_redirect_custom_url' );
}
if ( isset( $_REQUEST['redirect_to'] ) && ! empty( $_REQUEST['redirect_to'] ) ) {
$redirect_to = esc_url_raw( $_REQUEST['redirect_to'] );
} elseif ( isset( $data['redirect_to'] ) && ! empty( $data['redirect_to'] ) ) {
$redirect_to = esc_url_raw( $data['redirect_to'] );
} elseif ( isset( $redirect_page_id ) && (int) $redirect_page_id > 0 ) {
if ( uwp_is_wpml() ) {
$wpml_page_id = uwp_wpml_object_id( $redirect_page_id, 'page', true, ICL_LANGUAGE_CODE );
if ( ! empty( $wpml_page_id ) ) {
$redirect_page_id = $wpml_page_id;
}
}
$redirect_to = get_permalink( $redirect_page_id );
} elseif ( isset( $redirect_page_id ) && (int) $redirect_page_id == - 1 && wp_get_referer() ) {
$redirect_to = esc_url( wp_get_referer() );
} elseif ( isset( $redirect_page_id ) && (int) $redirect_page_id == - 2 && $custom_url ) {
$redirect_to = $custom_url;
} else {
if ( $user && $user->has_cap( 'manage_options' ) ) {
$redirect_to = admin_url();
} else {
$redirect_to = home_url( '/' );
}
$redirect_to = apply_filters( 'registration_redirect', $redirect_to );
}
return apply_filters( 'uwp_register_redirect', $redirect_to, $redirect_page_id, $data );
}
/**
* Processes login form submission.
*
* @since 1.0.0
* @package userswp
*
*/
public function process_login() {
$data = $_POST;
if ( ! isset( $data['uwp_login_nonce'] ) ) {
return;
}
if ( ! isset( $data['uwp_login_nonce'] ) || ! wp_verify_nonce( $data['uwp_login_nonce'], 'uwp-login-nonce' ) ) {
$message = aui()->alert(
array(
'type' => 'error',
'content' => __( 'Security verification failed. Try again.', 'userswp' ),
)
);
if ( wp_doing_ajax() ) {
wp_send_json_error( array( 'message' => $message ) );
} else {
return;
}
}
global $uwp_notices;
do_action( 'uwp_before_validate', 'login' );
$result = uwp_validate_fields( $data, 'login' );
$result = apply_filters( 'uwp_validate_result', $result, 'login', $data );
if ( is_wp_error( $result ) ) {
$message = aui()->alert(
array(
'type' => 'error',
'content' => $result->get_error_message(),
)
);
if ( wp_doing_ajax() ) {
wp_send_json_error( array( 'message' => $message ) );
} else {
$uwp_notices[] = array( 'login' => $message );
return;
}
}
do_action( 'uwp_after_validate', $result, 'login', $data );
if ( isset( $data['remember_me'] ) && $data['remember_me'] == 'forever' ) {
$remember_me = true;
} else {
$remember_me = false;
}
remove_action( 'authenticate', 'gglcptch_login_check', 21 );
global $wp2fa;
if ( wp_doing_ajax() && isset( $wp2fa ) && ! empty( $wp2fa ) ) {
remove_action( 'wp_login', array( $wp2fa->login, 'wp_login' ), 20 );
}
$user = wp_signon(
array(
'user_login' => $result['username'],
'user_password' => $result['password'],
'remember' => $remember_me,
)
);
add_action( 'authenticate', 'gglcptch_login_check', 21, 1 );
if ( wp_doing_ajax() && ! is_wp_error( $user ) && isset( $wp2fa ) && ! empty( $wp2fa ) ) {
$two_fa = $this->check_2fa( $user );
if ( isset( $two_fa ) && ! empty( $two_fa ) ) {
if ( is_wp_error( $two_fa ) ) {
$message = aui()->alert(
array(
'type' => 'error',
'content' => $two_fa->get_error_message(),
)
);
wp_send_json_error( array( 'message' => $message ) );
} else {
wp_send_json_success(
array(
'html' => $two_fa,
'is_2fa' => true,
)
);
}
}
}
if ( is_wp_error( $user ) ) {
$message = aui()->alert(
array(
'type' => 'error',
'content' => $user->get_error_message(),
)
);
if ( wp_doing_ajax() ) {
wp_send_json_error( array( 'message' => $message ) );
} else {
$uwp_notices[] = array( 'login' => $message );
return;
}
} else {
do_action( 'uwp_after_process_login', $data );
$message = aui()->alert(
array(
'type' => 'success',
'content' => __( 'Login successful. Redirecting...', 'userswp' ),
)
);
if ( wp_doing_ajax() ) {
$redirect_to = '';
if ( 1 == uwp_get_option( 'login_modal_enable_redirect' ) ) {
$redirect_to = $this->get_login_redirect_url( $data, $user );
}
wp_send_json_success(
array(
'message' => $message,
'redirect' => $redirect_to,
)
);
} else {
$redirect_to = $this->get_login_redirect_url( $data, $user );
wp_safe_redirect( $redirect_to );
exit();
}
}
}
public function check_2fa( $user ) {
if ( 1 == uwp_get_option( 'disable_wp_2fa' ) ) {
return;
}
if ( ! $user ) {
$user = wp_get_current_user();
}
global $wp2fa;
$errors = new WP_Error();
if ( ! \WP2FA\Admin\Helpers\User_Helper::is_user_using_two_factor( $user->ID ) ) {
return;
}
// Invalidate the current login session to prevent from being re-used.
\WP2FA\Authenticator\Login::destroy_current_session_for_user( $user );
// Also clear the cookies which are no longer valid.
wp_clear_auth_cookie();
$login_nonce = \WP2FA\Authenticator\Login::create_login_nonce( $user->ID );
if ( ! $login_nonce ) {
$errors->add( 'failed_login_nonce', __( 'Failed to create a login nonce.', 'userswp' ) );
return $errors;
}
$provider = \WP2FA\Authenticator\Login::get_available_providers_for_user( $user );
ob_start();
?>
<div class="uwp-2fa-methods-wrap">
<form name="validate_2fa_form" id="validate_2fa_form" class="validate_2fa_form" action="" method="post"
autocomplete="off">
<input type="hidden" name="provider" id="provider" value="<?php echo esc_attr( $provider ); ?>"/>
<input type="hidden" name="uwp-auth-id" id="uwp-auth-id" value="<?php echo esc_attr( $user->ID ); ?>"/>
<input type="hidden" name="wp-auth-nonce" id="wp-auth-nonce"
value="<?php echo esc_attr( $login_nonce['key'] ); ?>"/>
<?php
// Check to see what provider is set and give the relevant authentication page.
if ( 'totp' === $provider ) {
?>
<p><?php esc_html_e( 'Please enter the authentication code from your 2FA authentication app below to login:', 'userswp' ); ?></p>
<?php
echo aui()->input(
array( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
'type' => 'tel',
'id' => 'authcode',
'name' => 'authcode',
'placeholder' => esc_attr__( 'Authentication Code', 'userswp' ),
'value' => '',
'label' => esc_html__( 'Authentication Code', 'userswp' ),
)
);
echo aui()->button(
array( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
'type' => 'submit',
'class' => 'btn btn-primary btn-block text-uppercase uwp-2fa-submit',
'name' => 'submit',
'icon' => '',
'content' => esc_html__( 'Log In', 'userswp' ),
)
);
} elseif ( 'email' === $provider ) {
$has_token = \WP2FA\Authenticator\Authentication::user_has_token( $user->ID );
if ( empty( $has_token ) || ! $has_token ) {
\WP2FA\Admin\Setup_Wizard::send_authentication_setup_email( $user->ID );
}
?>
<p><?php esc_html_e( 'Please enter the 2FA verification code sent to your email address to login:', 'userswp' ); ?></p>
<?php
echo aui()->input(
array( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
'type' => 'tel',
'id' => 'authcode',
'name' => 'wp-2fa-email-code',
'placeholder' => esc_attr__( 'Verification Code', 'userswp' ),
'value' => '',
'label' => esc_html__( 'Verification Code', 'userswp' ),
'extra_attributes' => array(
'size' => 20,
'pattern' => '[0-9]*',
),
)
);
echo aui()->button(
array( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
'type' => 'submit',
'class' => 'btn btn-primary text-uppercase uwp-2fa-submit',
'name' => 'submit',
'icon' => '',
'content' => esc_html__( 'Log In', 'userswp' ),
)
);
echo aui()->button(
array( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
'type' => 'button',
'class' => 'btn btn-secondary text-uppercase uwp-2fa-email-resend',
'name' => 'wp-2fa-email-code-resend',
'icon' => '',
'content' => esc_html__( 'Resend Code', 'userswp' ),
)
);
}
?>
</form>
</div>
<?php
$codes_remaining = \WP2FA\Authenticator\Backup_Codes::codes_remaining_for_user( $user );
if ( isset( $codes_remaining ) && $codes_remaining > 0 ) {
?>
<div class="uwp-2fa-methods-wrap" style="display:none;">
<form name="validate_2fa_backup_codes_form" id="validate_2fa_backup_codes_form"
class="validate_2fa_backup_codes_form" action="" method="post" autocomplete="off">
<input type="hidden" name="provider" id="provider" value="backup_codes"/>
<input type="hidden" name="uwp-auth-id" id="uwp-auth-id"
value="<?php echo esc_attr( $user->ID ); ?>"/>
<input type="hidden" name="wp-auth-nonce" id="wp-auth-nonce"
value="<?php echo esc_attr( $login_nonce['key'] ); ?>"/>
<div class="uwp-backup-fields">
<?php
echo aui()->input(
array( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
'type' => 'tel',
'id' => 'authcode',
'name' => 'wp-2fa-backup-code',
'placeholder' => esc_attr__( 'Enter backup code', 'userswp' ),
'value' => '',
'label' => esc_html__( 'Backup Code', 'userswp' ),
'extra_attributes' => array(
'size' => 20,
'pattern' => '[0-9]*',
),
)
);
echo aui()->button(
array( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
'type' => 'submit',
'class' => 'btn btn-primary btn-block text-uppercase uwp-2fa-submit',
'name' => 'submit',
'icon' => '',
'content' => esc_html__( 'Log In', 'userswp' ),
)
);
?>
</div>
</form>
</div>
<a href="#" class="uwp-switch-2fa-methods text-center d-block"><?php esc_html_e( 'Or, use a backup code.', 'userswp' ); ?></a>
<script type="text/javascript">
jQuery('.uwp-switch-2fa-methods').on('click',
function (e) {
e.preventDefault();
jQuery('.uwp-auth-modal .modal-content .modal-error').html('');
jQuery('.uwp-2fa-methods-wrap').toggle();
return false;
}
);
</script>
<?php
}
return ob_get_clean();
}
public function process_login_2fa() {
if ( ! isset( $_POST['uwp-auth-id'], $_POST['wp-auth-nonce'] ) ) {
return;
}
$auth_id = (int) $_POST['uwp-auth-id'];
$user = get_userdata( $auth_id );
if ( ! $user ) {
$message = aui()->alert(
array(
'type' => 'error',
'content' => __( 'Invalid user data. Please try again.', 'userswp' ),
)
);
wp_send_json_error( array( 'message' => $message ) );
}
global $wp2fa;
$nonce = ( isset( $_POST['wp-auth-nonce'] ) ) ? sanitize_textarea_field( wp_unslash( $_POST['wp-auth-nonce'] ) ) : '';
if ( true !== \WP2FA\Authenticator\Login::verify_login_nonce( $user->ID, $nonce ) ) {
$message = aui()->alert(
array(
'type' => 'error',
'content' => __( 'Invalid request! Please try again.', 'userswp' ),
)
);
wp_send_json_error( array( 'message' => $message ) );
}
if ( isset( $_POST['provider'] ) ) {
$provider = sanitize_textarea_field( wp_unslash( $_POST['provider'] ) );
$providers = \WP2FA\Authenticator\Login::get_available_providers_for_user( $user );
if ( isset( $providers[ $provider ] ) ) {
$provider = $providers[ $provider ];
} elseif ( isset( $provider ) ) {
$provider = $provider;
} else {
$provider = $provider;
}
}
// If this is an email login, or if the user failed validation previously, lets send the code to the user.
if ( 'email' === $provider && true !== \WP2FA\Authenticator\Login::pre_process_email_authentication( $user ) ) {
}
// Validate TOTP.
if ( 'totp' === $provider && true !== \WP2FA\Authenticator\Login::validate_totp_authentication( $user ) ) {
do_action( 'wp_login_failed', $user->user_login );
$message = aui()->alert(
array(
'type' => 'error',
'content' => __( 'Invalid verification code.', 'userswp' ),
)
);
wp_send_json_error( array( 'message' => $message ) );
}
// Validate Email.
if ( 'email' === $provider && true !== \WP2FA\Authenticator\Login::validate_email_authentication( $user ) ) {
do_action( 'wp_login_failed', $user->user_login );
if ( isset( $_REQUEST['wp-2fa-email-code-resend'] ) && 1 == $_REQUEST['wp-2fa-email-code-resend'] ) {
$message = aui()->alert(
array(
'type' => 'info',
'content' => __( 'A new code has been sent.', 'userswp' ),
)
);
wp_send_json_error( array( 'message' => $message ) );
} else {
$message = aui()->alert(
array(
'type' => 'error',
'content' => __( 'Invalid verification code.', 'userswp' ),
)
);
wp_send_json_error( array( 'message' => $message ) );
}
}
// Backup Codes.
if ( 'backup_codes' === $provider && true !== \WP2FA\Authenticator\Login::validate_backup_codes( $user ) ) {
do_action( 'wp_login_failed', $user->user_login );
$message = aui()->alert(
array(
'type' => 'error',
'content' => __( 'Invalid backup code.', 'userswp' ),
)
);
wp_send_json_error( array( 'message' => $message ) );
}
\WP2FA\Authenticator\Login::delete_login_nonce( $user->ID );
$rememberme = false;
$remember = ( isset( $_REQUEST['rememberme'] ) ) ? filter_var( $_REQUEST['rememberme'], FILTER_VALIDATE_BOOLEAN ) : '';
if ( ! empty( $remember ) ) {
$rememberme = true;
}
wp_set_auth_cookie( $user->ID, $rememberme );
do_action( 'two_factor_user_authenticated', $user );
$message = aui()->alert(
array(
'type' => 'success',
'content' => __( 'Validation successful. Redirecting...', 'userswp' ),
)
);
wp_send_json_success( array( 'message' => $message ) );
}
public function get_login_redirect_url( $data, $user ) {
if ( is_int( $user ) ) {
$user = get_userdata( $user );
}
$redirect_page_id = uwp_get_option( 'login_redirect_to', - 1 );
$custom_url = uwp_get_option( 'login_redirect_custom_url' );
if ( $user && isset( $user->roles[0] ) ) {
$user_role = $user->roles[0];
$redirect_page_id = uwp_get_option( 'login_redirect_to_' . $user_role, $redirect_page_id );
$custom_url = uwp_get_option( 'login_redirect_custom_url_' . $user_role );
}
if ( isset( $_REQUEST['redirect_to'] ) && ! empty( $_REQUEST['redirect_to'] ) ) {
$redirect_to = esc_url_raw( $_REQUEST['redirect_to'] );
} elseif ( isset( $data['redirect_to'] ) && ! empty( $data['redirect_to'] ) ) {
$redirect_to = esc_url_raw( $data['redirect_to'] );
} elseif ( isset( $redirect_page_id ) && (int) $redirect_page_id > 0 ) {
if ( uwp_is_wpml() ) {
$wpml_page_id = uwp_wpml_object_id( $redirect_page_id, 'page', true, ICL_LANGUAGE_CODE );
if ( ! empty( $wpml_page_id ) ) {
$redirect_page_id = $wpml_page_id;
}
}
$redirect_to = get_permalink( $redirect_page_id );
} elseif ( isset( $redirect_page_id ) && (int) $redirect_page_id == - 1 && wp_get_referer() ) {
$redirect_to = esc_url( wp_get_referer() );
} elseif ( isset( $redirect_page_id ) && (int) $redirect_page_id == - 2 && ! empty( $custom_url ) ) {
$redirect_to = $custom_url;
} else {
$redirect_to = home_url( '/' );
$redirect_to = apply_filters( 'login_redirect', $redirect_to, '', $user );
}
return apply_filters( 'uwp_login_redirect', $redirect_to, $redirect_page_id, $data, $user );
}
/**
* Processes forgot password form submission.
*
* @since 1.0.0
* @package userswp
*
*/
public function process_forgot() {
$data = $_POST;
if ( ! isset( $data['uwp_forgot_nonce'] ) ) {
return;
}
if ( ! isset( $data['uwp_forgot_nonce'] ) || ! wp_verify_nonce( $data['uwp_forgot_nonce'], 'uwp-forgot-nonce' ) ) {
$message = aui()->alert(
array(
'type' => 'error',
'content' => __( 'Security verification failed. Try again.', 'userswp' ),
)
);
if ( wp_doing_ajax() ) {
wp_send_json_error( $message );
} else {
return;
}
}
global $uwp_notices;
do_action( 'uwp_before_validate', 'forgot' );
$result = uwp_validate_fields( $data, 'forgot' );
$result = apply_filters( 'uwp_validate_result', $result, 'forgot', $data );
if ( is_wp_error( $result ) ) {
$message = aui()->alert(
array(
'type' => 'error',
'content' => $result->get_error_message(),
)
);
if ( wp_doing_ajax() ) {
wp_send_json_error( $message );
} else {
$uwp_notices[] = array( 'forgot' => $message );
return;
}
}
do_action( 'uwp_after_validate', $result, 'forgot', $data );
$user_data = get_user_by( 'email', $data['email'] );
// if no user we fake it and bail
if ( ! $user_data ) {
$args = apply_filters(
'uwp_forgot_error_message',
array(
'type' => 'error',
'content' => __( 'Invalid email or user doesn\'t exists.', 'userswp' ),
)
);
$message = aui()->alert( $args );
if ( wp_doing_ajax() ) {
wp_send_json_success( $message );
} else {
$uwp_notices[] = array( 'forgot' => $message );
return;
}
}
// make sure user account is active before account reset
$mod_value = get_user_meta( $user_data->ID, 'uwp_mod', true );
if ( $mod_value == 'email_unconfirmed' ) {
$message = aui()->alert(
array(
'type' => 'error',
'content' => __( 'Your account is not activated yet. Please activate your account first.', 'userswp' ),
)
);
if ( wp_doing_ajax() ) {
wp_send_json_error( $message );
} else {
$uwp_notices[] = array( 'forgot' => $message );
return;
}
}
$user_data = get_userdata( $user_data->ID );
$allow = apply_filters( 'allow_password_reset', true, $user_data->ID );
if ( ! $allow ) {
return false;
} elseif ( is_wp_error( $allow ) ) {
return false;
}
$as_password = apply_filters( 'uwp_forgot_message_as_password', false );
global $wpdb, $wp_hasher;
$reset_link = '';
if ( $as_password ) {
$new_pass = wp_generate_password( 12, false );
wp_set_password( $new_pass, $user_data->ID );
if ( ! uwp_get_option( 'change_disable_password_nag' ) ) {
update_user_meta( $user_data->ID, 'default_password_nag', true ); //Set up the Password change nag.
}
$message = '<p><b>' . __( 'Your login Information :', 'userswp' ) . '</b></p>';
$message .= '<p>' . sprintf( __( 'Username: %s', 'userswp' ), $user_data->user_login ) . '</p>';
$message .= '<p>' . sprintf( __( 'Password: %s', 'userswp' ), $new_pass ) . '</p>';
} else {
$key = wp_generate_password( 20, false );
do_action( 'retrieve_password_key', $user_data->user_login, $key );
if ( empty( $wp_hasher ) ) {
require_once ABSPATH . 'wp-includes/class-phpass.php';
$wp_hasher = new PasswordHash( 8, true );
}
$hashed = $wp_hasher->HashPassword( $key );
$wpdb->update( $wpdb->users, array( 'user_activation_key' => time() . ':' . $hashed ), array( 'user_login' => $user_data->user_login ) ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
$message = '<p>' . __( 'You have requested to reset your password for the following account:', 'userswp' ) . '</p>';
$message .= home_url( '/' ) . '</p>';
$message .= '<p>' . sprintf( __( 'Username: %s', 'userswp' ), $user_data->user_login ) . '</p>';
$message .= '<p>' . __( 'If this was by mistake, just ignore this email and nothing will happen.', 'userswp' ) . '</p>';
$message .= '<p>' . __( 'To reset your password, click the following link and follow the instructions.', 'userswp' ) . '</p>';
$reset_page = uwp_get_page_id( 'reset_page', false );
if ( $reset_page ) {
$reset_link = add_query_arg(
array(
'key' => $key,
'login' => rawurlencode( $user_data->user_login ),
),
get_permalink( $reset_page )
);
$message .= "<a href='" . $reset_link . "' target='_blank'>" . $reset_link . '</a>' . "\r\n";
} else {
$reset_link = home_url( "reset?key=$key&login=" . rawurlencode( $user_data->user_login ), 'login' );
$message .= "<a href='" . $reset_link . "' target='_blank'>" . $reset_link . '</a>' . "\r\n";
}
$message = apply_filters( 'uwp_forgot_password_message', $message, $user_data, $reset_link );
}
$message = apply_filters( 'uwp_forgot_mail_message', $message, $user_data->ID );
$email_vars = array(
'user_id' => $user_data->ID,
'login_details' => $message,
'reset_link' => $reset_link,
);
UsersWP_Mails::send( $user_data->user_email, 'forgot_password', $email_vars );
do_action( 'uwp_after_process_forgot', $data );
$message = aui()->alert(
array(
'type' => 'success',
'content' => apply_filters( 'uwp_change_password_success_message', __( 'Please check your email.', 'userswp' ), $data ),
)
);
if ( wp_doing_ajax() ) {
wp_send_json_success( $message );
} else {
$uwp_notices[] = array( 'forgot' => $message );
}
}
/**
* Processes change password form submission.
*
* @since 1.0.0
* @package userswp
*
*/
public function process_change() {
$data = $_POST;
if ( ! isset( $data['uwp_change_nonce'] ) || ! wp_verify_nonce( $data['uwp_change_nonce'], 'uwp-change-nonce' ) ) {
return;
}
global $uwp_notices;
if ( is_uwp_account_page() ) {
$notice_type = 'account';
} else {
$notice_type = 'change';
}
do_action( 'uwp_before_validate', 'change' );
$result = uwp_validate_fields( $data, 'change' );
$result = apply_filters( 'uwp_validate_result', $result, 'change', $data );
if ( is_wp_error( $result ) ) {
$message = aui()->alert(
array(
'type' => 'error',
'content' => $result->get_error_message(),
)
);
$uwp_notices[] = array( $notice_type => $message );
return;
}
do_action( 'uwp_after_validate', $result, 'change', $data );
$user_data = get_user_by( 'id', get_current_user_id() );
if ( ! $user_data ) {
$message = aui()->alert(
array(
'type' => 'error',
'content' => $user_data->get_error_message(),
)
);
$uwp_notices[] = array( $notice_type => $message );
return;
}
$email_vars = array(
'user_id' => $user_data->ID,
);
UsersWP_Mails::send( $user_data->user_email, 'change_password', $email_vars );
wp_set_password( $result['password'], $user_data->ID );
$password_nag = get_user_option( 'default_password_nag', $user_data->ID );
if ( $password_nag ) {
delete_user_meta( $user_data->ID, 'default_password_nag' );
}
delete_user_meta( $user_data->ID, 'is_uwp_social_login_no_password' );
$message = aui()->alert(
array(
'type' => 'success',
'content' => apply_filters( 'uwp_change_password_success_message', __( 'Password changed successfully.', 'userswp' ), $data ),
)
);
$uwp_notices[] = array( $notice_type => $message );
do_action( 'uwp_after_process_change', $data );
wp_logout();
exit();
}
/**
* Processes reset password form submission.
*
* @since 1.0.0
* @package userswp
*
*/
public function process_reset() {
$data = $_POST;
if ( isset( $data['uwp_reset_hp'] ) && '' != $data['uwp_reset_hp'] ) {
wp_die( esc_html__( 'No spam please!', 'userswp' ) );
}
if ( ! isset( $data['uwp_reset_nonce'] ) || ! wp_verify_nonce( $data['uwp_reset_nonce'], 'uwp-reset-nonce' ) ) {
return;
}
global $uwp_notices;
do_action( 'uwp_before_validate', 'reset' );
$result = uwp_validate_fields( $data, 'reset' );
$result = apply_filters( 'uwp_validate_result', $result, 'reset', $data );
if ( is_wp_error( $result ) ) {
$message = aui()->alert(
array(
'type' => 'error',
'content' => $result->get_error_message(),
)
);
$uwp_notices[] = array( 'reset' => $message );
return;
}
do_action( 'uwp_after_validate', $result, 'reset', $data );
$login = sanitize_text_field( $data['uwp_reset_username'] );
$key = sanitize_text_field( $data['uwp_reset_key'] );
$user = get_user_by( 'login', $login );
if ( ! $user ) {
$message = aui()->alert(
array(
'type' => 'error',
'content' => __( 'Invalid username.', 'userswp' ),
)
);
$uwp_notices[] = array( 'reset' => $message );
return;
}
clean_user_cache( $user );
$user_data = check_password_reset_key( $key, $login );
if ( is_wp_error( $user_data ) ) {
$error = apply_filters( 'uwp_reset_password_error_message', $user_data->get_error_message(), $user_data );
$message = aui()->alert(
array(
'type' => 'error',
'content' => $error,
)
);
$uwp_notices[] = array( 'reset' => $message );
return;
}
$email_vars = array(
'user_id' => $user_data->ID,
);
UsersWP_Mails::send( $user_data->user_email, 'reset_password', $email_vars );
wp_set_password( $data['password'], $user_data->ID );
$login_page_url = uwp_get_login_page_url();
$message = sprintf( __( 'Password updated successfully. Please <a href="%s">login</a> with your new password.', 'userswp' ), $login_page_url );
$message = apply_filters( 'uwp_reset_password_success_message', $message, $data );
$message = aui()->alert(
array(
'type' => 'success',
'content' => $message,
)
);
$uwp_notices[] = array( 'reset' => $message );
do_action( 'uwp_after_process_reset', $data );
}
/**
* Processes account form submission.
*
* @since 1.0.0
* @package userswp
*
*/
public function process_account() {
$data = wp_unslash( $_POST );
$files = $_FILES;
if ( ! isset( $data['uwp_account_nonce'] ) || ! wp_verify_nonce( $data['uwp_account_nonce'], 'uwp-account-nonce' ) ) {
return;
}
if ( ! is_user_logged_in() ) {
return;
}
global $uwp_notices;
$file_obj = new UsersWP_Files();
do_action( 'uwp_before_validate', 'account' );
$result = uwp_validate_fields( $data, 'account' );
$result = apply_filters( 'uwp_validate_result', $result, 'account', $data );
if ( is_wp_error( $result ) ) {
$message = aui()->alert(
array(
'type' => 'error',
'content' => $result->get_error_message(),
)
);
$uwp_notices[] = array( 'account' => $message );
return;
}
$uploads_result = $file_obj->validate_uploads( $files, 'account' );
if ( is_wp_error( $uploads_result ) ) {
$message = aui()->alert(
array(
'type' => 'error',
'content' => $uploads_result->get_error_message(),
)
);
$uwp_notices[] = array( 'account' => $message );
return;
}
do_action( 'uwp_after_validate', $result, 'account', $data );
//unset if value is empty for files
foreach ( $uploads_result as $upload_file_key => $upload_file_value ) {
if ( empty( $upload_file_value ) ) {
unset( $uploads_result[ $upload_file_key ] );
}
}
$result = array_merge( $result, $uploads_result );
$args = array(
'ID' => get_current_user_id(),
);
if ( isset( $result['first_name'] ) && isset( $result['last_name'] ) ) {
$args['display_name'] = $result['first_name'] . ' ' . $result['last_name'];
}
if ( isset( $result['first_name'] ) ) {
$args['first_name'] = $result['first_name'];
}
if ( isset( $result['last_name'] ) ) {
$args['last_name'] = $result['last_name'];
}
if ( isset( $result['user_url'] ) ) {
$args['user_url'] = $result['user_url'];
}
if ( isset( $result['display_name'] ) && ! empty( $result['display_name'] ) ) {
$args['display_name'] = $result['display_name'];
}
if ( isset( $result['password'] ) ) {
$args['user_pass'] = $result['password'];
}
$user_id = wp_update_user( $args );
if ( is_wp_error( $user_id ) ) {
$message = aui()->alert(
array(
'type' => 'error',
'content' => sprintf( __( '%s', 'userswp' ), $user_id->get_error_message() ),
)
);
$uwp_notices[] = array( 'account' => $message );
return;
}
$res = $this->save_user_extra_fields( $user_id, $result, 'account' );
if ( ! $res ) {
$message = aui()->alert(
array(
'type' => 'error',
'content' => __( 'Something went wrong. Please contact site admin.', 'userswp' ),
)
);
$uwp_notices[] = array( 'account' => $message );
return;
}
//updating bio field after saving extra fields to reflect the points in mycred add on.
if ( isset( $result['bio'] ) && ! empty( $result['bio'] ) ) {
$args = array(
'ID' => $user_id,
'description' => $result['bio'],
);
wp_update_user( $args );
}
$user_data = get_userdata( $user_id );
$form_fields = apply_filters( 'uwp_send_mail_form_fields', '', 'account', $user_id );
if ( isset( $result['email'] ) && $user_data->user_email !== trim( $result['email'] ) ) {
if ( email_exists( trim( $result['email'] ) ) ) {
$message = aui()->alert(
array(
'type' => 'error',
'content' => __( 'This email is already registered, please choose another one.', 'userswp' ),
)
);
$uwp_notices[] = array( 'account' => $message );
return;
}
$hash = md5( $result['email'] . time() . wp_rand() );
$new_admin_email = array(
'hash' => $hash,
'newemail' => $result['email'],
);
update_user_meta( get_current_user_id(), 'uwp_update_email_hash', $new_admin_email );
$new_email_link = add_query_arg(
array(
'uwp_new_email' => 'yes',
'key' => $hash,
'login' => $user_data->user_login,
),
uwp_get_account_page_url()
);
$email_vars = array(
'user_id' => $user_id,
'new_email' => $result['email'],
'new_email_link' => esc_url( $new_email_link ),
);
UsersWP_Mails::send( $result['email'], 'account_new_email_activation', $email_vars );
$message = apply_filters( 'uwp_account_pending_new_email_activation_message', __( 'Account updated successfully. The new address will become active once you confirm via activation link sent to your new email.', 'userswp' ), $data );
$message = aui()->alert(
array(
'type' => 'success',
'content' => $message,
)
);
$uwp_notices[] = array( 'account' => $message );
} else {
$email_vars = array(
'user_id' => $user_id,
'form_fields' => $form_fields,
);
UsersWP_Mails::send( $user_data->user_email, 'account_update', $email_vars );
$message = apply_filters( 'uwp_account_update_success_message', __( 'Account updated successfully.', 'userswp' ), $data );
$message = aui()->alert(
array(
'type' => 'success',
'content' => $message,
)
);
$uwp_notices[] = array( 'account' => $message );
}
do_action( 'uwp_after_process_account', $data, $user_id );
}
/**
* Modifies the forms field in email based on the form type.
*
* @param string $form_fields Form fields.
* @param string $type Form type.
* @param int $user_id User ID.
*
* @return string Modified mail field.
* @package userswp
* @subpackage userswp/includes
*
*/
public function init_mail_form_fields( $form_fields, $type, $user_id ) {
switch ( $type ) {
case 'register':
$form_id = get_user_meta( $user_id, '_uwp_register_form_id', true );
$fields = get_register_form_fields( $form_id );
$user_data = get_userdata( $user_id );
if ( ! empty( $fields ) && is_array( $fields ) ) {
$form_fields = '<p><b>' . __( 'User Information:', 'userswp' ) . '</b></p>';
$excluded = uwp_get_excluded_fields();
foreach ( $fields as $key => $field ) {
if ( $field->is_active != '1' || in_array( $field->htmlvar_name, $excluded ) ) {
continue;
}
if ( $field->htmlvar_name == 'email' && isset( $user_data->user_email ) ) {
$field_value = $user_data->user_email;
} elseif ( $field->htmlvar_name == 'display_name' && isset( $user_data->user_login ) ) {
$field_value = $user_data->user_login;
} elseif ( $field->htmlvar_name == 'bio' ) {
$field_value = get_user_meta( $user_id, 'description', true );
} else {
$field_value = uwp_get_usermeta( $user_id, $field->htmlvar_name );
}
if ( is_array( $field_value ) && count( $field_value ) > 0 ) {
$field_value = uwp_maybe_serialize( $field->htmlvar_name, $field_value );
}
if ( isset( $field->site_title ) && ! empty( $field_value ) ) {
$form_fields .= '<p><b>' . __( wp_unslash( $field->site_title ), 'userswp' ) . '</b>: ' . $field_value . '</p>';
}
}
}
break;
case 'account':
$fields = get_account_form_fields();
$user_data = get_userdata( $user_id );
if ( ! empty( $fields ) && is_array( $fields ) ) {
$form_fields = '<p><b>' . __( 'User Information:', 'userswp' ) . '</b></p>';
foreach ( $fields as $key => $field ) {
if ( $field->is_active != '1' ) {
continue;
}
if ( $field->htmlvar_name == 'email' && isset( $user_data->user_email ) ) {
$field_value = $user_data->user_email;
} elseif ( $field->htmlvar_name == 'display_name' && isset( $user_data->user_login ) ) {
$field_value = $user_data->user_login;
} elseif ( $field->htmlvar_name == 'bio' ) {
$field_value = get_user_meta( $user_id, 'description', true );
} else {
$field_value = uwp_get_usermeta( $user_id, $field->htmlvar_name );
}
if ( is_array( $field_value ) && count( $field_value ) > 0 ) {
$field_value = uwp_maybe_serialize( $field->htmlvar_name, $field_value );
}
if ( isset( $field->site_title ) && ! empty( $field_value ) ) {
$form_fields .= '<p><b>' . __( wp_unslash( $field->site_title ), 'userswp' ) . '</b>: ' . $field_value . '</p>';
}
}
}
break;
}
return apply_filters( 'uwp_mail_form_fields', $form_fields, $type, $user_id );
}
/**
*
*
* @return void
* @since 1.0.12 Unlink file.
* @package userswp
* @since 1.0.0
*/
public function upload_file_remove() {
check_ajax_referer( 'uwp_basic_nonce', 'security' );
$htmlvar = esc_sql( strip_tags( $_POST['htmlvar'] ) );
$user_id = ! empty( $_POST['uid'] ) ? absint( $_POST['uid'] ) : 0;
if ( empty( $user_id ) ) {
wp_die( -1 );
}
if ( ! ( is_user_logged_in() && ( $user_id == (int) get_current_user_id() || current_user_can( 'manage_options' ) ) ) ) {
wp_send_json_error( __( 'Invalid access!', 'userswp' ) );
}
// Remove file
if ( $htmlvar == 'banner_thumb' ) {
$file = uwp_get_usermeta( $user_id, 'banner_thumb' );
$type = 'banner';
} elseif ( $htmlvar == 'avatar_thumb' ) {
$file = uwp_get_usermeta( $user_id, 'avatar_thumb' );
$type = 'avatar';
} else {
$file = '';
$type = '';
}
uwp_update_usermeta( $user_id, $htmlvar, '' );
if ( $file ) {
$uploads = wp_upload_dir();
$upload_path = $uploads['basedir'];
$unlink_file = untrailingslashit( $upload_path ) . '/' . ltrim( $file, '/' );
if ( is_file( $unlink_file ) && file_exists( $unlink_file ) ) {
@unlink( $unlink_file );
$unlink_ori_file = str_replace( '_uwp_' . $type . '_thumb' . '.', '.', $unlink_file );
if ( is_file( $unlink_ori_file ) && file_exists( $unlink_ori_file ) ) {
@unlink( $unlink_ori_file );
}
}
}
wp_send_json_success();
wp_die();
}
/**
* Form field template for datepicker field type.
*
* @param string $html Form field html
* @param object $field Field info.
* @param string $value Form field default value.
* @param string $form_type Form type
*
* @return string Modified form field html.
* @package userswp
*
* @since 1.0.0
*/
public function form_input_datepicker( $html, $field, $value, $form_type ) {
// Check if there is a field specific filter.
if ( has_filter( "uwp_form_input_html_datepicker_{$field->htmlvar_name}" ) ) {
$html = apply_filters( "uwp_form_input_html_datepicker_{$field->htmlvar_name}", $html, $field, $value, $form_type );
}
// If no html then we run the standard output.
if ( empty( $html ) ) {
$design_style = uwp_get_option( 'design_style', 'bootstrap' );
$bs_form_group = $design_style ? 'form-group mb-3' : '';
$bs_sr_only = $design_style ? 'sr-only' : '';
$bs_form_control = $design_style ? 'form-control' : '';
$extra_attributes = array();
$required_msg = ( ! empty( $field->is_required ) && $field->required_msg != '') ? __( stripslashes( $field->required_msg ), 'userswp' ) : '';
$validation_text = ! empty( $field->validation_msg ) ? __( stripslashes( $field->validation_msg ), 'userswp' ) : '';
ob_start(); // Start buffering;
$extra_fields = unserialize( $field->extra_fields );
if ( $extra_fields['date_format'] == '' ) {
$extra_fields['date_format'] = 'yy-mm-dd';
}
$date_format = $extra_fields['date_format'];
$jquery_date_format = $date_format;
// check if we need to change the format or not
$date_format_len = strlen( str_replace( ' ', '', $date_format ) );
if ( $date_format_len > 5 ) {// if greater then 5 then it's the old style format.
$search = array( 'dd', 'd', 'DD', 'mm', 'm', 'MM', 'yy' ); //jQuery UI datepicker format
$replace = array( 'd', 'j', 'l', 'm', 'n', 'F', 'Y' );//PHP date format
$date_format = str_replace( $search, $replace, $date_format );
} else {
$jquery_date_format = uwp_date_format_php_to_jqueryui( $jquery_date_format );
}
if ( ! empty( $value ) && ! is_string( $value ) ) {
$value = date( 'Y-m-d', $value );
}
if ( $value == '0000-00-00' ) {
$value = '';
}//if date not set, then mark it empty
$value = uwp_date( $value, 'Y-m-d', $date_format );
$site_title = uwp_get_form_label( $field );
// bootstrap
if ( $design_style ) {
// flatpickr attributes
$extra_attributes['data-alt-input'] = 'true';
$extra_attributes['data-alt-format'] = $date_format;
$extra_attributes['data-date-format'] = 'Y-m-d';
if ( 'dob' == $field->htmlvar_name ) {
$extra_attributes['data-max-date'] = 'today';
}
$required = ! empty( $field->is_required ) ? ' <span class="text-danger">*</span>' : '';
echo aui()->input( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
array(
'id' => esc_attr( $field->htmlvar_name ),
'name' => esc_attr( $field->htmlvar_name ),
'required' => ! empty( $field->is_required ) ? true : false,
'label' => wp_kses_post( $site_title . $required ),
'label_show' => true,
'label_type' => 'hidden',
'type' => 'datepicker',
'title' => esc_html( $site_title ),
'placeholder' => esc_attr( uwp_get_field_placeholder( $field ) ),
'class' => '',
'wrap_class' => isset( $field->css_class ) ? esc_attr( $field->css_class ) : '',
'value' => esc_attr( $value ),
'help_text' => wp_kses_post( uwp_get_field_description( $field ) ),
'validation_text' => $validation_text != '' ? esc_attr( $validation_text ) : esc_attr( $required_msg ),
'validation_pattern' => ! empty( $field->validation_pattern ) ? esc_attr( wp_unslash( $field->validation_pattern ) ) : '',
'extra_attributes' => $extra_attributes, // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
)
);
} else {
?>
<script type="text/javascript">
jQuery(function () {
jQuery("#<?php echo esc_attr( $field->htmlvar_name ); ?>").datepicker({
changeMonth: true, changeYear: true
<?php
if ( $field->htmlvar_name == 'dob' ) {
echo ", yearRange: '1900:+0'";
} else {
echo ", yearRange: '1900:2050'";
}
?>
<?php echo apply_filters( "uwp_datepicker_extra_{$field->htmlvar_name}", '' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>});
jQuery("#<?php echo esc_attr( $field->htmlvar_name ); ?>").datepicker("option", "dateFormat", '<?php echo esc_attr( $jquery_date_format ); ?>');
<?php if ( ! empty( $value ) ) { ?>
var parsedDate = jQuery.datepicker.parseDate('yy-mm-dd', '<?php echo esc_attr( $value ); ?>');
jQuery("#<?php echo esc_attr( $field->htmlvar_name ); ?>").datepicker("setDate", parsedDate);
<?php } ?>
});
</script>
<div id="<?php echo esc_attr( $field->htmlvar_name ); ?>_row"
class="
<?php
if ( $field->is_required ) {
echo 'required_field';
}
?>
clearfix uwp_clear <?php echo esc_attr( $bs_form_group ); ?>">
<?php
if ( ! is_admin() ) {
?>
<label class="<?php echo esc_attr( $bs_sr_only ); ?>">
<?php echo ( trim( $site_title ) ) ? esc_html( $site_title ) : ' '; ?>
<?php
if ( $field->is_required ) {
echo '<span>*</span>';
}
?>
</label>
<?php } ?>
<input name="<?php echo esc_attr( $field->htmlvar_name ); ?>"
id="<?php echo esc_attr( $field->htmlvar_name ); ?>"
placeholder="<?php echo esc_attr( uwp_get_field_placeholder( $field ) ); ?>"
title="<?php echo esc_attr( $site_title ); ?>"
type="text"
<?php
if ( $field->is_required == 1 ) {
echo 'required="required"';
}
?>
value="<?php echo esc_attr( $value ); ?>"
class="uwp_textfield <?php echo esc_attr( $bs_form_control ); ?>"/>
<span class="uwp_message_note"><?php echo wp_kses_post( uwp_get_field_description( $field ) ); ?></span>
<?php if ( $field->is_required ) { ?>
<span class="uwp_message_error invalid-feedback"><?php echo esc_html__( stripslashes( $field->required_msg ), 'userswp' ); ?></span>
<?php } ?>
</div>
<?php
}
$html = ob_get_clean();
}
return $html;
}
/**
* Form field template for time field type.
*
* @param string $html Form field html
* @param object $field Field info.
* @param string $value Form field default value.
* @param string $form_type Form type
*
* @return string Modified form field html.
* @package userswp
*
* @since 1.0.0
*/
public function form_input_time( $html, $field, $value, $form_type ) {
if ( has_filter( "uwp_form_input_html_time_{$field->htmlvar_name}" ) ) {
$html = apply_filters( "uwp_form_input_html_time_{$field->htmlvar_name}", $html, $field, $value, $form_type );
}
// If no html then we run the standard output.
if ( empty( $html ) ) {
$design_style = uwp_get_option( 'design_style', 'bootstrap' );
$bs_form_group = $design_style ? 'form-group mb-3' : '';
$bs_sr_only = $design_style ? 'sr-only' : '';
$bs_form_control = $design_style ? 'form-control bg-white' : '';
$required_msg = ( ! empty( $field->is_required ) && $field->required_msg != '') ? __( stripslashes( $field->required_msg ), 'userswp' ) : '';
$validation_text = ! empty( $field->validation_msg ) ? __( stripslashes( $field->validation_msg ), 'userswp' ) : '';
ob_start(); // Start buffering;
if ( $value != '' ) {
$value = date( 'H:i', strtotime( $value ) );
}
// flatpickr attributes
$extra_attributes['data-enable-time'] = 'true';
$extra_attributes['data-no-calendar'] = 'true';
$extra_attributes['data-date-format'] = 'H:i';
$site_title = uwp_get_form_label( $field );
$label_type = is_admin() ? '' : 'top';
if ( $design_style ) {
$required = ! empty( $field->is_required ) ? ' <span class="text-danger">*</span>' : '';
echo aui()->input( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
array(
'id' => esc_attr( $field->htmlvar_name ),
'name' => esc_attr( $field->htmlvar_name ),
'required' => ! empty( $field->is_required ) ? true : false,
'label' => wp_kses_post( $site_title . $required ),
'label_show' => true,
'label_type' => esc_attr( $label_type ),
'type' => 'timepicker',
'title' => esc_html( $site_title ),
'placeholder' => esc_attr( uwp_get_field_placeholder( $field ) ),
'class' => '',
'wrap_class' => isset( $field->css_class ) ? esc_attr( $field->css_class ) : '',
'value' => esc_attr( $value ),
'help_text' => wp_kses_post( uwp_get_field_description( $field ) ),
'validation_text' => $validation_text != '' ? esc_attr( $validation_text ) : esc_attr( $required_msg ),
'validation_pattern' => ! empty( $field->validation_pattern ) ? esc_attr( wp_unslash( $field->validation_pattern ) ) : '',
'extra_attributes' => $extra_attributes, // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
'input_group_right' => '<div class="input-group-text px-2 bg-transparent border-0x" onclick="jQuery(this).parent().parent().find(\'input\').val(\'\');"><i class="fas fa-times uwp-search-input-label-clear text-muted c-pointer" title="' . esc_attr__( 'Clear field', 'uwp-search' ) . '" ></i></div>',
)
);
} else {
?>
<script type="text/javascript">
jQuery(document).ready(function () {
jQuery('#<?php echo esc_attr( $field->htmlvar_name ); ?>').timepicker({
showPeriod: true,
showLeadingZero: true
});
});
</script>
<div id="<?php echo esc_attr( $field->htmlvar_name ); ?>_row"
class="
<?php
if ( $field->is_required ) {
echo 'required_field';
}
?>
clearfix uwp_clear <?php echo esc_attr( $bs_form_group ); ?>">
<?php
$site_title = uwp_get_form_label( $field );
if ( ! is_admin() ) {
?>
<label class="<?php echo esc_attr( $bs_sr_only ); ?>">
<?php echo ( trim( $site_title ) ) ? esc_html( $site_title ) : ' '; ?>
<?php
if ( $field->is_required ) {
echo '<span>*</span>';
}
?>
</label>
<?php } ?>
<input readonly="readonly" name="<?php echo esc_attr( $field->htmlvar_name ); ?>"
id="<?php echo esc_attr( $field->htmlvar_name ); ?>"
value="<?php echo esc_attr( $value ); ?>"
placeholder="<?php echo esc_attr( uwp_get_field_placeholder( $field ) ); ?>"
type="text"
class="uwp_textfield <?php echo esc_attr( $bs_form_control ); ?>"/>
<span class="uwp_message_note"><?php echo wp_kses_post( uwp_get_field_description( $field ) ); ?></span>
<?php if ( $field->is_required ) { ?>
<span class="uwp_message_error invalid-feedback"><?php echo esc_html__( stripslashes( $field->required_msg ), 'userswp' ); ?></span>
<?php } ?>
</div>
<?php
}
$html = ob_get_clean();
}
return $html;
}
/**
* Form field template for select field type.
*
* @param string $html Form field html
* @param object $field Field info.
* @param string $value Form field default value.
* @param string $form_type Form type
*
* @return string Modified form field html.
* @package userswp
*
* @since 1.0.0
*/
public function form_input_select( $html, $field, $value, $form_type ) {
// Check if there is a field specific filter.
if ( has_filter( "uwp_form_input_html_select_{$field->htmlvar_name}" ) ) {
$html = apply_filters( "uwp_form_input_html_select_{$field->htmlvar_name}", $html, $field, $value, $form_type );
}
// Check if there is a field type specific filter.
if ( has_filter( "uwp_form_input_html_select_{$field->field_type_key}" ) ) {
$html = apply_filters( "uwp_form_input_html_select_{$field->field_type_key}", $html, $field, $value, $form_type );
}
// If no html then we run the standard output.
if ( empty( $html ) ) {
$design_style = uwp_get_option( 'design_style', 'bootstrap' );
$bs_form_group = $design_style ? 'form-group mb-3' : '';
$bs_sr_only = $design_style ? 'sr-only' : '';
$bs_form_control = $design_style ? 'form-control' : '';
$required_msg = ( ! empty( $field->is_required ) && $field->required_msg != '') ? __( stripslashes( $field->required_msg ), 'userswp' ) : '';
$validation_text = ! empty( $field->validation_msg ) ? __( stripslashes( $field->validation_msg ), 'userswp' ) : '';
ob_start(); // Start buffering;
$option_values_arr = uwp_string_values_to_options( $field->option_values, true );
$site_title = uwp_get_form_label( $field );
// bootstrap
if ( $design_style ) {
$required = ! empty( $field->is_required ) ? ' <span class="text-danger">*</span>' : '';
echo aui()->select(
array( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
'id' => esc_attr( $field->htmlvar_name ),
'name' => esc_attr( $field->htmlvar_name ),
'placeholder' => esc_attr( uwp_get_field_placeholder( $field ) ),
'title' => esc_html( $site_title ),
'value' => esc_attr( $value ),
'required' => (bool) $field->is_required,
'validation_text' => $validation_text != '' ? esc_attr( $validation_text ) : esc_attr( $required_msg ),
'validation_pattern' => ! empty( $field->validation_pattern ) ? esc_attr( wp_unslash( $field->validation_pattern ) ) : '',
'help_text' => wp_kses_post( uwp_get_field_description( $field ) ),
'label' => wp_kses_post( $site_title . $required ),
'options' => $option_values_arr, // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
'select2' => true,
'wrap_class' => isset( $field->css_class ) ? esc_attr( $field->css_class ) : '',
)
);
} else {
?>
<div id="<?php echo esc_attr( $field->htmlvar_name ); ?>_row"
class="
<?php
if ( $field->is_required ) {
echo 'required_field';
}
?>
uwp_clear <?php echo esc_attr( $bs_form_group ); ?>">
<?php
if ( ! is_admin() ) {
?>
<label class="<?php echo esc_attr( $bs_sr_only ); ?>">
<?php echo ( trim( $site_title ) ) ? esc_html( $site_title ) : ' '; ?>
<?php
if ( $field->is_required ) {
echo '<span>*</span>';
}
?>
</label>
<?php } ?>
<?php
$select_options = '';
if ( ! empty( $option_values_arr ) ) {
foreach ( $option_values_arr as $option_row ) {
if ( isset( $option_row['optgroup'] ) && ( $option_row['optgroup'] == 'start' || $option_row['optgroup'] == 'end' ) ) {
$option_label = isset( $option_row['label'] ) ? $option_row['label'] : '';
$select_options .= $option_row['optgroup'] == 'start' ? '<optgroup label="' . esc_attr( $option_label ) . '">' : '</optgroup>';
} else {
$option_label = isset( $option_row['label'] ) ? $option_row['label'] : '';
$option_value = isset( $option_row['value'] ) ? $option_row['value'] : '';
$selected = $option_value == $value ? 'selected="selected"' : '';
$select_options .= '<option value="' . esc_attr( $option_value ) . '" ' . $selected . '>' . $option_label . '</option>';
}
}
}
?>
<select name="<?php echo esc_attr( $field->htmlvar_name ); ?>" id="<?php echo esc_attr( $field->htmlvar_name ); ?>"
class="uwp_textfield aui-select2 <?php echo esc_attr( $bs_form_control ); ?>"
title="<?php echo esc_attr( $site_title ); ?>"
data-placeholder="<?php echo esc_attr( uwp_get_field_placeholder( $field ) ); ?>"
><?php echo $select_options; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
</select>
<span class="uwp_message_note"><?php echo wp_kses_post( uwp_get_field_description( $field ) ); ?></span>
<?php if ( $field->is_required ) { ?>
<span class="uwp_message_error invalid-feedback"><?php echo esc_html__( stripslashes( $field->required_msg ), 'userswp' ); ?></span>
<?php } ?>
</div>
<?php
}
$html = ob_get_clean();
}
return $html;
}
/**
* Form field template for multiselect field type.
*
* @param string $html Form field html
* @param object $field Field info.
* @param string $value Form field default value.
* @param string $form_type Form type
*
* @return string Modified form field html.
* @package userswp
*
* @since 1.0.0
*/
public function form_input_multiselect( $html, $field, $value, $form_type ) {
// Check if there is a field specific filter.
if ( has_filter( "uwp_form_input_html_multiselect_{$field->htmlvar_name}" ) ) {
$html = apply_filters( "uwp_form_input_html_multiselect_{$field->htmlvar_name}", $html, $field, $value, $form_type );
}
if ( empty( $html ) ) {
$design_style = uwp_get_option( 'design_style', 'bootstrap' );
$bs_form_group = $design_style ? 'form-group mb-3' : '';
$bs_sr_only = $design_style ? 'sr-only' : '';
$bs_form_control = $design_style ? 'form-control' : '';
$required_msg = ( ! empty( $field->is_required ) && $field->required_msg != '') ? __( stripslashes( $field->required_msg ), 'userswp' ) : '';
$validation_text = ! empty( $field->validation_msg ) ? __( stripslashes( $field->validation_msg ), 'userswp' ) : '';
ob_start(); // Start buffering;
$multi_display = 'select';
if ( ! empty( $field->extra_fields ) ) {
$multi_display = unserialize( $field->extra_fields );
}
$option_values_arr = uwp_string_values_to_options( $field->option_values, true );
$site_title = uwp_get_form_label( $field );
$value = is_array( $value ) ? $value : esc_attr( $value );
// bootstrap
if ( $design_style ) {
$required = ! empty( $field->is_required ) ? ' <span class="text-danger">*</span>' : '';
echo aui()->select(
array( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
'id' => esc_attr( $field->htmlvar_name ),
'name' => esc_attr( $field->htmlvar_name ),
'placeholder' => esc_attr( uwp_get_field_placeholder( $field ) ),
'title' => esc_html( $site_title ),
'value' => $value,
'required' => (bool) $field->is_required,
'validation_text' => $validation_text != '' ? esc_attr( $validation_text ) : esc_attr( $required_msg ),
'validation_pattern' => ! empty( $field->validation_pattern ) ? esc_attr( wp_unslash( $field->validation_pattern ) ) : '',
'help_text' => wp_kses_post( uwp_get_field_description( $field ) ),
'label' => wp_kses_post( $site_title . $required ),
'options' => $option_values_arr, // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
'select2' => true,
'multiple' => true,
'wrap_class' => isset( $field->css_class ) ? esc_attr( $field->css_class ) : '',
)
);
} else {
?>
<div id="<?php echo esc_attr( $field->htmlvar_name ); ?>_row"
class="
<?php
if ( $field->is_required ) {
echo 'required_field';
}
?>
uwp_clear <?php echo esc_attr( $bs_form_group ); ?>">
<?php
if ( ! is_admin() ) {
?>
<label class="<?php echo esc_attr( $bs_sr_only ); ?>">
<?php echo ( trim( $site_title ) ) ? esc_html( $site_title ) : ' '; ?>
<?php
if ( $field->is_required ) {
echo '<span>*</span>';
}
?>
</label>
<?php } ?>
<input type="hidden" name="<?php echo esc_attr( $field->htmlvar_name ); ?>" value=""/>
<?php if ( $multi_display == 'select' ) { ?>
<div class="uwp_multiselect_list">
<select name="<?php echo esc_attr( $field->htmlvar_name ); ?>[]"
id="<?php echo esc_attr( $field->htmlvar_name ); ?>"
title="<?php echo esc_attr( $site_title ); ?>"
data-placeholder="<?php echo esc_attr( uwp_get_field_placeholder( $field ) ); ?>"
class="aui-select2 <?php echo esc_attr( $bs_form_control ); ?>"
>
<?php
} else {
?>
<ul class="uwp_multi_choice">
<?php
}
$option_values_arr = uwp_string_values_to_options( $field->option_values, true );
$select_options = '';
if ( ! empty( $option_values_arr ) ) {
foreach ( $option_values_arr as $option_row ) {
if ( isset( $option_row['optgroup'] ) && ( $option_row['optgroup'] == 'start' || $option_row['optgroup'] == 'end' ) ) {
$option_label = isset( $option_row['label'] ) ? $option_row['label'] : '';
if ( $multi_display == 'select' ) {
$select_options .= $option_row['optgroup'] == 'start' ? '<optgroup label="' . esc_attr( $option_label ) . '">' : '</optgroup>';
} else {
$select_options .= $option_row['optgroup'] == 'start' ? '<li>' . $option_label . '</li>' : '';
}
} else {
$option_label = isset( $option_row['label'] ) ? $option_row['label'] : '';
$option_value = isset( $option_row['value'] ) ? $option_row['value'] : '';
$selected = $option_value == $value ? 'selected="selected"' : '';
$checked = '';
if ( ( ! is_array( $value ) && trim( $value ) != '' ) || ( is_array( $value ) && ! empty( $value ) ) ) {
if ( ! is_array( $value ) ) {
$value_array = explode( ',', $value );
} else {
$value_array = $value;
}
if ( is_array( $value_array ) ) {
if ( in_array( $option_value, $value_array ) ) {
$selected = 'selected="selected"';
$checked = 'checked="checked"';
}
}
}
if ( $multi_display == 'select' ) {
$select_options .= '<option value="' . esc_attr( $option_value ) . '" ' . $selected . '>' . $option_label . '</option>';
} else {
$select_options .= '<li><input name="' . $field->name . '[]" ' . $checked . ' value="' . esc_attr( $option_value ) . '" class="uwp-' . $multi_display . '" type="' . $multi_display . '" /> ' . $option_label . ' </li>';
}
}
}
}
echo $select_options; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
if ( $multi_display == 'select' ) {
?>
</select></div>
<?php } else { ?>
</ul>
<?php } ?>
<?php if ( $field->is_required ) { ?>
<span class="uwp_message_error invalid-feedback"><?php echo esc_html__( stripslashes( $field->required_msg ), 'userswp' ); ?></span>
<?php } ?>
</div>
<?php
}
$html = ob_get_clean();
}
return $html;
}
/**
* Form field template for file field type.
*
* @param string $html Form field html
* @param object $field Field info.
* @param string $value Form field default value.
* @param string $form_type Form type
*
* @return string Modified form field html.
* @package userswp
*
* @since 1.0.0
*/
public function form_input_file( $html, $field, $value, $form_type ) {
$file_obj = new UsersWP_Files();
// Check if there is a field specific filter.
if ( has_filter( "uwp_form_input_html_file_{$field->htmlvar_name}" ) ) {
$html = apply_filters( "uwp_form_input_html_file_{$field->htmlvar_name}", $html, $field, $value, $form_type );
}
// If no html then we run the standard output.
if ( empty( $html ) ) {
$design_style = uwp_get_option( 'design_style', 'bootstrap' );
$wrap_class = isset( $field->css_class ) ? $field->css_class : '';
$bs_form_group = $design_style ? 'form-group mb-3' : '';
$bs_sr_only = $design_style ? 'sr-only' : '';
$bs_form_control = $design_style ? 'form-control' : '';
ob_start(); // Start buffering;
?>
<div id="<?php echo esc_attr( $field->htmlvar_name ); ?>_row"
class="
<?php
if ( $field->is_required ) {
echo 'required_field';
}
?>
uwp_form_<?php echo esc_attr( $field->field_type ); ?>_row uwp_clear <?php echo esc_attr( $bs_form_group . $wrap_class ); ?>">
<?php
$site_title = uwp_get_form_label( $field );
if ( ! is_admin() && ! wp_doing_ajax() ) {
?>
<label class="<?php echo esc_attr( $bs_sr_only ); ?>">
<?php echo ( trim( $site_title ) ) ? esc_html( $site_title ) : ' '; ?>
<?php
if ( $field->is_required ) {
echo ' <span class="text-danger">*</span>';
}
?>
</label>
<?php } ?>
<?php echo $file_obj->file_upload_preview( $field, $value ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
<input name="<?php echo esc_attr( $field->htmlvar_name ); ?>"
class="<?php echo esc_attr( $field->css_class ); ?> <?php echo esc_attr( $bs_form_control ); ?>"
placeholder="<?php echo esc_attr( uwp_get_field_placeholder( $field ) ); ?>"
title="<?php echo esc_attr( $site_title ); ?>"
<?php
if ( $field->is_required == 1 ) {
echo 'data-is-required="1"';
}
if ( $field->is_required == 1 && ! $value ) {
echo 'required="required"';
}
?>
type="<?php echo esc_attr( $field->field_type ); ?>">
<span class="uwp_message_note"><?php echo wp_kses_post( uwp_get_field_description( $field ) ); ?></span>
<?php if ( $field->is_required ) { ?>
<span class="uwp_message_error invalid-feedback"><?php echo esc_html__( stripslashes( $field->required_msg ), 'userswp' ); ?></span>
<?php } ?>
</div>
<?php
$html = ob_get_clean();
}
return $html;
}
/**
* Form field template for checkbox field type.
*
* @param string $html Form field html
* @param object $field Field info.
* @param string $value Form field default value.
* @param string $form_type Form type
*
* @return string Modified form field html.
* @package userswp
*
* @since 1.0.0
*/
public function form_input_checkbox( $html, $field, $value, $form_type ) {
// Check if there is a field specific filter.
if ( has_filter( "uwp_form_input_html_checkbox_{$field->htmlvar_name}" ) ) {
$html = apply_filters( "uwp_form_input_html_checkbox_{$field->htmlvar_name}", $html, $field, $value, $form_type );
}
// If no html then we run the standard output.
if ( empty( $html ) ) {
$design_style = uwp_get_option( 'design_style', 'bootstrap' );
$bs_form_group = $design_style ? 'form-group mb-3 form-check' : '';
$bs_sr_only = $design_style ? 'form-check-label' : '';
$bs_form_control = $design_style ? 'form-check-input' : '';
ob_start(); // Start buffering;
$site_title = uwp_get_form_label( $field );
$design_style = uwp_get_option( 'design_style', 'bootstrap' );
$id = wp_doing_ajax() ? $field->htmlvar_name . '_ajax' : $field->htmlvar_name;
$checked = $value == '1' ? true : false;
// bootstrap
if ( $design_style ) {
$required = ! empty( $field->is_required ) ? ' <span class="text-danger">*</span>' : '';
echo '<input type="hidden" name="' . esc_attr( $field->htmlvar_name ) . '" id="checkbox_' . esc_attr( $id ) . '" value="0"/>';
echo aui()->input( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
array(
'id' => esc_attr( $id ),
'name' => esc_attr( $field->htmlvar_name ),
'type' => 'checkbox',
'value' => '1',
'title' => esc_html( $site_title ),
'label' => wp_kses_post( $site_title . $required ),
'label_show' => true,
'required' => ! empty( $field->is_required ) ? true : false,
'checked' => (bool) $checked,
'wrap_class' => isset( $field->css_class ) ? esc_attr( $field->css_class ) : '',
'help_text' => wp_kses_post( uwp_get_field_description( $field ) ),
'validation_text' => ! empty( $field->is_required ) ? esc_attr__( stripslashes( $field->required_msg ), 'userswp' ) : '',
)
);
} else {
?>
<div id="<?php echo esc_attr( $field->htmlvar_name ); ?>_row"
class="
<?php
if ( $field->is_required ) {
echo 'required_field';
}
?>
uwp_form_<?php echo esc_attr( $field->field_type ); ?>_row uwp_clear <?php echo esc_attr( $bs_form_group ); ?>">
<?php if ( ! empty( $design_style ) ) { ?>
<label class="<?php echo esc_attr( $bs_sr_only ); ?>">
<?php } ?>
<input type="hidden" name="<?php echo esc_attr( $field->htmlvar_name ); ?>" value="0"/>
<input name="<?php echo esc_attr( $field->htmlvar_name ); ?>"
class="<?php echo esc_attr( $field->css_class ); ?> <?php echo esc_attr( $bs_form_control ); ?>"
placeholder="<?php echo esc_attr( uwp_get_field_placeholder( $field ) ); ?>"
title="<?php echo esc_attr( $site_title ); ?>"
<?php
if ( $field->is_required == 1 ) {
echo 'required="required"';
}
?>
<?php
if ( $value == '1' ) {
echo 'checked="checked"';
}
?>
type="<?php echo esc_attr( $field->field_type ); ?>"
value="1">
<?php
echo ( trim( $site_title ) ) ? esc_html( $site_title ) : ' ';
?>
<?php if ( ! empty( $design_style ) ) { ?>
</label>
<?php } ?>
<span class="uwp_message_note"><?php echo wp_kses_post( uwp_get_field_description( $field ) ); ?></span>
<?php if ( $field->is_required ) { ?>
<span class="uwp_message_error invalid-feedback"><?php echo esc_html__( stripslashes( $field->required_msg ), 'userswp' ); ?></span>
<?php } ?>
</div>
<?php
}
$html = ob_get_clean();
}
return $html;
}
/**
* Form field template for radio field type.
*
* @param string $html Form field html
* @param object $field Field info.
* @param string $value Form field default value.
* @param string $form_type Form type
*
* @return string Modified form field html.
* @package userswp
*
* @since 1.0.0
*/
public function form_input_radio( $html, $field, $value, $form_type ) {
// Check if there is a field specific filter.
if ( has_filter( "uwp_form_input_html_radio_{$field->htmlvar_name}" ) ) {
$html = apply_filters( "uwp_form_input_html_radio_{$field->htmlvar_name}", $html, $field, $value, $form_type );
}
// If no html then we run the standard output.
if ( empty( $html ) ) {
$design_style = uwp_get_option( 'design_style', 'bootstrap' );
$bs_form_group = $design_style ? 'form-group mb-3 form-check-inline' : '';
$bs_sr_only = $design_style ? 'sr-only' : '';
$bs_label_class = $design_style ? 'form-check-label' : '';
$bs_form_control = $design_style ? 'form-check-input' : '';
ob_start(); // Start buffering;
if ( $design_style ) {
$option_values_deep = uwp_string_values_to_options( $field->option_values, true );
$option_values = array();
if ( ! empty( $option_values_deep ) ) {
foreach ( $option_values_deep as $option ) {
$option_values[ $option['value'] ] = $option['label'];
}
}
$site_title = uwp_get_form_label( $field );
$required = ! empty( $field->is_required ) ? ' <span class="text-danger">*</span>' : '';
echo aui()->radio( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
array(
'id' => esc_attr( $field->htmlvar_name ),
'name' => esc_attr( $field->htmlvar_name ),
'type' => 'radio',
'title' => esc_html( $site_title ),
'label' => is_admin() && ! wp_doing_ajax() ? '' : wp_kses_post( $site_title . $required ),
'label_type' => 'top',
'class' => '',
'wrap_class' => isset( $field->css_class ) ? esc_attr( $field->css_class ) : '',
'value' => esc_attr( $value ),
'options' => $option_values, // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
)
);
} else {
?>
<div id="<?php echo esc_attr( $field->htmlvar_name ); ?>_row"
class="
<?php
if ( $field->is_required ) {
echo 'required_field';
}
?>
uwp_form_<?php echo esc_attr( $field->field_type ); ?>_row uwp_clear <?php echo esc_attr( $bs_form_group ); ?>">
<?php
$site_title = uwp_get_form_label( $field );
if ( ! is_admin() ) {
?>
<label class="<?php echo esc_attr( $bs_sr_only ); ?>">
<?php echo ( trim( $site_title ) ) ? esc_html( $site_title ) : ' '; ?>
<?php
if ( $field->is_required ) {
echo '<span>*</span>';
}
?>
</label>
<?php } ?>
<?php
if ( $field->option_values ) {
$option_values = uwp_string_values_to_options( $field->option_values, true );
if ( ! empty( $option_values ) ) {
$count = 0;
foreach ( $option_values as $option_value ) {
if ( empty( $option_value['optgroup'] ) ) {
++$count;
if ( $count == 1 ) {
$class = 'uwp-radio-first';
} else {
$class = '';
}
?>
<?php if ( ! empty( $design_style ) ) { ?>
<label class="<?php echo esc_attr( $bs_label_class ); ?>">
<?php } else { ?>
<span class="uwp-radios <?php echo esc_attr( $class ); ?>">
<?php } ?>
<input name="<?php echo esc_attr( $field->htmlvar_name ); ?>"
id="<?php echo esc_attr( $field->htmlvar_name ); ?>"
title="<?php echo esc_attr( $option_value['label'] ); ?>"
<?php checked( $value, $option_value['value'] ); ?>
<?php
if ( $field->is_required == 1 ) {
echo 'required="required"';
}
?>
value="<?php echo esc_attr( $option_value['value'] ); ?>"
class="uwp-radio <?php echo esc_attr( $bs_form_control ); ?>" type="radio"/>
<?php echo esc_html( $option_value['label'] ); ?>
<?php if ( ! empty( $design_style ) ) { ?>
</label>
<?php } else { ?>
</span>
<?php
}
}
}
}
}
?>
<span class="uwp_message_note"><?php echo wp_kses_post( uwp_get_field_description( $field ) ); ?></span>
<?php if ( $field->is_required ) { ?>
<span class="uwp_message_error invalid-feedback"><?php echo esc_html__( stripslashes( $field->required_msg ), 'userswp' ); ?></span>
<?php } ?>
</div>
<?php
}
$html = ob_get_clean();
}
return $html;
}
/**
* Form field template for text field type.
*
* @param string $html Form field html
* @param object $field Field info.
* @param string $value Form field default value.
* @param string $form_type Form type
*
* @return string Modified form field html.
* @package userswp
*
* @since 1.0.0
*/
public function form_input_text( $html, $field, $value, $form_type ) {
// Check if there is a custom field specific filter.
if ( has_filter( "uwp_form_input_text_{$field->htmlvar_name}" ) ) {
$html = apply_filters( "uwp_form_input_text_{$field->htmlvar_name}", $html, $field, $value, $form_type );
}
// If no html then we run the standard output.
if ( empty( $html ) ) {
ob_start(); // Start buffering;
$type = 'text';
$step = false;
//number and float validation $validation_pattern
if ( isset( $field->data_type ) && $field->data_type == 'INT' ) {
$type = 'number';
} elseif ( isset( $field->data_type ) && $field->data_type == 'FLOAT' ) {
$dp = $field->decimal_point;
switch ( $dp ) {
case '1':
$step = '0.1';
break;
case '2':
$step = '0.01';
break;
case '3':
$step = '0.001';
break;
case '4':
$step = '0.0001';
break;
case '5':
$step = '0.00001';
break;
case '6':
$step = '0.000001';
break;
case '7':
$step = '0.0000001';
break;
case '8':
$step = '0.00000001';
break;
case '9':
$step = '0.000000001';
break;
case '10':
$step = '0.0000000001';
break;
default:
$step = '0.01';
break;
}
$type = 'number';
}
$site_title = uwp_get_form_label( $field );
$placeholder = uwp_get_field_placeholder( $field );
$manual_label = apply_filters( 'uwp_login_username_label_manual', true );
if ( $manual_label
&& isset( $field->form_type )
&& $field->form_type == 'login'
&& $field->htmlvar_name == 'username' ) {
$site_title = __( 'Username or Email', 'userswp' );
$required = ! empty( $field->is_required ) ? ' *' : '';
$placeholder = $site_title . $required;
$placeholder = apply_filters( 'uwp_get_field_placeholder', stripslashes( $placeholder ), $field );
}
$design_style = uwp_get_option( 'design_style', 'bootstrap' );
$bs_form_group = $design_style ? 'form-group mb-3' : '';
$bs_sr_only = $design_style ? 'sr-only' : '';
$bs_form_control = $design_style ? 'form-control' : '';
$required_msg = ( ! empty( $field->is_required ) && $field->required_msg != '') ? __( stripslashes( $field->required_msg ), 'userswp' ) : '';
$validation_text = ! empty( $field->validation_msg ) ? __( stripslashes( $field->validation_msg ), 'userswp' ) : '';
// bootstrap
if ( $design_style ) {
$required = ! empty( $field->is_required ) ? ' <span class="text-danger">*</span>' : '';
echo aui()->input(
array( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
'type' => esc_attr( $type ),
'id' => esc_attr( $field->htmlvar_name ),
'name' => esc_attr( $field->htmlvar_name ),
'placeholder' => esc_attr( $placeholder ),
'title' => esc_html( $site_title ),
'value' => esc_attr( wp_unslash( $value ) ),
'required' => (bool) $field->is_required,
'validation_text' => $validation_text != '' ? esc_attr( $validation_text ) : esc_attr( $required_msg ),
'validation_pattern' => ! empty( $field->validation_pattern ) ? esc_attr( wp_unslash( $field->validation_pattern ) ) : '',
'help_text' => wp_kses_post( uwp_get_field_description( $field ) ),
'label' => is_admin() && ! wp_doing_ajax() ? '' : wp_kses_post( $site_title . $required ),
'step' => esc_attr( $step ),
'wrap_class' => isset( $field->css_class ) ? esc_attr( $field->css_class ) : '',
)
);
} else {
?>
<div id="<?php echo esc_attr( $field->htmlvar_name ); ?>_row" class="
<?php
if ( $field->is_required ) {
echo 'required_field';
}
?>
uwp_form_<?php echo esc_attr( $field->field_type ); ?>_row uwp_clear <?php echo esc_attr( $bs_form_group ); ?>">
<?php
if ( ! is_admin() ) {
?>
<label class="<?php echo esc_attr( $bs_sr_only ); ?>">
<?php echo ( trim( $site_title ) ) ? esc_html( $site_title ) : ' '; ?>
<?php
if ( $field->is_required ) {
echo '<span>*</span>';
}
?>
</label>
<?php
}
?>
<input name="<?php echo esc_attr( $field->htmlvar_name ); ?>"
class="<?php echo esc_attr( $field->css_class ); ?> uwp_textfield <?php echo esc_attr( $bs_form_control ); ?>"
id="<?php echo esc_attr( $field->htmlvar_name ); ?>"
placeholder="<?php echo esc_attr( uwp_get_field_placeholder( $field ) ); ?>"
value="<?php echo esc_attr( stripslashes( $value ) ); ?>"
title="<?php echo esc_attr( $site_title ); ?>"
oninvalid="this.setCustomValidity('<?php esc_attr_e( stripslashes( $field->required_msg ), 'userswp' ); ?>')"
oninput="setCustomValidity('')"
<?php
if ( $field->is_required == 1 ) {
echo 'required="required"';
}
?>
<?php
if ( $field->for_admin_use == 1 ) {
echo 'readonly="readonly"';
}
?>
type="<?php echo esc_attr( $type ); ?>"
<?php
if ( $step ) {
echo 'step="' . esc_attr( $step ) . '"';
}
?>
/>
<span class="uwp_message_note"><?php echo wp_kses_post( uwp_get_field_description( $field ) ); ?></span>
<?php if ( $field->is_required ) { ?>
<span class="uwp_message_error invalid-feedback"><?php echo esc_html__( stripslashes( $field->required_msg ), 'userswp' ); ?></span>
<?php } ?>
</div>
<?php
}
$html = ob_get_clean();
}
return $html;
}
/**
* Form field template for textarea field type.
*
* @param string $html Form field html
* @param object $field Field info.
* @param string $value Form field default value.
* @param string $form_type Form type
*
* @return string Modified form field html.
* @package userswp
*
* @since 1.0.0
*/
public function form_input_textarea( $html, $field, $value, $form_type ) {
// Check if there is a field specific filter.
if ( has_filter( "uwp_form_input_textarea_{$field->htmlvar_name}" ) ) {
$html = apply_filters( "uwp_form_input_textarea_{$field->htmlvar_name}", $html, $field, $value, $form_type );
}
// If no html then we run the standard output.
if ( empty( $html ) ) {
$design_style = uwp_get_option( 'design_style', 'bootstrap' );
$bs_form_group = $design_style ? 'form-group mb-3' : '';
$bs_sr_only = $design_style ? 'sr-only' : '';
$bs_form_control = $design_style ? 'form-control' : '';
$site_title = uwp_get_form_label( $field );
ob_start(); // Start buffering;
// bootstrap
if ( $design_style ) {
$required = ! empty( $field->is_required ) ? ' <span class="text-danger">*</span>' : '';
echo aui()->textarea(
array( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
'id' => esc_attr( $field->htmlvar_name ),
'name' => esc_attr( $field->htmlvar_name ),
'placeholder' => esc_attr( uwp_get_field_placeholder( $field ) ),
'title' => esc_html( $site_title ),
'value' => wp_kses_post( stripslashes( $value ) ),
'required' => (bool) $field->is_required,
'validation_text' => ! empty( $field->is_required ) ? esc_attr__( stripslashes( $field->required_msg ), 'userswp' ) : '',
'help_text' => wp_kses_post( uwp_get_field_description( $field ) ),
'label' => is_admin() && ! wp_doing_ajax() ? '' : wp_kses_post( $site_title . $required ),
'rows' => '4',
'wrap_class' => isset( $field->css_class ) ? esc_attr( $field->css_class ) : '',
)
);
} else {
?>
<div id="<?php echo esc_attr( $field->htmlvar_name ); ?>_row"
class="
<?php
if ( $field->is_required ) {
echo 'required_field';
}
?>
uwp_form_<?php echo esc_attr( $field->field_type ); ?>_row uwp_clear <?php echo esc_attr( $bs_form_group ); ?>">
<?php
if ( ! is_admin() ) {
?>
<label class="<?php echo esc_attr( $bs_sr_only ); ?>">
<?php echo ( trim( $site_title ) ) ? esc_html( $site_title ) : ' '; ?>
<?php
if ( $field->is_required ) {
echo '<span>*</span>';
}
?>
</label>
<?php } ?>
<textarea name="<?php echo esc_attr( $field->htmlvar_name ); ?>"
class="<?php echo esc_attr( $field->css_class ); ?> <?php echo esc_attr( $bs_form_control ); ?>"
placeholder="<?php echo esc_attr( uwp_get_field_placeholder( $field ) ); ?>"
title="<?php echo esc_attr( $site_title ); ?>"
oninvalid="this.setCustomValidity('<?php esc_attr_e( stripslashes( $field->required_msg ), 'userswp' ); ?>')"
oninput="setCustomValidity('')"
<?php
if ( $field->is_required == 1 ) {
echo 'required="required"';
}
?>
type="<?php echo esc_attr( $field->field_type ); ?>"
rows="4"><?php echo wp_kses_post( stripslashes( $value ) ); ?></textarea>
<span class="uwp_message_note"><?php echo wp_kses_post( uwp_get_field_description( $field ) ); ?></span>
<?php if ( $field->is_required ) { ?>
<span class="uwp_message_error invalid-feedback"><?php echo esc_html__( stripslashes( $field->required_msg ), 'userswp' ); ?></span>
<?php } ?>
</div>
<?php
}
$html = ob_get_clean();
}
return $html;
}
public function form_input_editor( $html, $field, $value, $form_type ) {
// Check if there is a field specific filter.
if ( has_filter( "uwp_form_input_editor_{$field->htmlvar_name}" ) ) {
$html = apply_filters( "uwp_form_input_editor_{$field->htmlvar_name}", $html, $field, $value, $form_type );
}
if ( empty( $html ) ) {
ob_start();
$design_style = uwp_get_option( 'design_style', 'bootstrap' );
$bs_form_group = $design_style ? 'form-group mb-3' : '';
$bs_sr_only = $design_style ? 'sr-only' : '';
$site_title = uwp_get_form_label( $field );
$content = stripslashes( $value );
$editor_id = $field->htmlvar_name;
$args = array(
'textarea_rows' => 5,
'media_buttons' => false,
'quicktags' => false,
);
$required_msg = ( ! empty( $field->is_required ) && $field->required_msg != '') ? __( stripslashes( $field->required_msg ), 'userswp' ) : '';
$validation_text = ! empty( $field->validation_msg ) ? __( stripslashes( $field->validation_msg ), 'userswp' ) : '';
// bootstrap
if ( $design_style ) {
$required = ! empty( $field->is_required ) ? ' <span class="text-danger">*</span>' : '';
echo aui()->textarea(
array( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
'id' => esc_attr( $field->htmlvar_name ),
'name' => esc_attr( $field->htmlvar_name ),
'placeholder' => esc_attr( uwp_get_field_placeholder( $field ) ),
'title' => esc_html( $site_title ),
'value' => wp_kses_post( stripslashes( $value ) ),
'required' => (bool) $field->is_required,
'validation_text' => $validation_text != '' ? esc_attr( $validation_text ) : esc_attr( $required_msg ),
'validation_pattern' => ! empty( $field->validation_pattern ) ? esc_attr( wp_unslash( $field->validation_pattern ) ) : '',
'help_text' => wp_kses_post( uwp_get_field_description( $field ) ),
'label' => is_admin() && ! wp_doing_ajax() ? '' : wp_kses_post( $site_title . $required ),
'rows' => 5,
'wysiwyg' => true,
'wrap_class' => isset( $field->css_class ) ? esc_attr( $field->css_class ) : '',
)
);
} else {
?>
<div id="<?php echo esc_attr( $field->htmlvar_name ); ?>_row"
class="
<?php
if ( $field->is_required ) {
echo 'required_field';
}
?>
uwp_form_<?php echo esc_attr( $field->field_type ); ?>_row uwp_clear <?php echo esc_attr( $bs_form_group ); ?>">
<?php
if ( ! is_admin() ) {
?>
<label class="<?php echo esc_attr( $bs_sr_only ); ?>">
<?php echo ( trim( $site_title ) ) ? esc_html( $site_title ) : ' '; ?>
<?php
if ( $field->is_required ) {
echo '<span>*</span>';
}
?>
</label>
<?php } ?>
<?php wp_editor( $content, $editor_id, $args ); ?>
<span class="uwp_message_note"><?php echo wp_kses_post( uwp_get_field_description( $field ) ); ?></span>
<?php if ( $field->is_required ) { ?>
<span class="uwp_message_error invalid-feedback"><?php echo esc_html__( stripslashes( $field->required_msg ), 'userswp' ); ?></span>
<?php } ?>
</div>
<?php
}
$html = ob_get_clean();
}
return $html;
}
/**
* Form field template for fieldset field type.
*
* @param string $html Form field html
* @param object $field Field info.
* @param string $value Form field default value.
* @param string $form_type Form type
*
* @return string Modified form field html.
* @package userswp
*
* @since 1.0.0
*/
public function form_input_fieldset( $html, $field, $value, $form_type ) {
// Check if there is a custom field specific filter.
if ( has_filter( "uwp_form_input_fieldset_{$field->htmlvar_name}" ) ) {
$html = apply_filters( "uwp_form_input_fieldset_{$field->htmlvar_name}", $html, $field, $value, $form_type );
}
// If no html then we run the standard output.
if ( empty( $html ) ) {
ob_start(); // Start buffering;
$site_title = uwp_get_form_label( $field );
?>
<h3 class="uwp_input_fieldset <?php echo esc_attr( $field->css_class ); ?>">
<?php echo esc_html( $site_title ); ?>
<?php
if ( $field->help_text != '' ) {
echo '<small>( ' . wp_kses_post( $field->help_text ) . ' )</small>';
}
?>
</h3>
<?php
$html = ob_get_clean();
}
return $html;
}
/**
* Form field template for url field type.
*
* @param string $html Form field html
* @param object $field Field info.
* @param string $value Form field default value.
* @param string $form_type Form type
*
* @return string Modified form field html.
* @package userswp
*
* @since 1.0.0
*/
public function form_input_url( $html, $field, $value, $form_type ) {
// Check if there is a custom field specific filter.
if ( has_filter( "uwp_form_input_url_{$field->htmlvar_name}" ) ) {
$html = apply_filters( "uwp_form_input_url_{$field->htmlvar_name}", $html, $field, $value, $form_type );
}
// If no html then we run the standard output.
if ( empty( $html ) ) {
$design_style = uwp_get_option( 'design_style', 'bootstrap' );
$bs_form_group = $design_style ? 'form-group mb-3' : '';
$bs_sr_only = $design_style ? 'sr-only' : '';
$bs_form_control = $design_style ? 'form-control' : '';
ob_start(); // Start buffering;
$site_title = uwp_get_form_label( $field );
$required_msg = ( ! empty( $field->is_required ) && $field->required_msg != '') ? __( stripslashes( $field->required_msg ), 'userswp' ) : __( 'Please enter a valid URL including https://', 'userswp' );
$validation_text = ! empty( $field->validation_msg ) ? __( stripslashes( $field->validation_msg ), 'userswp' ) : '';
// bootstrap
if ( $design_style ) {
$required = ! empty( $field->is_required ) ? ' <span class="text-danger">*</span>' : '';
echo aui()->input(
array( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
'type' => 'url',
'id' => esc_attr( $field->htmlvar_name ),
'name' => esc_attr( $field->htmlvar_name ),
'placeholder' => esc_attr( uwp_get_field_placeholder( $field ) ),
'title' => esc_html( $site_title ),
'value' => esc_attr( $value ),
'required' => (bool) $field->is_required,
'validation_text' => $validation_text != '' ? esc_attr( $validation_text ) : esc_attr( $required_msg ),
'validation_pattern' => ! empty( $field->validation_pattern ) ? esc_attr( wp_unslash( $field->validation_pattern ) ) : '',
'help_text' => wp_kses_post( uwp_get_field_description( $field ) ),
'label' => is_admin() && ! wp_doing_ajax() ? '' : wp_kses_post( $site_title . $required ),
'wrap_class' => isset( $field->css_class ) ? esc_attr( $field->css_class ) : '',
)
);
} else {
?>
<div id="<?php echo esc_attr( $field->htmlvar_name ); ?>_row"
class="
<?php
if ( $field->is_required ) {
echo 'required_field';
}
?>
uwp_form_<?php echo esc_attr( $field->field_type ); ?>_row uwp_clear <?php echo esc_attr( $bs_form_group ); ?>">
<?php
if ( ! is_admin() ) {
?>
<label class="<?php echo esc_attr( $bs_sr_only ); ?>">
<?php echo ( trim( $site_title ) ) ? esc_html( $site_title ) : ' '; ?>
<?php
if ( $field->is_required ) {
echo '<span>*</span>';
}
?>
</label>
<?php } ?>
<input name="<?php echo esc_attr( $field->htmlvar_name ); ?>"
class="
<?php
//echo $field->css_class;
?>
uwp_textfield <?php echo esc_attr( $bs_form_control ); ?>"
id="<?php echo esc_attr( $field->htmlvar_name ); ?>"
placeholder="<?php echo esc_attr( uwp_get_field_placeholder( $field ) ); ?>"
value="<?php echo esc_attr( stripslashes( $value ) ); ?>"
title="<?php echo esc_attr( $site_title ); ?>"
<?php
if ( $field->is_required == 1 ) {
echo 'required="required"';
}
?>
type="url"
oninvalid="setCustomValidity('<?php esc_attr_e( 'Please enter a valid URL including http://', 'userswp' ); ?>')"
onchange="try{setCustomValidity('')}catch(e){}"
/>
<span class="uwp_message_note"><?php echo wp_kses_post( uwp_get_field_description( $field ) ); ?></span>
<?php if ( $field->is_required ) { ?>
<span class="uwp_message_error invalid-feedback"><?php echo esc_html__( stripslashes( $field->required_msg ), 'userswp' ); ?></span>
<?php } ?>
</div>
<?php
}
$html = ob_get_clean();
}
return $html;
}
/**
* Form field template for email field type.
*
* @param string $html Form field html
* @param object $field Field info.
* @param string $value Form field default value.
* @param string $form_type Form type
*
* @return string Modified form field html.
* @package userswp
*
* @since 1.0.0
*/
public function form_input_email( $html, $field, $value, $form_type ) {
// Check if there is a custom field specific filter.
if ( has_filter( "uwp_form_input_email_{$field->htmlvar_name}" ) ) {
$html = apply_filters( "uwp_form_input_email_{$field->htmlvar_name}", $html, $field, $value, $form_type );
}
// If no html then we run the standard output.
if ( empty( $html ) ) {
$design_style = uwp_get_option( 'design_style', 'bootstrap' );
$bs_form_group = $design_style ? 'form-group mb-3' : '';
$bs_sr_only = $design_style ? 'sr-only' : '';
$bs_form_control = $design_style ? 'form-control' : '';
ob_start(); // Start buffering;
$site_title = uwp_get_form_label( $field );
$required_msg = ( ! empty( $field->is_required ) && $field->required_msg != '') ? __( stripslashes( $field->required_msg ), 'userswp' ) : '';
$validation_text = ! empty( $field->validation_msg ) ? __( stripslashes( $field->validation_msg ), 'userswp' ) : '';
if ( $design_style ) {
$required = ! empty( $field->is_required ) ? ' <span class="text-danger">*</span>' : '';
echo aui()->input(
array( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
'type' => 'email',
'id' => esc_attr( $field->htmlvar_name ),
'name' => esc_attr( $field->htmlvar_name ),
'placeholder' => esc_attr( uwp_get_field_placeholder( $field ) ),
'title' => esc_html( $site_title ),
'value' => esc_attr( wp_unslash( $value ) ),
'required' => (bool) $field->is_required,
'validation_text' => $validation_text != '' ? esc_attr( $validation_text ) : esc_attr( $required_msg ),
'validation_pattern' => ! empty( $field->validation_pattern ) ? esc_attr( wp_unslash( $field->validation_pattern ) ) : '',
'help_text' => wp_kses_post( uwp_get_field_description( $field ) ),
'label' => is_admin() && ! wp_doing_ajax() ? '' : wp_kses_post( $site_title . $required ),
'wrap_class' => isset( $field->css_class ) ? esc_attr( $field->css_class ) : '',
)
);
} else {
?>
<div id="<?php echo esc_attr( $field->htmlvar_name ); ?>_row"
class="
<?php
if ( $field->is_required ) {
echo 'required_field';
}
?>
uwp_form_<?php echo esc_attr( $field->field_type ); ?>_row uwp_clear <?php echo esc_attr( $bs_form_group ); ?>">
<?php
if ( ! is_admin() ) {
?>
<label class="<?php echo esc_attr( $bs_sr_only ); ?>">
<?php echo ( trim( $site_title ) ) ? esc_html( $site_title ) : ' '; ?>
<?php
if ( $field->is_required ) {
echo '<span>*</span>';
}
?>
</label>
<?php } ?>
<input name="<?php echo esc_attr( $field->htmlvar_name ); ?>"
class="<?php echo esc_attr( $field->css_class ); ?> uwp_textfield <?php echo esc_attr( $bs_form_control ); ?>"
id="<?php echo esc_attr( $field->htmlvar_name ); ?>"
placeholder="<?php echo esc_attr( uwp_get_field_placeholder( $field ) ); ?>"
value="<?php echo esc_attr( stripslashes( $value ) ); ?>"
title="<?php echo esc_attr( $site_title ); ?>"
<?php
if ( $field->is_required == 1 ) {
echo 'required="required"';
}
?>
type="email"
/>
<span class="uwp_message_note"><?php echo wp_kses_post( uwp_get_field_description( $field ) ); ?></span>
<?php if ( $field->is_required ) { ?>
<span class="uwp_message_error invalid-feedback"><?php echo esc_html__( stripslashes( $field->required_msg ), 'userswp' ); ?></span>
<?php } ?>
</div>
<?php
}
$html = ob_get_clean();
}
if ( has_filter( "uwp_form_input_email_{$field->htmlvar_name}_after" ) ) {
$html = apply_filters( "uwp_form_input_email_{$field->htmlvar_name}_after", $html, $field, $value, $form_type );
}
return $html;
}
/**
* Form field template for password field type.
*
* @param string $html Form field html
* @param object $field Field info.
* @param string $value Form field default value.
* @param string $form_type Form type
*
* @return string Modified form field html.
* @package userswp
*
* @since 1.0.0
*/
public function form_input_password( $html, $field, $value, $form_type ) {
// Check if there is a custom field specific filter.
if ( has_filter( "uwp_form_input_password_{$field->htmlvar_name}" ) ) {
$html = apply_filters( "uwp_form_input_password_{$field->htmlvar_name}", $html, $field, $value, $form_type );
}
// If no html then we run the standard output.
if ( empty( $html ) ) {
$design_style = uwp_get_option( 'design_style', 'bootstrap' );
$bs_form_group = $design_style ? 'form-group mb-3' : '';
$bs_sr_only = $design_style ? 'sr-only' : '';
$bs_form_control = $design_style ? 'form-control' : '';
ob_start(); // Start buffering;
$site_title = uwp_get_form_label( $field );
if ( $design_style ) {
$required = ! empty( $field->is_required ) ? ' <span class="text-danger">*</span>' : '';
$required_msg = ( ! empty( $field->required_msg ) && $field->required_msg != '') ? __( stripslashes( $field->required_msg ), 'userswp' ) : '';
$validation_text = ! empty( $field->validation_msg ) ? __( stripslashes( $field->validation_msg ), 'userswp' ) : '';
$wrap_class = isset( $field->css_class ) ? $field->css_class . ' uwp-password-wrap' : 'uwp-password-wrap';
echo aui()->input(
array( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
'type' => 'password',
'id' => esc_attr( $field->htmlvar_name ),
'name' => esc_attr( $field->htmlvar_name ),
'placeholder' => esc_attr( uwp_get_field_placeholder( $field ) ),
'title' => esc_html( $site_title ),
'value' => esc_attr( $value ),
'required' => (bool) $field->is_required,
'validation_text' => $validation_text != '' ? esc_attr( $validation_text ) : esc_attr( $required_msg ),
'validation_pattern' => ! empty( $field->validation_pattern ) ? esc_attr( wp_unslash( $field->validation_pattern ) ) : '',
'help_text' => wp_kses_post( uwp_get_field_description( $field ) ),
'label' => is_admin() && ! wp_doing_ajax() ? '' : wp_kses_post( $site_title . $required ),
'wrap_class' => esc_attr( $wrap_class ),
)
);
} else {
?>
<div id="<?php echo esc_attr( $field->htmlvar_name ); ?>_row" class="
<?php
if ( $field->is_required ) {
echo 'required_field';
}
?>
uwp_form_<?php echo esc_attr( $field->field_type ); ?>_row uwp_clear <?php echo esc_attr( $bs_form_group ); ?>">
<?php
if ( ! is_admin() ) {
?>
<label class="<?php echo esc_attr( $bs_sr_only ); ?>">
<?php echo ( trim( $site_title ) ) ? esc_html( $site_title ) : ' '; ?>
<?php
if ( $field->is_required ) {
echo '<span>*</span>';
}
?>
</label>
<?php } ?>
<input name="<?php echo esc_attr( $field->htmlvar_name ); ?>"
class="<?php echo esc_attr( $field->css_class ); ?> uwp_textfield <?php echo esc_attr( $bs_form_control ); ?>"
id="<?php echo esc_attr( $field->htmlvar_name ); ?>"
placeholder="<?php echo esc_attr( uwp_get_field_placeholder( $field ) ); ?>"
value="<?php echo esc_attr( stripslashes( $value ) ); ?>"
title="<?php echo esc_attr( $site_title ); ?>"
<?php
if ( $field->is_required == 1 ) {
echo 'required="required"';
}
?>
type="password"
/>
<span class="uwp_message_note"><?php echo wp_kses_post( uwp_get_field_description( $field ) ); ?></span>
<?php if ( $field->is_required ) { ?>
<span class="uwp_message_error invalid-feedback"><?php echo esc_html__( stripslashes( $field->required_msg ), 'userswp' ); ?></span>
<?php } ?>
</div>
<?php
}
$html = ob_get_clean();
}
if ( has_filter( "uwp_form_input_password_{$field->htmlvar_name}_after" ) ) {
$html = apply_filters( "uwp_form_input_password_{$field->htmlvar_name}_after", $html, $field, $value, $form_type );
}
return $html;
}
/**
* Form field template for Phone field.
*
* @param string $html Form field html
* @param object $field Field info.
* @param string $value Form field default value.
* @param string $form_type Form type
*
* @return string $html Modified form field html.
* @since 1.0.0
*
*/
public function form_input_phone( $html, $field, $value, $form_type ) {
if ( empty( $html ) ) {
$design_style = uwp_get_option( 'design_style', 'bootstrap' );
$bs_form_group = $design_style ? 'form-group mb-3' : '';
$bs_sr_only = $design_style ? 'sr-only' : '';
$bs_form_control = $design_style ? 'form-control' : '';
ob_start(); // Start buffering;
$site_title = uwp_get_form_label( $field );
$required_msg = ( ! empty( $field->is_required ) && $field->required_msg != '') ? __( stripslashes( $field->required_msg ), 'userswp' ) : '';
$validation_text = ! empty( $field->validation_msg ) ? __( stripslashes( $field->validation_msg ), 'userswp' ) : '';
if ( $design_style ) {
$required = ! empty( $field->is_required ) ? ' <span class="text-danger">*</span>' : '';
echo aui()->input(
array( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
'type' => 'tel',
'id' => esc_attr( $field->htmlvar_name ),
'name' => esc_attr( $field->htmlvar_name ),
'placeholder' => esc_attr( uwp_get_field_placeholder( $field ) ),
'title' => esc_html( $site_title ),
'value' => esc_attr( $value ),
'required' => (bool) $field->is_required,
'help_text' => wp_kses_post( uwp_get_field_description( $field ) ),
'label' => is_admin() && ! wp_doing_ajax() ? '' : wp_kses_post( $site_title . $required ),
'wrap_class' => isset( $field->css_class ) ? esc_attr( $field->css_class ) : '',
'validation_text' => $validation_text != '' ? esc_attr( $validation_text ) : esc_attr( $required_msg ),
'validation_pattern' => ! empty( $field->validation_pattern ) ? esc_attr( wp_unslash( $field->validation_pattern ) ) : '',
)
);
} else {
?>
<div id="<?php echo esc_attr( $field->htmlvar_name ); ?>_row"
class="
<?php
if ( $field->is_required ) {
echo 'required_field';
}
?>
clearfix uwp_clear <?php echo esc_attr( $bs_form_group ); ?>">
<?php
if ( ! is_admin() ) {
?>
<label class="<?php echo esc_attr( $bs_sr_only ); ?>">
<?php echo ( trim( $site_title ) ) ? esc_html( $site_title ) : ' '; ?>
<?php
if ( $field->is_required ) {
echo '<span>*</span>';
}
?>
</label>
<?php } ?>
<input name="<?php echo esc_attr( $field->htmlvar_name ); ?>"
class="<?php echo esc_attr( $field->css_class ); ?> <?php echo esc_attr( $bs_form_control ); ?>"
placeholder="<?php echo esc_attr( uwp_get_field_placeholder( $field ) ); ?>"
title="<?php echo esc_attr( $site_title ); ?>"
<?php
if ( $field->for_admin_use == 1 ) {
echo 'readonly="readonly"';
}
?>
<?php
if ( $field->is_required == 1 ) {
echo 'required="required"';
}
?>
type="tel"
value="<?php echo esc_html( $value ); ?>">
</div>
<?php
}
$html = ob_get_clean();
}
return $html;
}
public function form_input_register_gdpr( $html, $field, $value, $form_type ) {
$form_id = isset( $field->form_id ) ? (int) $field->form_id : 1;
$reg_gdpr = uwp_get_register_form_by( $form_id, 'gdpr_page' );
if ( empty( $reg_gdpr ) ) {
$reg_gdpr = uwp_get_option( 'register_gdpr_page', false );
}
if ( ! empty( $reg_gdpr ) ) {
$design_style = uwp_get_option( 'design_style', 'bootstrap' );
$bs_form_group = $design_style ? 'form-group mb-3 form-check' : '';
$bs_form_control = $design_style ? 'form-check-input' : '';
$site_title = uwp_get_form_label( $field );
$field->htmlvar_name = 'register_gdpr';
$id = wp_doing_ajax() ? $field->htmlvar_name . '_ajax' : $field->htmlvar_name;
$gdpr_page = get_permalink( $reg_gdpr );
$link_start = '<a href="' . esc_url( $gdpr_page ) . '" target="_blank">';
$link_end = '</a>';
$field_desc = uwp_get_field_description( $field, '' );
$field_desc = str_replace( '%%link_start%%', $link_start, $field_desc );
$field_desc = str_replace( '%%link_end%%', $link_end, $field_desc );
$content = $field_desc ? $field_desc : sprintf( __( 'By using this form I agree to the storage and handling of my data by this website. View our %1$s %2$s %3$s.', 'userswp' ), '<a href="' . esc_url( $gdpr_page ) . '" target="_blank">', $site_title, '</a>' );
$checked = $value == '1' ? true : false;
ob_start(); // Start buffering;
// bootstrap
if ( $design_style ) {
$required = ! empty( $field->is_required ) ? ' <span class="text-danger">*</span>' : '';
echo '<input type="hidden" name="' . esc_attr( $field->htmlvar_name ) . '" id="checkbox_' . esc_attr( $id ) . '" value="0"/>';
echo aui()->input( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
array(
'id' => esc_attr( $id ),
'name' => esc_attr( $field->htmlvar_name ),
'type' => 'checkbox',
'value' => '1',
'title' => esc_html( $site_title ),
'label' => wp_kses_post( $content . $required ),
'label_show' => true,
'required' => ! empty( $field->is_required ) ? true : false,
'checked' => (bool) $checked,
'wrap_class' => isset( $field->css_class ) ? esc_attr( $field->css_class ) : '',
'validation_text' => ! empty( $field->is_required ) ? esc_attr__( stripslashes( $field->required_msg ), 'userswp' ) : '',
)
);
} else {
?>
<div id="<?php echo esc_attr( $field->htmlvar_name ); ?>_row"
class="
<?php
if ( $field->is_required ) {
echo 'required_field';
}
?>
uwp_form_<?php echo esc_attr( $field->field_type ); ?>_row uwp_clear <?php echo esc_attr( $bs_form_group ); ?>">
<input type="hidden" name="<?php echo esc_attr( $field->htmlvar_name ); ?>" value="0"/>
<input name="<?php echo esc_attr( $field->htmlvar_name ); ?>"
class="<?php echo esc_attr( $field->css_class ); ?> <?php echo esc_attr( $bs_form_control ); ?>"
placeholder="<?php echo esc_attr( uwp_get_field_placeholder( $field ) ); ?>"
title="<?php echo esc_attr( $site_title ); ?>"
<?php
if ( $value == '1' ) {
echo 'checked="checked"';
}
?>
type="<?php echo esc_attr( $field->field_type ); ?>"
value="1">
<?php
echo ( trim( $content ) ) ? wp_kses_post( $content ) : ' ';
?>
<span class="uwp_message_note"><?php echo wp_kses_post( uwp_get_field_description( $field ) ); ?></span>
<?php if ( $field->is_required ) { ?>
<span class="uwp_message_error invalid-feedback"><?php echo esc_html__( stripslashes( $field->required_msg ), 'userswp' ); ?></span>
<?php } ?>
</div>
<?php
}
$html = ob_get_clean();
} else {
$html = '<input type="hidden" name="register_gdpr" value="-1"/>';
}
return $html;
}
public function form_input_register_tos( $html, $field, $value, $form_type ) {
$form_id = isset( $field->form_id ) ? (int) $field->form_id : 1;
$reg_tos = uwp_get_register_form_by( $form_id, 'tos_page' );
if ( empty( $reg_tos ) ) {
$reg_tos = uwp_get_option( 'register_terms_page', false );
}
if ( ! empty( $reg_tos ) ) {
$design_style = uwp_get_option( 'design_style', 'bootstrap' );
$bs_form_group = $design_style ? 'form-group mb-3 form-check' : '';
$bs_form_control = $design_style ? 'form-check-input' : '';
$site_title = uwp_get_form_label( $field );
$terms_page = get_permalink( $reg_tos );
$link_start = '<a href="' . esc_url( $terms_page ) . '" target="_blank">';
$link_end = '</a>';
$field_desc = uwp_get_field_description( $field, '' );
$field_desc = str_replace( '%%link_start%%', $link_start, $field_desc );
$field_desc = str_replace( '%%link_end%%', $link_end, $field_desc );
$field->htmlvar_name = 'register_tos';
$id = wp_doing_ajax() ? $field->htmlvar_name . '_ajax' : $field->htmlvar_name;
$content = $field_desc ? $field_desc : sprintf( __( 'I accept the %1$s %2$s %3$s.', 'userswp' ), '<a href="' . esc_url( $terms_page ) . '" target="_blank">', $site_title, '</a>' );
$checked = $value == '1' ? true : false;
ob_start();
if ( $design_style ) {
$required = ! empty( $field->is_required ) ? ' <span class="text-danger">*</span>' : '';
echo '<input type="hidden" name="' . esc_attr( $field->htmlvar_name ) . '" id="checkbox_' . esc_attr( $id ) . '" value="0"/>';
echo aui()->input( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
array(
'id' => esc_attr( $id ),
'name' => esc_attr( $field->htmlvar_name ),
'type' => 'checkbox',
'value' => '1',
'title' => esc_html( $site_title ),
'label' => wp_kses_post( $content . $required ),
'label_show' => true,
'required' => ! empty( $field->is_required ) ? true : false,
'checked' => (bool) $checked,
'wrap_class' => isset( $field->css_class ) ? esc_attr( $field->css_class ) : '',
'validation_text' => ! empty( $field->is_required ) ? esc_attr__( stripslashes( $field->required_msg ), 'userswp' ) : '',
)
);
} else {
?>
<div id="<?php echo esc_attr( $field->htmlvar_name ); ?>_row"
class="
<?php
if ( $field->is_required ) {
echo 'required_field';
}
?>
uwp_form_<?php echo esc_attr( $field->field_type ); ?>_row uwp_clear <?php echo esc_attr( $bs_form_group ); ?>">
<input type="hidden" name="<?php echo esc_attr( $field->htmlvar_name ); ?>" value="0"/>
<input name="<?php echo esc_attr( $field->htmlvar_name ); ?>"
class="<?php echo esc_attr( $field->css_class ); ?> <?php echo esc_attr( $bs_form_control ); ?>"
placeholder="<?php echo esc_attr( uwp_get_field_placeholder( $field ) ); ?>"
title="<?php echo esc_attr( $site_title ); ?>"
<?php
if ( $value == '1' ) {
echo 'checked="checked"';
}
?>
type="<?php echo esc_attr( $field->field_type ); ?>"
value="1">
<?php
echo ( trim( $content ) ) ? wp_kses_post( $content ) : ' ';
?>
<span class="uwp_message_note"><?php echo wp_kses_post( uwp_get_field_description( $field ) ); ?></span>
<?php if ( $field->is_required ) { ?>
<span class="uwp_message_error invalid-feedback"><?php echo esc_html__( stripslashes( $field->required_msg ), 'userswp' ); ?></span>
<?php } ?>
</div>
<?php
}
$html = ob_get_clean();
} else {
$html = '<input type="hidden" name="register_tos" value="-1"/>';
}
return $html;
}
/**
* Adds enctype tag in form for file fields.
*
* @return void
* @package userswp
*
* @since 1.0.0
*/
function add_multipart_to_admin_edit_form() {
global $wpdb;
$table_name = uwp_get_table_prefix() . 'uwp_form_fields';
$fields = $wpdb->get_results( 'SELECT * FROM ' . $table_name . " WHERE form_type = 'account' AND field_type = 'file' AND is_default = '0' ORDER BY sort_order ASC" ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
if ( $fields ) {
echo 'enctype="multipart/form-data"';
}
}
/**
* Handles UsersWP custom field requests from admin.
*
* @param int $user_id User ID.
*
* @return void
* @since 1.0.0
* @package userswp
*
*/
public function update_profile_extra_admin_edit( $user_id ) {
global $wpdb;
$file_obj = new UsersWP_Files();
$table_name = uwp_get_table_prefix() . 'uwp_form_fields';
//Normal fields
$fields = $wpdb->get_results( 'SELECT * FROM ' . $table_name . " WHERE form_type = 'account' AND field_type != 'file' AND field_type != 'fieldset' ORDER BY sort_order ASC" ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
if ( $fields ) {
if ( isset( $_POST['locale'] ) ) {
$_POST['uwp_language'] = sanitize_text_field( $_POST['locale'] );
}
$result = uwp_validate_fields( $_POST, 'account', $fields );
if ( is_wp_error( $result ) ) {
die( wp_kses_post( $result->get_error_message() ) );
}
if ( isset( $result['display_name'] ) && ! empty( $result['display_name'] ) ) {
$display_name = $result['display_name'];
} elseif ( ! empty( $first_name ) || ! empty( $last_name ) ) {
$display_name = $result['first_name'] . ' ' . $result['last_name'];
} else {
$user_info = get_userdata( $user_id );
$display_name = $user_info->user_login;
}
$result['display_name'] = $display_name;
if ( ! is_wp_error( $result ) ) {
foreach ( $fields as $field ) {
$value = isset( $result[ $field->htmlvar_name ] ) ? $result[ $field->htmlvar_name ] : '';
if ( $value == '0' || ! empty( $value ) ) {
uwp_update_usermeta( $user_id, $field->htmlvar_name, $value );
}
}
}
}
//File fields
$fields = $wpdb->get_results( 'SELECT * FROM ' . $table_name . " WHERE form_type = 'account' AND field_type = 'file' AND is_default = '0' ORDER BY sort_order ASC" ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
if ( $fields ) {
$result = $file_obj->validate_uploads( $_FILES, 'account', true, $fields );
if ( ! is_wp_error( $result ) ) {
foreach ( $fields as $field ) {
$value = isset( $result[ $field->htmlvar_name ] ) ? $result[ $field->htmlvar_name ] : '';
if ( $value == '0' || ! empty( $value ) ) {
uwp_update_usermeta( $user_id, $field->htmlvar_name, $value );
}
}
}
}
}
/**
* Form field template for country field.
*
* @param string $html Form field html
* @param object $field Field info.
* @param string $value Form field default value.
* @param string $form_type Form type
*
* @return string Modified form field html.
* @package userswp
*
* @since 1.0.0
*/
public function form_input_select_country( $html, $field, $value, $form_type ) {
// If no html then we run the standard output.
if ( empty( $html ) ) {
$design_style = uwp_get_option( 'design_style', 'bootstrap' );
$bs_form_group = $design_style ? 'form-group m-0' : ''; // country wrapper div added by JS adds marginso we remove ours
$bs_sr_only = $design_style ? 'sr-only' : '';
$bs_form_control = $design_style ? 'form-control' : '';
ob_start(); // Start buffering;
?>
<div id="<?php echo esc_attr( $field->htmlvar_name ); ?>_row" class="<?php echo ( $field->is_required ? 'required_field' : '' ); ?> uwp_clear <?php echo esc_attr( $bs_form_group . ' ' . $field->css_class ); ?>">
<?php
$site_title = uwp_get_form_label( $field );
if ( ! is_admin() && ! wp_doing_ajax() ) {
?>
<label class="<?php echo esc_attr( $bs_sr_only ); ?>">
<?php echo ( trim( $site_title ) ) ? esc_html( $site_title ) : ' '; ?>
<?php
if ( $field->is_required ) {
echo '<span class="text-danger">*</span>';
}
?>
</label>
<?php
}
// if value empty set the default
if ( $value == '' && isset( $field->default_value ) && $field->default_value ) {
$value = $field->default_value;
}
if ( $value === false ) {
$value = '';
}
$select_country_options = wp_json_encode( array( 'defaultCountry' => wp_unslash( $value ) ) );
$select_country_options = apply_filters( 'uwp_form_input_select_country', $select_country_options, $field, $value, $form_type );
$htmlvar_name = $field->htmlvar_name;
if ( wp_doing_ajax() ) {
$htmlvar_name .= '_ajax';
}
?>
<input type="text" class="uwp_textfield <?php echo esc_attr( $bs_form_control ); ?>" title="<?php echo esc_attr( $site_title ); ?>" id="<?php echo esc_attr( $htmlvar_name ); ?>"/>
<input type="hidden" id="<?php echo esc_attr( $htmlvar_name ); ?>_code" name="<?php echo esc_attr( $field->htmlvar_name ); ?>"/>
<script>jQuery(function(){jQuery("#<?php echo esc_js( $htmlvar_name ); ?>").countrySelect(<?php echo wp_json_encode( json_decode( $select_country_options ) ); ?>);});</script>
<span class="uwp_message_note"><?php echo wp_kses_post( uwp_get_field_description( $field ) ); ?></span>
<?php if ( $field->is_required ) { ?>
<span class="uwp_message_error invalid-feedback"><?php echo esc_html__( stripslashes( $field->required_msg ), 'userswp' ); ?></span>
<?php } ?>
</div>
<?php
$html = ob_get_clean();
}
return $html;
}
/**
* Form field template for language field.
*
* @param string $html Form field html
* @param object $field Field info.
* @param string $value Form field default value.
* @param string $form_type Form type
*
* @return string Modified form field html.
* @package userswp
*
* @since 1.0.0
*/
public function form_input_uwp_language( $html, $field, $value, $form_type ) {
// If no html then we run the standard output.
if ( empty( $html ) ) {
$design_style = uwp_get_option( 'design_style', 'bootstrap' );
$bs_form_group = $design_style ? 'form-group m-0' : '';
$bs_sr_only = $design_style ? 'sr-only' : '';
$bs_form_control = $design_style ? 'form-control' : '';
$required_msg = ( ! empty( $field->is_required ) && $field->required_msg != '') ? __( stripslashes( $field->required_msg ), 'userswp' ) : '';
$validation_text = ! empty( $field->validation_msg ) ? __( stripslashes( $field->validation_msg ), 'userswp' ) : '';
ob_start(); // Start buffering;
?>
<div id="<?php echo esc_attr( $field->htmlvar_name ); ?>_row"
class="
<?php
if ( $field->is_required ) {
echo 'required_field';
}
?>
uwp_clear <?php echo esc_attr( $bs_form_group . ' ' . $field->css_class ); ?>">
<?php
$site_title = uwp_get_form_label( $field );
if ( ! is_admin() && ! wp_doing_ajax() ) {
?>
<label class="<?php echo esc_attr( $bs_sr_only ); ?>">
<?php echo ( trim( $site_title ) ) ? esc_html( $site_title ) : ' '; ?>
<?php
if ( $field->is_required ) {
echo '<span class="text-danger">*</span>';
}
?>
</label>
<?php } ?>
<?php
if ( empty( $field->default_value ) ) {
$field->default_value = 'site-default';
}
// if value empty set the default
if ( $value == '' && isset( $field->default_value ) && $field->default_value ) {
$value = $field->default_value;
}
require_once ABSPATH . 'wp-admin/includes/translation-install.php';
$translations = wp_get_available_translations();
$available_languages = get_available_languages();
$languages = array( 'site-default' => __( 'Site Default', 'userswp' ) );
foreach ( $available_languages as $locale ) {
if ( isset( $translations[ $locale ] ) ) {
$translation = $translations[ $locale ];
$languages[ $translation['language'] ] = $translation['native_name'];
// Remove installed language from available translations.
unset( $translations[ $locale ] );
} else {
$languages[ $locale ] = $translation[ $locale ];
}
}
if ( $design_style ) {
$required = ! empty( $field->is_required ) ? ' <span class="text-danger">*</span>' : '';
echo aui()->select(
array( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
'id' => esc_attr( $field->htmlvar_name ),
'name' => esc_attr( $field->htmlvar_name ),
'placeholder' => esc_attr( uwp_get_field_placeholder( $field ) ),
'title' => esc_attr( $site_title ),
'value' => esc_attr( $value ),
'required' => (bool) $field->is_required,
'validation_text' => $validation_text != '' ? esc_attr( $validation_text ) : esc_attr( $required_msg ),
'validation_pattern' => ! empty( $field->validation_pattern ) ? esc_attr( wp_unslash( $field->validation_pattern ) ) : '',
'help_text' => wp_kses_post( uwp_get_field_description( $field ) ),
'label' => wp_kses_post( $site_title . $required ),
'options' => $languages, // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
'select2' => true,
'wrap_class' => isset( $field->css_class ) ? esc_attr( $field->css_class ) : '',
)
);
} else {
?>
<select name="<?php echo esc_attr( $field->htmlvar_name ); ?>" id="<?php echo esc_attr( $field->htmlvar_name ); ?>"
class="uwp_textfield aui-select2 <?php echo esc_attr( $bs_form_control ); ?>"
title="<?php echo esc_attr( $site_title ); ?>"
data-placeholder="<?php echo esc_attr( uwp_get_field_placeholder( $field ) ); ?>"
><?php echo $select_options; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
</select>
<span class="uwp_message_note"><?php echo wp_kses_post( uwp_get_field_description( $field ) ); ?></span>
<?php if ( $field->is_required ) { ?>
<span class="uwp_message_error invalid-feedback"><?php echo esc_html__( stripslashes( $field->required_msg ), 'userswp' ); ?></span>
<?php
}
}
$html = ob_get_clean();
}
return $html;
}
/**
* Adds confirm password field in forms.
*
* @param string $html Form field html
* @param object $field Field info.
* @param string $value Form field default value.
* @param string $form_type Form type
*
* @return string Modified form field html.
* @package userswp
*
* @since 1.0.0
*/
public function register_confirm_password_field( $html, $field, $value, $form_type ) {
if ( $form_type == 'register' ) {
//confirm password field
$extra = array();
if ( isset( $field->extra_fields ) && $field->extra_fields != '' ) {
$extra = unserialize( $field->extra_fields );
}
$enable_confirm_password_field = isset( $extra['confirm_password'] ) ? $extra['confirm_password'] : '0';
if ( $enable_confirm_password_field == '1' ) {
$design_style = uwp_get_option( 'design_style', 'bootstrap' );
$bs_form_group = $design_style ? 'form-group mb-3' : '';
$bs_sr_only = $design_style ? 'sr-only' : '';
$bs_form_control = $design_style ? 'form-control' : '';
$site_title = $placeholder = __( 'Confirm Password', 'userswp' );
$required = '';
if ( isset( $field->is_required ) && ! empty( $field->is_required ) ) {
$placeholder .= ' *';
$required = ' <span class="text-danger">*</span>';
}
$required_msg = ( ! empty( $field->is_required ) && $field->required_msg != '') ? __( stripslashes( $field->required_msg ), 'userswp' ) : '';
$validation_text = ! empty( $field->validation_msg ) ? __( stripslashes( $field->validation_msg ), 'userswp' ) : '';
$wrap_class = isset( $field->css_class ) ? $field->css_class . ' uwp-password-wrap' : 'uwp-password-wrap';
ob_start(); // Start buffering;
if ( $design_style ) {
echo aui()->input(
array( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
'type' => 'password',
'id' => 'confirm_password',
'name' => 'confirm_password',
'placeholder' => esc_attr( $placeholder ),
'title' => esc_attr( $site_title ),
'value' => esc_attr( $value ),
'required' => (bool) $field->is_required,
'help_text' => wp_kses_post( uwp_get_field_description( $field ) ),
'label' => is_admin() && ! wp_doing_ajax() ? '' : wp_kses_post( $site_title . $required ),
'validation_text' => $validation_text != '' ? esc_attr( $validation_text ) : esc_attr( $required_msg ),
'validation_pattern' => ! empty( $field->validation_pattern ) ? esc_attr( wp_unslash( $field->validation_pattern ) ) : '',
'wrap_class' => esc_attr( $wrap_class ),
)
);
} else {
?>
<div id="uwp_account_confirm_password_row"
class="<?php echo 'required_field'; ?> uwp_form_password_row uwp_clear <?php echo esc_attr( $bs_form_group ); ?>">
<?php
if ( ! is_admin() ) {
?>
<label class="<?php echo esc_attr( $bs_sr_only ); ?>">
<?php echo ( trim( $site_title ) ) ? esc_html( $site_title ) : ' '; ?>
<?php
if ( $field->is_required ) {
echo '<span>*</span>';
}
?>
</label>
<?php } ?>
<input name="confirm_password" class="uwp_textfield <?php echo esc_attr( $bs_form_control ); ?>" id="uwp_account_confirm_password" placeholder="<?php echo esc_attr( $placeholder ); ?>" value="" title="<?php echo esc_attr( $site_title ); ?>" <?php echo 'required="required"'; ?> type="password"/>
</div>
<?php
}
$confirm_html = ob_get_clean();
$html = $html . $confirm_html;
}
}
return $html;
}
/**
* Adds confirm email field in forms.
*
* @param string $html Form field html
* @param object $field Field info.
* @param string $value Form field default value.
* @param string $form_type Form type
*
* @return string Modified form field html.
* @package userswp
*
* @since 1.0.0
*/
public function register_confirm_email_field( $html, $field, $value, $form_type ) {
if ( $form_type == 'register' ) {
//confirm email field
$extra = array();
if ( isset( $field->extra_fields ) && $field->extra_fields != '' ) {
$extra = unserialize( $field->extra_fields );
}
$enable_confirm_email_field = isset( $extra['confirm_email'] ) ? $extra['confirm_email'] : '0';
if ( $enable_confirm_email_field == '1' ) {
$design_style = uwp_get_option( 'design_style', 'bootstrap' );
$bs_form_group = $design_style ? 'form-group mb-3' : '';
$bs_sr_only = $design_style ? 'sr-only' : '';
$bs_form_control = $design_style ? 'form-control' : '';
$site_title = __( 'Confirm Email', 'userswp' );
$required_msg = ( ! empty( $field->is_required ) && $field->required_msg != '') ? __( stripslashes( $field->required_msg ), 'userswp' ) : '';
$validation_text = ! empty( $field->validation_msg ) ? __( stripslashes( $field->validation_msg ), 'userswp' ) : '';
ob_start();
if ( $design_style ) {
$required = ! empty( $field->is_required ) ? ' <span class="text-danger">*</span>' : '';
echo aui()->input(
array( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
'type' => 'email',
'id' => esc_attr( $field->htmlvar_name ),
'name' => 'confirm_email',
'placeholder' => esc_attr( $site_title ),
'title' => esc_attr( $site_title ),
'value' => esc_attr( $value ),
'required' => (bool) $field->is_required,
'help_text' => wp_kses_post( uwp_get_field_description( $field ) ),
'label' => is_admin() && ! wp_doing_ajax() ? '' : wp_kses_post( $site_title . $required ),
'validation_text' => $validation_text != '' ? esc_attr( $validation_text ) : esc_attr( $required_msg ),
'validation_pattern' => ! empty( $field->validation_pattern ) ? esc_attr( wp_unslash( $field->validation_pattern ) ) : '',
)
);
} else {
?>
<div id="uwp_account_confirm_email_row"
class="<?php echo 'required_field'; ?> uwp_form_email_row uwp_clear <?php echo esc_attr( $bs_form_group ); ?>">
<?php
if ( ! is_admin() ) {
?>
<label class="<?php echo esc_attr( $bs_sr_only ); ?>">
<?php echo ( trim( $site_title ) ) ? esc_attr( $site_title ) : ' '; ?>
<?php
if ( $field->is_required ) {
echo '<span>*</span>';
}
?>
</label>
<?php } ?>
<input name="confirm_email"
class="uwp_textfield <?php echo esc_attr( $bs_form_control ); ?>"
id="uwp_account_confirm_email"
placeholder="<?php echo esc_attr( $site_title ); ?>"
value=""
title="<?php echo esc_attr( $site_title ); ?>"
<?php echo 'required="required"'; ?>
type="email"
/>
</div>
<?php
}
$confirm_html = ob_get_clean();
$html = $html . $confirm_html;
}
}
return $html;
}
/**
* Handles the privacy form submission.
*
* @return void
* @package userswp
*
* @since 1.0.0
*/
public function privacy_submit_handler() {
if ( isset( $_POST['uwp_privacy_submit'] ) ) {
if ( ! isset( $_POST['uwp_privacy_nonce'] ) || ! wp_verify_nonce( $_POST['uwp_privacy_nonce'], 'uwp-privacy-nonce' ) ) {
return;
}
global $wpdb, $uwp_notices;
// Save fields privacy settings
$extra_where = "AND is_public='2'";
$fields = get_account_form_fields( $extra_where );
$fields = apply_filters( 'uwp_account_privacy_fields', $fields );
$user_id = get_current_user_id();
$meta_table = get_usermeta_table_prefix() . 'uwp_usermeta';
$user_meta_info = $wpdb->get_row( $wpdb->prepare( "SELECT user_privacy, tabs_privacy FROM $meta_table WHERE user_id = %d", $user_id ) ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
if ( ! empty( $user_meta_info->user_privacy ) ) {
$public_fields = explode( ',', $user_meta_info->user_privacy );
} else {
$public_fields = array();
}
if ( $fields ) {
foreach ( $fields as $field ) {
$field_name = $field->htmlvar_name . '_privacy';
$field_value = strip_tags( esc_sql( $_POST[ $field_name ] ) );
if ( $field_value == 'no' ) {
if ( ! in_array( $field_name, $public_fields ) ) {
$public_fields[] = $field_name;
}
} elseif ( ( $field_name = array_search( $field_name, $public_fields ) ) !== false ) {
unset( $public_fields[ $field_name ] );
}
}
$value = implode( ',', $public_fields );
uwp_update_usermeta( $user_id, 'user_privacy', $value );
}
// Save tabs privacy settings
$tabs_table_name = uwp_get_table_prefix() . 'uwp_profile_tabs';
$tabs = $wpdb->get_results( $wpdb->prepare( 'SELECT * FROM ' . $tabs_table_name . ' WHERE form_type=%s AND user_decided = 1 ORDER BY sort_order ASC', 'profile-tabs' ) ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
if ( $tabs ) {
$public_fields = maybe_unserialize( $user_meta_info->tabs_privacy );
$do_tabs_update = false;
foreach ( $tabs as $tab ) {
$field_name = $tab->tab_key . '_tab_privacy';
if ( isset( $_POST[ $field_name ] ) ) {
$do_tabs_update = true;
$field_value = $_POST[ $field_name ] == '' ? '' : absint( $_POST[ $field_name ] );
if ( $field_value === '' && isset( $public_fields[ $field_name ] ) ) {
unset( $public_fields[ $field_name ] );
} else {
$public_fields[ $field_name ] = $field_value;
}
}
}
if ( $do_tabs_update ) {
uwp_update_usermeta( $user_id, 'tabs_privacy', maybe_serialize( $public_fields ) );
}
}
if ( isset( $_POST['uwp_hide_from_listing'] ) && 1 == $_POST['uwp_hide_from_listing'] ) {
update_user_meta( $user_id, 'uwp_hide_from_listing', 1 );
} else {
update_user_meta( $user_id, 'uwp_hide_from_listing', 0 );
}
$make_profile_private = uwp_can_make_profile_private();
if ( $make_profile_private ) {
$field_name = 'uwp_make_profile_private';
if ( isset( $_POST[ $field_name ] ) ) {
$value = strip_tags( esc_sql( $_POST[ $field_name ] ) );
$user_id = get_current_user_id();
update_user_meta( $user_id, $field_name, $value );
}
}
$message = apply_filters( 'uwp_privacy_update_success_message', __( 'Privacy settings updated successfully.', 'userswp' ) );
$message = aui()->alert(
array(
'type' => 'success',
'content' => $message,
)
);
$uwp_notices[] = array( 'account' => $message );
}
}
/**
* Get the ajax login form.
*
* @since 1.2.0
*/
public function ajax_login_form() {
// add the modal error container
add_action( 'uwp_template_display_notices', array( $this, 'modal_error_container' ) );
$args = array(
'form_title' => __( 'Login', 'userswp' ),
);
// get the form
ob_start();
uwp_get_template( 'bootstrap/login.php', $args );
$form = ob_get_clean();
// bs5
if ( function_exists( 'aui_bs_convert_sd_output' ) ) {
$form = aui_bs_convert_sd_output( $form );
}
// send ajax response
wp_send_json_success( $form );
}
/**
* Get the ajax register form.
*
* @since 1.2.0
*/
public function ajax_register_form() {
// add the modal error container
add_action( 'uwp_template_display_notices', array( $this, 'modal_error_container' ) );
global $wp_scripts;
if ( empty( $wp_scripts ) ) {
$wp_scripts = wp_scripts();
}
// do we need country code script in ajax?
$country_field = false;
$lightbox_forms = uwp_get_option( 'register_modal_form', 1 );
if ( isset( $_POST['form_id'] ) && ! empty( $_POST['form_id'] ) ) {
$form_id = (int)$_POST['form_id'];
} elseif ( is_array( $lightbox_forms ) && count( $lightbox_forms ) > 0 ) {
$form_id = reset( $lightbox_forms );
} else {
$form_id = 1;
}
$fields = get_register_form_fields( $form_id );
if ( ! empty( $fields ) ) {
foreach ( $fields as $field ) {
if ( $field->field_type_key == 'country' || $field->field_type_key == 'uwp_country' ) {
$country_field = true;
}
}
}
ob_start();
// maybe add country code JS
if ( $country_field ) {
$country_data = uwp_get_country_data();
echo '<script>var uwp_country_data = ' . json_encode( $country_data ) . '</script>';
echo "<script type='text/javascript' src='" . esc_url( USERSWP_PLUGIN_URL ) . 'assets/js/countrySelect.min.js' . "' ></script>";
}
$args = array( 'form_title' => '' );
if ( $form_id > 0 ) {
$args['id'] = $form_id;
}
$args['limit'] = $lightbox_forms;
// get template
uwp_get_template( 'bootstrap/register.php', $args );
// only show the JS if NOT doing a block render
if ( isset( $_REQUEST['action'] ) && $_REQUEST['action'] != 'super_duper_output_shortcode' ) {
// load scripts
$wp_scripts->do_item( 'zxcvbn-async' );
$wp_scripts->do_item( 'wp-hooks' );
$wp_scripts->do_item( 'wp-i18n' );
$wp_scripts->do_item( 'password-strength-meter' );
?>
<script>
// Password strength indicator script
jQuery(function ($) {
// Load the settings like WP does.
var first, s;
s = document.createElement('script');
s.src = _zxcvbnSettings.src;
s.type = 'text/javascript';
s.async = true;
first = document.getElementsByTagName('script')[0];
first.parentNode.insertBefore(s, first);
// Enable any pass inputs.
$('body').on('keyup', 'input[name=password], input[name=confirm_password]',
function (event) {
var $form = $(this).closest('form');
if( ! $form.hasClass('uwp-login-form') ) {
uwp_checkPasswordStrength(
$('input[name=password]', $form), // First password field
$('input[name=confirm_password]', $form), // Second password field
$('#uwp-password-strength', $form), // Strength meter
$('input[type=submit]', $form), // Submit button
['black', 'listed', 'word'] // Blacklisted words
);
}
}
);
});
</script>
<?php
}
$form = ob_get_clean();
// bs5
if ( function_exists( 'aui_bs_convert_sd_output' ) ) {
$form = aui_bs_convert_sd_output( $form );
}
// send ajax response
wp_send_json_success( $form );
}
/**
* Get the ajax forgot password form.
*
* @since 1.2.0
*/
public function ajax_forgot_password_form() {
// add the modal error container
add_action( 'uwp_template_display_notices', array( $this, 'modal_error_container' ) );
// get the form
ob_start();
uwp_get_template( 'bootstrap/forgot.php' );
$form = ob_get_clean();
// bs5
if ( function_exists( 'aui_bs_convert_sd_output' ) ) {
$form = aui_bs_convert_sd_output( $form );
}
// send ajax response
wp_send_json_success( $form );
}
/**
* Output the modal error container.
*
* @param string $type
*
* @since 1.2.0
*/
public function modal_error_container( $type = '' ) {
echo '<div class="form-group mb-3"><div class="modal-error"></div></div>';
}
public function form_custom_html( $html, $field, $value, $form_type ) {
$html = ! empty( $field->default_value ) ? $field->default_value : ' ';
return $html;
}
}