HEX
Server: nginx/1.24.0
System: Linux DGT-WORDPRESS-VM-SERVER 6.14.0-1017-azure #17~24.04.1-Ubuntu SMP Mon Dec 1 20:10:50 UTC 2025 x86_64
User: ubuntu (1000)
PHP: 8.4.12
Disabled: NONE
Upload Files
File: /mnt/data/doccure-wp-demo/wp-content/plugins/doccure/includes/doccure_cron.php
<?php
 
// if( !function_exists('doccure_cron_activation') ) {
// 	register_activation_hook (__FILE__, 'doccure_cron_activation');
// 	add_action('wp', 'doccure_cron_activation');
// 	function doccure_cron_activation() {
		
// 		if( !wp_next_scheduled( 'doccure_payout_listing' ) ) { 
// 			global $theme_settings;
// 			$interval		= !empty( $theme_settings['cron_interval'] )  ? $theme_settings['cron_interval'] : 'daily';
			
// 			if( !empty ( $interval ) ) {
// 				wp_schedule_event( time(), $interval, 'doccure_payout_listing' );  
// 			}
// 		}
		
// 		if( ! wp_next_scheduled( 'doccure_update_featured_expiry_listing' ) ) { 
			
// 			wp_schedule_event( time(), 'hourly' , 'doccure_update_featured_expiry_listing');
// 		}

// 	}
// 	add_action('wp', 'doccure_cron_activation');
// }

/**
 * Update expiry
 *
 * @throws error
 * @return 
 */
if( !function_exists('doccure_update_featured_expiry_listing') ) {
	function doccure_update_featured_expiry_listing() {
		$query_args = array(
			'posts_per_page' 	  => -1,
			'post_type' 	 	  => array( 'doctors' ),
			'post_status' 	 	  => array( 'publish' ),
			'ignore_sticky_posts' => 1,
			'meta_query' 			=> array(
											array(
												'key'   => 'is_featured',
												'value' => 1,
											)
										)
		);
		
		$all_posts 		= get_posts( $query_args );

		foreach( $all_posts as $key => $item ){
			$post_type		= get_post_type($item->ID);
			$current_time   = strtotime( current_time( 'mysql' ) );
			
			$get_expiry	= get_post_meta($item->ID,'_featured_date',true);
			$get_expiry	= !empty($get_expiry) ? strtotime($get_expiry) : 0;
			
			if( empty( $get_expiry ) || $get_expiry < $current_time  ){
				update_post_meta( $item->ID, 'is_featured', 0 );
			}
		}
		
	}
	add_action( 'doccure_update_featured_expiry_listing', 'doccure_update_featured_expiry_listing' );
}

/**
 * Cron schedule weekly and monthly
 *
 * @throws error
 * @return 
 */
if( !function_exists('doccure_cron_schedule') ) {
	function doccure_cron_schedule( $schedules = array() ) {
		$schedules['weekly'] = array(
			'interval' => 604800,
			'display' => esc_html__('Once a weekly','doccure_core')
		);
		
		$schedules['monthly'] = array(
			'interval' => 2635200,
			'display' => esc_html__('Once a month','doccure_core')
		);
		
		$schedules['half_month'] = array(
			'interval' => 1296000,
			'display' => esc_html__('Twice a month','doccure_core')
		);
		
		$schedules['daily'] = array(
			'interval' => 86400,
			'display' => esc_html__('Once a day','doccure_core')
		);
		
		$schedules['mints5daily'] = array(
			'interval' => 300,
			'display' => esc_html__('Every 5 mints','doccure_core')
		);
		
		return $schedules; 
	}
	add_filter( 'cron_schedules', 'doccure_cron_schedule' );
}

/**
 * Payouts
 *
 * @throws error
 * @return 
 */
