File: /mnt/data/doccure-wp/wp-content/plugins/doccure/hooks/hook-test.php
<form class="dc-formtheme dc-formregister" enctype="multipart/form-data" >
<div class="tab-content dc-registertabcontent">
<div class="dc-registerformmain">
<?php if( !empty( $step_image ) ){?>
<figure class="dc-joinformsimg">
<img src="<?php echo esc_url( $step_image ); ?>" alt="<?php esc_attr('Registration', 'doccure_core'); ?>">
</figure>
<?php }?>
<?php if( !empty( $step_title ) || !empty( $step_desc ) ) { ?>
<div class="dc-registerhead">
<?php if( !empty( $step_title ) ) { ?>
<div class="dc-title">
<h3><?php echo esc_html( $step_title ); ?></h3>
</div>
<?php } ?>
<?php if( !empty( $step_desc ) ) { ?>
<div class="description">
<?php echo do_shortcode( $step_desc ); ?>
</div>
<?php } ?>
</div>
<?php } ?>
<fieldset class="dc-formregisterstart">
<!-- <div class="dc-title dc-formtitle"><h4><?php esc_html_e('Start as :', 'doccure_core' ); ?></h4></div> -->
<?php if( !empty( $user_types ) ){ ?>
<ul class="dc-startoption">
<?php
foreach( $user_types as $key => $val) {
$checked = !empty( $key ) && $key === 'doctors' ? 'checked=""' : '';
$display = !empty( $key ) && $key === 'seller' ? esc_html__('Store name','doccure_core') : esc_html__('Display name','doccure_core');
if( !empty($reg_option) && in_array($key,$reg_option)){?>
<li>
<span class="dc-radio" data-display="<?php echo esc_attr($display);?>">
<input id="dc-<?php echo esc_attr($key);?>" type="radio" name="user_type" value="<?php echo esc_attr($key);?>" <?php echo esc_attr($checked);?>>
<label for="dc-<?php echo esc_attr($key);?>"><?php echo esc_html($val);?></label>
</span>
</li>
<?php } ?>
<?php } ?>
</ul>
<?php } ?>
</fieldset>
<div class="dc-joinforms">
<fieldset class="dc-registerformgroup">
<div class="form-group form-group-half">
<input type="text" name="first_name" class="form-control" value="" placeholder="<?php esc_attr_e('First Name', 'doccure_core'); ?>">
</div>
<div class="form-group form-group-half">
<input type="text" name="last_name" value="" class="form-control" placeholder="<?php esc_attr_e('Last Name', 'doccure_core'); ?>">
</div>
<div class="form-group form-group-half">
<input type="text" name="username" class="form-control" value="" placeholder="<?php esc_attr_e('username', 'doccure_core'); ?>">
</div>
<div class="form-group form-group-half">
<input type="text" name="registration_number" class="form-control" value="" placeholder="<?php esc_attr_e('Registration Number', 'doccure_core'); ?>">
</div>
<div class="form-group form-group-half">
<input type="file" name="document" class="form-control" value="" placeholder="<?php esc_attr_e('Upload Document', 'doccure_core'); ?>">
</div>
<div class="input-block">
<label for="email" class="form-label"><?php echo esc_html__('Email ', 'doccure_core'); ?><span class="text-danger"><?php echo esc_html__('*', 'doccure_core'); ?></span></label>
<div class="input-group">
<input type="hidden" name="email" id="email_hidden" value="">
<?php
$otp_switch = $doccure_options['otp_switch'];
?>
<input
type="email"
name="<?php echo esc_attr($otp_switch == '1') ? 'email_otp' : 'email'; ?>"
class="form-control"
id="email"
placeholder="<?php esc_attr_e('Email', 'doccure_core'); ?>"
>
<?php if ($otp_switch == '1') { ?>
<button type="button" id="send_otp" class="btn btn-primary">
<?php esc_html_e('Send OTP', 'doccure_core'); ?>
</button>
<?php } ?>
</div>
</div>
<div class="input-block" id="otp_block" style="display: none;">
<label for="otp" class="form-label"><?php echo esc_html__('Enter OTP', 'doccure_core'); ?><span class="text-danger"><?php echo esc_html__('*', 'doccure_core'); ?></span></label>
<div class="input-group">
<input type="text" name="otp" class="form-control" id="otp" maxlength="6">
<button type="button" id="verify_otp" class="btn btn-primary"><?php esc_html_e('Verify', 'doccure_core' ); ?></button>
</div>
</div>
</fieldset>
<fieldset class="dc-registerformgroup">
<?php if(!empty($remove_location) && $remove_location == 'no'){?>
<div class="form-group">
<span class="dc-select">
<?php do_action('doccure_get_locations_list','location',''); ?>
</span>
</div>
<?php }?>
<div class="form-group form-group-half">
<input type="password" name="password" class="form-control" placeholder="<?php esc_attr_e('Password*', 'doccure_core' ); ?>">
</div>
<div class="form-group form-group-half">
<input type="password" name="verify_password" class="form-control" placeholder="<?php esc_attr_e('Retype Password*', 'doccure_core' ); ?>">
</div>
</fieldset>
<fieldset class="dc-termsconditions">
<div class="dc-checkboxholder">
<div class="form-group form-group-half wt-display-type">
<input type="text" name="display_name" class="form-control" value="" placeholder="<?php esc_attr_e('Display Name', 'doccure_core'); ?>">
</div>
<span>
<input id="termsconditions" type="checkbox" name="termsconditions" value="checked">
<label for="termsconditions">
<span>
<?php echo esc_html( $term_text ); ?>
<?php if( !empty( $terms_link ) ) { ?>
<a target="_blank" href="<?php echo esc_url( $terms_link ); ?>">
<?php esc_html_e('Terms & Conditions', 'doccure_core'); ?>
</a>
<?php } ?>
</span>
</label>
</span>
<div class="form-group">
<button id="signup_button" class="dc-btn rg-step-start" type="submit"><?php esc_html_e('Signup', 'doccure_core'); ?></button>
</div>
</div>
</fieldset>
</div>
</div>
</div>
<?php if( !is_user_logged_in() ){ ?>
<div class="dc-registerformfooter">
<span><?php esc_html_e('Already Have an Account?', 'doccure_core' ); ?><a href="<?php echo esc_html(home_url());?>/login"> <?php esc_html_e('Login Now', 'doccure_core'); ?></a></span>
</div>
<?php } ?>
</form>
<script>
jQuery(document).on('click', '.rg-step-start', function (e) {
e.preventDefault();
var formData = new FormData(jQuery('.dc-formregister')[0]);
formData.append('action', 'doccure_process_registration');
formData.append('security', scripts_vars.ajax_nonce);
jQuery.ajax({
type: "POST",
url: scripts_vars.ajaxurl,
data: formData,
processData: false, // Prevent jQuery from processing data
contentType: false, // Prevent jQuery from setting content type
dataType: "json",
success: function (response) {
jQuery('.dc-preloader-section').remove();
if (response.type === 'success') {
jQuery.sticky(response.message, {classList: 'success', speed: 200, autoclose: 5000 });
if (response.retrun_url) {
window.location.replace(response.retrun_url);
}
} else {
jQuery.sticky(response.message, {classList: 'important', speed: 200, autoclose: 5000});
}
}
});
});
</script>
<?php
if( !function_exists( 'doccure_process_registration' ) ){
function doccure_process_registration(){
global $doccure_options;
if( function_exists('doccure_is_demo_site') ) {
doccure_is_demo_site() ;
}; //if demo site then prevent
$verify_user = !empty( $doccure_options['verify_user'] ) ? $doccure_options['verify_user'] : '';
$remove_location = !empty( $doccure_options['remove_location'] ) ? $doccure_options['remove_location'] : 'no';
//security check
if (!wp_verify_nonce($_POST['security'], 'ajax_nonce')) {
$json['type'] = 'error';
$json['message'] = esc_html__('Security check failed, this could be because of your browser cache. Please clear the cache and check it againe', 'doccure_core');
wp_send_json( $json );
}
//Validation
$validations = array(
'first_name' => esc_html__('First Name is required', 'doccure_core'),
'first_name' => esc_html__('First Name is required', 'doccure_core'),
'last_name' => esc_html__('Last Name is required.', 'doccure_core'),
'username' => esc_html__('Username field is required.', 'doccure_core'),
'location' => esc_html__('Location field is required', 'doccure_core'),
'password' => esc_html__('Password field is required', 'doccure_core'),
'verify_password' => esc_html__('Verify Password field is required.', 'doccure_core'),
'user_type' => esc_html__('User type field is required.', 'doccure_core'),
'termsconditions' => esc_html__('You should agree to terms and conditions.', 'doccure_core'),
'display_name' => esc_html__('Your name field is required.', 'doccure_core'),
);
//unset location if settings true
if(!empty($remove_location) && $remove_location == 'yes'){
unset( $validations['location'] );
}
//start validating
foreach ( $validations as $key => $value ) {
if ( empty( $_POST[$key] ) ) {
$json['type'] = 'error';
$json['message'] = $value;
wp_send_json( $json );
}
//Validate email address
if ( $key === 'email' ) {
if ( !is_email( $_POST['email'] ) ) {
$json['type'] = 'error';
$json['message'] = esc_html__('Please add a valid email address.', 'doccure_core');
wp_send_json( $json );
}
}
if ($key === 'password') {
if ( strlen( $_POST[$key] ) < 6 ) {
$json['type'] = 'error';
$json['message'] = esc_html__('Password length should be minimum 6', 'doccure_core');
wp_send_json( $json );
}
}
if ($key === 'verify_password') {
if ( $_POST['password'] != $_POST['verify_password']) {
$json['type'] = 'error';
$json['message'] = esc_html__('Password does not match.', 'doccure_core');
wp_send_json( $json );
}
}
}
extract($_POST);
$email = isset($_POST['email']) ? sanitize_email($_POST['email']) : '';
$display_name = isset($_POST['display_name']) ? sanitize_text_field($_POST['display_name']) : '';
$first_name = isset($_POST['first_name']) ? sanitize_text_field($_POST['first_name']) : '';
$last_name = isset($_POST['last_name']) ? sanitize_text_field($_POST['last_name']) : '';
$username = isset($_POST['username']) ? sanitize_text_field($_POST['username']) : '';
$location = isset($_POST['location']) ? sanitize_text_field($_POST['location']) : '';
$password = isset($_POST['password']) ? $_POST['password'] : '';
$user_type = isset($_POST['user_type']) ? sanitize_text_field($_POST['user_type']) : '';
$registration_number = isset($_POST['registration_number']) ? sanitize_text_field($_POST['registration_number']) : '';
$username_exist = username_exists( $username );
$user_exists = email_exists( $email );
// File Upload Handling
// $document_url = ''; // Default empty
// if (!empty($_FILES['document']['name'])) {
// require_once ABSPATH . 'wp-admin/includes/file.php';
// require_once ABSPATH . 'wp-admin/includes/media.php';
// require_once ABSPATH . 'wp-admin/includes/image.php';
// $uploaded_file = $_FILES['document'];
// $upload_overrides = ['test_form' => false];
// $movefile = wp_handle_upload($uploaded_file, $upload_overrides);
// }
// File Upload Handling
$document_url = ''; // Default empty
$document_id = ''; // Default empty
if (!empty($_FILES['document']['name'])) {
require_once ABSPATH . 'wp-admin/includes/file.php';
require_once ABSPATH . 'wp-admin/includes/media.php';
require_once ABSPATH . 'wp-admin/includes/image.php';
$uploaded_file = $_FILES['document'];
$upload_overrides = ['test_form' => false];
// Handle file upload
$movefile = wp_handle_upload($uploaded_file, $upload_overrides);
if ($movefile && !isset($movefile['error'])) {
$document_url = $movefile['url']; // Get file URL
// Prepare attachment data
$file_path = $movefile['file']; // Full path of the uploaded file
$file_name = basename($file_path);
$file_type = wp_check_filetype($file_name, null);
$attachment = [
'guid' => $document_url,
'post_mime_type' => $file_type['type'],
'post_title' => preg_replace('/\.[^.]+$/', '', $file_name),
'post_content' => '',
'post_status' => 'inherit'
];
// Insert the attachment into the media library
$document_id = wp_insert_attachment($attachment, $file_path);
// Generate attachment metadata and update
require_once ABSPATH . 'wp-admin/includes/image.php';
$attach_data = wp_generate_attachment_metadata($document_id, $file_path);
wp_update_attachment_metadata($document_id, $attach_data);
}
}
// Now you have both $document_url and $document_id
if(!is_email($email)){
$json['type'] = 'error';
$json['message'] = esc_html__('Please add valid email address', 'doccure_core');
wp_send_json( $json );
}
if( $username_exist ){
$json['type'] = 'error';
$json['message'] = esc_html__('Username already registered', 'doccure_core');
wp_send_json( $json );
}
//check exists
if( $user_exists ){
$json['type'] = 'error';
$json['message'] = esc_html__('This email already registered', 'doccure_core');
wp_send_json( $json );
}
//Get user data from session
//Session data validation
if( empty( $username )
|| empty( $first_name )
|| empty( $last_name )
|| empty( $email )
|| empty( $display_name )
) {
$json['type'] = 'error';
$json['message'] = esc_html__( 'Please add all the required fields', 'doccure_core' );
wp_send_json( $json );
}
$post_type = $user_type;
$random_password = $password;
$user_nicename = sanitize_title( $display_name );
$userdata = array(
'user_login' => $username,
'user_pass' => $random_password,
'user_email' => $email,
'user_nicename' => $user_nicename,
'display_name' => $display_name
);
$user_identity = wp_insert_user( $userdata );
if ( is_wp_error( $user_identity ) ) {
$json['type'] = "error";
$json['message'] = esc_html__("Some error occurs, please try again later", 'doccure_core');
wp_send_json($json);
} else {
global $wpdb;
wp_update_user( array('ID' => esc_sql( $user_identity ), 'role' => esc_sql( $user_type ), 'user_status' => 1 ) );
$wpdb->update(
$wpdb->prefix . 'users', array('user_status' => 1), array('ID' => esc_sql($user_identity))
);
update_user_meta( $user_identity, 'first_name', $first_name );
update_user_meta( $user_identity, 'last_name', $last_name );
update_user_meta( $user_identity, '_is_verified', 'no' );
update_user_meta($user_identity, 'show_admin_bar_front', false);
update_user_meta($user_identity, '_registration_number', $registration_number);
if ($movefile && !isset($movefile['error'])) {
$document_url = esc_url($movefile['url']);
update_user_meta($user_identity, '_documents', $document_url);
}
//verification link
$key_hash = md5(uniqid(openssl_random_pseudo_bytes(32)));
update_user_meta( $user_identity, 'confirmation_key', $key_hash);
$protocol = is_ssl() ? 'https' : 'http';
$verify_link = esc_url(add_query_arg(array('key' => $key_hash.'&verifyemail='.$email), home_url('/', $protocol)));
if( !empty($user_type) && $user_type === 'seller'){
$vendor_details = array();
$vendor_details['store_name'] = $display_name;
update_user_meta( $user_identity, 'dokan_profile_settings', $vendor_details );
$blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES);
$emailData = array();
$emailData['name'] = $display_name;
$emailData['password'] = $random_password;
$emailData['email'] = $email;
$emailData['username'] = $username;
$emailData['site'] = $blogname;
$emailData['verification_link'] = $verify_link;
if (class_exists('doccureRegisterNotify')) {
$email_helper = new doccureRegisterNotify();
$email_helper->send_seller_user_email($emailData);
}
}else{
//Create Post
$user_post = array(
'post_title' => wp_strip_all_tags( $display_name ),
'post_status' => 'publish',
'post_author' => $user_identity,
'post_type' => $post_type,
);
$post_id = wp_insert_post( $user_post );
if( !is_wp_error( $post_id ) ) {
$profile_data = array();
$profile_data['am_first_name'] = $first_name;
$profile_data['am_last_name'] = $last_name;
$profile_data['am_last_name'] = $last_name;
$profile_data['am_registration_number'] = $registration_number;
// $profile_data['am_document'] = $document_url;
$profile_data['am_document'] = array(
'url' => $document_url,
'id' => $document_id // Assuming you have a document ID
);
update_post_meta($post_id, 'am_' . $post_type . '_data', $profile_data);
//Update user linked profile
update_user_meta( $user_identity, '_linked_profile', $post_id );
update_post_meta( $post_id, '_is_verified', 'no' );
update_post_meta($post_id, '_linked_profile', $user_identity);
update_post_meta( $post_id, 'is_featured', 0 );
if( !empty( $location ) ){
$locations = get_term_by( 'slug', $location, 'locations' );
$location_data = array();
if( !empty( $locations ) ){
$location_data[0] = $locations->term_id;
wp_set_post_terms( $post_id, $locations->term_id, 'locations' );
}
}
//update privacy settings
$settings = doccure_get_account_settings($user_type);
if( !empty( $settings ) ){
foreach( $settings as $key => $value ){
$val = !empty($key) && $key === '_profile_blocked' ? 'off' : 'on';
update_post_meta($post_id, $key, $val);
}
}
$user_type = doccure_get_user_type( $user_identity );
if( !empty( $user_type ) && $user_type === 'doctors' ) {
if( function_exists('doccure_get_package_type') ){
$trail_doctors_id = doccure_get_package_type( 'package_type','trail_doctors');
if( !empty( $trail_doctors_id ) ){
doccure_update_package_data( $trail_doctors_id ,$user_identity,'',1 );
}
}
}
if( function_exists('doccure_full_name') ) {
$name = doccure_full_name($post_id);
} else {
$name = $first_name;
}
//Send email to users
if (class_exists('doccure_Email_helper')) {
$blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES);
$emailData = array();
$emailData['name'] = $name;
$emailData['password'] = $random_password;
$emailData['email'] = $email;
$emailData['username'] = $username;
$emailData['site'] = $blogname;
$emailData['verification_link'] = $verify_link;
//Send code
if (class_exists('doccureRegisterNotify')) {
$email_helper = new doccureRegisterNotify();
if( !empty($user_type) && $user_type === 'doctors' ){
$email_helper->send_doctor_email($emailData);
} else if( !empty($user_type) && $user_type === 'hospitals' ){
$email_helper->send_hospital_email($emailData);
}else if( !empty($user_type) && $user_type === 'regular_users' ){
$email_helper->send_regular_user_email($emailData);
update_post_meta( $post_id, '_is_verified', 'yes' );
update_user_meta( $user_identity, '_is_verified', 'yes' );
}
}
}
} else {
$json['type'] = 'error';
$json['message'] = esc_html__('Some error occurs, please try again later', 'doccure_core');
wp_send_json($json);
}
}
//Send admin email
if (class_exists('doccureRegisterNotify')) {
$email_helper = new doccureRegisterNotify();
$email_helper->send_admin_email($emailData);
}
//verification
if( empty( $verify_user ) || $verify_user == 'remove'){
update_post_meta( $post_id, '_is_verified', 'yes' );
update_user_meta( $user_identity, '_is_verified', 'yes' );
if( !empty($user_type) && $user_type == 'seller' ){
update_user_meta( $user_identity, 'dokan_enable_selling', 'yes' );
}
}
}
//User Login
$user_array = array();
$user_array['user_login'] = $email;
$user_array['user_password'] = $random_password;
wp_signon($user_array, false);
if( empty( $verify_user ) || $verify_user === 'yes'){
$json_message = esc_html__("Your account has been created. Please check your email for the verification", 'doccure_core');
} else if( empty( $verify_user ) || $verify_user === 'remove'){
$json_message = esc_html__("Thank you so much for the registration.", 'doccure_core');
}else if( !empty($user_type) && $user_type === 'regular_users' ){
$json_message = esc_html__("Your account has been created.", 'doccure_core');
} else {
$json_message = esc_html__("Your account has been created. After the verification your will be do anything on the site", 'doccure_core');
}
if( !empty($user_type) && $user_type == 'seller' ){
if(apply_filters('doccure_dokan_active',false) === true){
$my_dashboard_id = dokan_get_option( 'dashboard', 'dokan_pages' );
$return_page = get_the_permalink($my_dashboard_id);
}
}else{
$return_page = doccure_get_search_page_uri('dashboard');
if( function_exists('doccure_redirect_after_login_page') ){
$return_page = doccure_redirect_after_login_page($user_identity);
}
}
$json['type'] = 'success';
$json['message'] = $json_message;
$json['retrun_url'] = htmlspecialchars_decode($return_page);
wp_send_json($json);
}
add_action('wp_ajax_doccure_process_registration', 'doccure_process_registration');
add_action('wp_ajax_nopriv_doccure_process_registration', 'doccure_process_registration');
}
?>