if( !function_exists('doccure_payouts_function') ) {
	function doccure_payouts_function() {
		global $wpdb, $theme_settings;
		//$min_amount		= !empty( $theme_settings['min_amount'] )  ? $theme_settings['min_amount'] : 0;
		$min_amount = doccure_get_option('cron_interval', '0');

		$table_name 	= $wpdb->prefix . "dc_earnings";
		$payouts_table 	= $wpdb->prefix . "dc_payouts_history";
		$insert_payouts	= array();

		$current_date 						= current_time('mysql');
		$gmt_time							= current_time( 'mysql', 1 );
		$insert_payouts['processed_date'] 	= $current_date;
		$insert_payouts['date_gmt'] 		= $gmt_time;
		$insert_payouts['year'] 			= date('Y', strtotime($current_date));
		$insert_payouts['month'] 			= date('m', strtotime($current_date));
		$insert_payouts['timestamp'] 		= strtotime($current_date);
		$insert_payouts['status']			= 'inprogress';
		
		if( function_exists('doccure_get_current_currency') ) {
			$currency			= doccure_get_current_currency();
		} else {
			$currency['symbol']	= '$';
		}
		
		$insert_payouts['currency_symbol']	= $currency['symbol'];
		if (function_exists('doccure_sum_earning_doctor_payouts')) {
			$payouts	= doccure_sum_earning_doctor_payouts('completed','doctor_amount');

			if( !empty( $payouts ) && count( $payouts ) > 0 ) {
				foreach( $payouts as $payout ) {
					$doctor_amount	= intval($payout->total_amount);
					if( $doctor_amount > $min_amount ) {
						$contents	= get_user_meta($payout->user_id,'payrols',true);
						$payrol		= !empty($contents['type']) ? $contents['type'] : "";
						if( !empty( $payrol ) ){
							if( $payrol === 'paypal' ){
								$email								= !empty($contents['paypal_email']) ? $contents['paypal_email'] : "";
								$insert_payouts['paypal_email']		= $email;

								//check if email is valid
								if( empty( $email ) || !is_email( $email ) ){
									continue;
								}

							} else if( $payrol === 'bacs' ){
								$bank_details	= array();
								$bank_details['bank_account_name']		= !empty($contents['bank_account_name']) ? $contents['bank_account_name'] : "";
								$bank_details['bank_account_number']	= !empty($contents['bank_account_number']) ? $contents['bank_account_number'] : "";
								$bank_details['bank_name']				= !empty($contents['bank_name']) ? $contents['bank_name'] : "";
								$bank_details['bank_routing_number']	= !empty($contents['bank_routing_number']) ? $contents['bank_routing_number'] : "";
								$bank_details['bank_iban']				= !empty($contents['bank_iban']) ? $contents['bank_iban'] : "";
								$bank_details['bank_bic_swift']			= !empty($contents['bank_bic_swift']) ? $contents['bank_bic_swift'] : "";
								$insert_payouts['payment_details']		= serialize( $bank_details );

								if( empty( $contents['bank_account_name'] ) || empty( $contents['bank_account_number'] ) || empty( $contents['bank_name'] ) ){
									continue;
								}
							} else{
								$payout_details	= array();
								$fields	= doccure_get_payouts_lists($payrol);
								if( !empty($fields[$payrol]['fields'])) {
									foreach( $fields[$payrol]['fields'] as $key => $field ){
										if(!empty($field['show_this']) && $field['show_this'] == true){
											$payout_details[$key]		= !empty($contents[$key]) ? $contents[$key] : "";
										}
									}
								}
								
								$insert_payouts['payment_details']		= serialize( $payout_details );
							}

							$insert_payouts['user_id']			= intval($payout->user_id);
							$insert_payouts['amount']			= $payout->total_amount;
							$insert_payouts['payment_method']	= $payrol;

							if( function_exists('doccure_update_earning') ) {
								$wpdb->insert($payouts_table,$insert_payouts);
								$where		= array( 
												'user_id' => intval($payout->user_id) ,
												'status'  => 'completed'
											);

								$update		= array('status' => 'processed');
								doccure_update_earning( $where, $update, 'dc_earnings');
							}
						}
					}
				}
			}
		}
	}
	
	add_action ('doccure_payout_listing', 'doccure_payouts_function');
}

/**
 * Deactive plugin
 *
 * @throws error
 * @author Amentotech <[email protected]>
 * @return 
 */


if( !function_exists('doccure_cron_deactivate') ) {
	function doccure_cron_deactivate() {	
		$timestamp = wp_next_scheduled ('doccure_payout_listing');
		wp_unschedule_event ($timestamp, 'doccure_payout_listing');
	} 
	register_deactivation_hook (__FILE__, 'doccure_cron_deactivate');
}

 



if (!function_exists('doccure_register_menu_page')) {

	function doccure_register_menu_page() {
		add_submenu_page('edit.php?post_type=doctors', 
			__('Payout Cron', 'doccure_core'), // Page title
			__('Payout Cron', 'doccure_core'), // Menu title
			'manage_options',                   // Capability
			'doccure-payout',                   // Menu slug
			'doccure_payout_page',              // Callback function
			 11                                   // Position
		);
	}
	add_action('admin_menu', 'doccure_register_menu_page');
	}
	
	
	
	// Callback function for the menu page
	function doccure_payout_page() {
		?>
		<div class="wrap">
			<h1><?php _e('Doccure Payout', 'doccure_core'); ?></h1>
			<button id="doccure-deactivate-cron" class="button button-primary" style="margin-top: 50px;"><?php _e('Run Cron', 'doccure_core'); ?></button>
			<?php
			
			
			global $wpdb, $theme_settings;
                 $timestamp = wp_next_scheduled ('doccure_payout_listing');
				   $interval = doccure_get_option('cron_interval', 'daily');
			  //$interval = !empty($theme_settings['cron_interval']) ? $theme_settings['cron_interval'] : 'daily';
 			
  
 			?>
		</div>
		<script type="text/javascript">
		jQuery(document).ready(function($) {
			$('#doccure-deactivate-cron').on('click', function() {
				$.ajax({
					type: 'POST',
					url: '<?php echo admin_url('admin-ajax.php'); ?>',
					data: {
						action: 'doccure_cron_activation_new'
					},
					success: function(response) {
						alert(response.message);
					},
					error: function() {
						alert('An error occurred');
					}
				});
			});
		});
		</script>
		<?php
	}

	
 

// Function to deactivate cron
// if( !function_exists('doccure_cron_deactivate') ) {
//     function doccure_cron_deactivate() {
//         $timestamp = wp_next_scheduled('doccure_payout_listing');
//         if ($timestamp) {
//             wp_unschedule_event($timestamp, 'doccure_payout_listing');
//             $response = array('message' => __('Cron activated  successfully', 'doccure_core'));
//         } else {
//             $response = array('message' => __('No scheduled cron found', 'doccure_core'));
//         }
//         wp_send_json($response);
//     }
//     add_action('wp_ajax_doccure_cron_deactivate', 'doccure_cron_deactivate');
// }


	
function doccure_cron_activation_new() {
    if ( ! current_user_can('manage_options') ) {
        wp_send_json_error(array('message' => __('Unauthorized access', 'doccure_core')));
        return;
    }

    global $theme_settings;
   // $interval = !empty($theme_settings['cron_interval']) ? $theme_settings['cron_interval'] : 'daily';
	$interval = doccure_get_option('cron_interval', 'daily');
    if (!wp_next_scheduled('doccure_payout_listing')) {
        if (!empty($interval)) {
			 
            wp_schedule_event(time(), $interval, 'doccure_payout_listing');
            $response = array('message' => __('Cron activated successfully', 'doccure_core'));
        } else {
            $response = array('message' => __('No scheduled cron found', 'doccure_core'));
        }
    }  else {

		//$timestamp = wp_next_scheduled ('doccure_payout_listing');
		//wp_unschedule_event ($timestamp, 'doccure_payout_listing');
		
        $response = array('message' => __('Cron is already scheduled', 'doccure_core'));
    }

    if (!wp_next_scheduled('doccure_update_featured_expiry_listing')) {
        wp_schedule_event(time(), 'hourly', 'doccure_update_featured_expiry_listing');
    }

    wp_send_json($response);
}

add_action('wp_ajax_doccure_cron_activation_new', 'doccure_cron_activation_new');