HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux acmehomecare 5.15.0-151-generic #161-Ubuntu SMP Tue Jul 22 14:25:40 UTC 2025 x86_64
User: www-data (33)
PHP: 8.0.30
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/html/wp-content/plugins/exertio-framework/inc/payouts.php
<?php
/*PAYMENT METHOD SAVE*/
add_action( 'wp_ajax_exertio_save_payment_method', 'exertio_save_payment_method' );
if ( ! function_exists( 'exertio_save_payment_method' ) ) 
{
	function exertio_save_payment_method()
	{

		/*DEMO DISABLED*/
		exertio_demo_disable('json');
		
		check_ajax_referer( 'fl_gen_secure', 'security' );
		$current_user_id = get_current_user_id();
		$payment_method = $_POST['payment_method'];
		$default_payout = $_POST['default_payout'];
		parse_str($_POST['payment_method_data'], $params);
		
		update_user_meta( $current_user_id, '_default_payout_method', $default_payout );
		if($payment_method == 'paypal')
		{
			$payment_data[] = array(
						"payment_method" => sanitize_text_field($payment_method),
						"paypal_email" => sanitize_text_field($params['paypal_email']),
					);
				$encoded_payment_data =  wp_json_encode($payment_data, JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES);
				update_user_meta( $current_user_id, '_paypal_details', $encoded_payment_data );
				
				$return = array('message' => esc_html__( 'Payout detail updated', 'exertio_framework' ));
				wp_send_json_success($return);
		}
		else if($payment_method == 'payoneer')
		{
			$payment_data[] = array(
						"payment_method" => sanitize_text_field($payment_method),
						"payoneer_acc_name" => sanitize_text_field($params['payoneer_acc_name']),
						"payoneer_email" => sanitize_text_field($params['payoneer_email']),
						"payoneer_acc_country" => sanitize_text_field($params['payoneer_country']),
					);
					
				$encoded_payment_data =  wp_json_encode($payment_data, JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES);
				update_user_meta( $current_user_id, '_payoneer_details', $encoded_payment_data );
				
				$return = array('message' => esc_html__( 'Payout detail updated', 'exertio_framework' ));
				wp_send_json_success($return);
		}
		else if($payment_method == 'bank')
		{
			$payment_data[] = array(
						"payment_method" => sanitize_text_field($payment_method),
						"bank_name" => sanitize_text_field($params['bank_name']),
						"bank_acc_number" => sanitize_text_field($params['bank_account_number']),
						"bank_acc_name" => sanitize_text_field($params['bank_account_name']),
						"bank_routing_no" => sanitize_text_field($params['bank_routing_number']),
						"bank_iban" => sanitize_text_field($params['bank_iban_number']),
						"bank_swift" => sanitize_text_field($params['bank_swift_code']),
					);
				$encoded_payment_data =  wp_json_encode($payment_data, JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES);
				update_user_meta( $current_user_id, '_bank_account_details', $encoded_payment_data );
				
				$return = array('message' => esc_html__( 'Payout detail updated', 'exertio_framework' ));
				wp_send_json_success($return);
		}
		else
		{
			$return = array('message' => esc_html__( 'Payment method detail error', 'exertio_framework' ));
			wp_send_json_error($return);	
		}
	}
}




add_action( 'exertio_payouts_cron', 'exertio_create_payouts' );

if ( ! function_exists( 'exertio_create_payouts' ) ) 
{
	function exertio_create_payouts()
	{	$manual_payout = '';
		$manual_payout = fl_framework_get_options('manual_payout_switch');

		if(isset($manual_payout) && $manual_payout == 0)
		{
			$users = get_users( array( 'fields' => array( 'ID' ) ) );
			foreach($users as $user)
			{
				$today = date("F j, Y");
				$user_id = $user->ID;
				$processing_fee_value = fl_framework_get_options('payout_processing_fee');
				//$processing_fee = (isset($processing_fee_value) && $processing_fee_value != '')? $processing_fee_value: 0;
				$processing_fee = (isset($processing_fee_value) && $processing_fee_value != '')? (int)($processing_fee_value): 0;
				$ex_wallet_amount = get_user_meta($user_id,'_fl_wallet_amount', true);
				$wallet_amount = (int)$ex_wallet_amount - $processing_fee;
				//$wallet_amount = get_user_meta($user_id,'_fl_wallet_amount', true);
				$payout_method = get_user_meta($user_id,'_default_payout_method', true);

				/*CHECK IF USER HAS ENABLED PAYOUT OR NOT*/
				$settings = get_user_meta( $user_id, '_freelancer_settings', true );
				$decoded_settings =  json_decode(stripslashes($settings), true);
				if(is_array($decoded_settings) && !empty($decoded_settings))
				{
					if(array_key_exists("_enable_payout", $decoded_settings[0]) && $decoded_settings[0]['_enable_payout'] == 1)
					{
						if(isset($wallet_amount) && $wallet_amount > fl_framework_get_options('payout_min_limit'))
						{
							$my_post = array(
								'post_title' => 'Wallet payout '.$today,
								'post_type' => 'payouts',
								'post_author' => $user_id,
								'post_status'   => 'pending',
							);
							$post_id = wp_insert_post($my_post);


							if ($post_id)
							{
								update_post_meta ( $post_id, '_payout_status', 'pending' );
								update_post_meta ( $post_id, '_payout_amount', $wallet_amount );
								update_post_meta ( $post_id, '_payout_method', $payout_method );
								update_user_meta($user_id,'_fl_wallet_amount','');
								/*EMAIL ON PAYOUT CREATED*/
								if(fl_framework_get_options('fl_email_payout_create') == true)
								{
									if (function_exists('fl_payout_create_email'))
									{
										fl_payout_create_email($user_id,$wallet_amount);
									}
								}
								if(fl_framework_get_options('fl_email_payout_create_admin') == true)
								{
									if (function_exists('fl_payout_create_email_admin'))
									{
										fl_payout_create_email_admin($user_id, $wallet_amount);
									}
								}
							}
						}
					}
				}
			}
		}
	}
}

add_action( 'wp_ajax_fl_create_payout_manually', 'fl_create_payout_manually' );
if ( ! function_exists( 'fl_create_payout_manually' ) ) 
{
	function fl_create_payout_manually()
	{	
		/*DEMO DISABLED*/
		exertio_demo_disable('json');
		
		check_ajax_referer( 'fl_gen_secure', 'security' );
		parse_str($_POST['manual_payout_data'], $params);
		$current_payout_amount = $params['payout_amount'];
		$min_payout_amount = fl_framework_get_options('payout_min_limit');
		$processing_fee = fl_framework_get_options('payout_processing_fee');
		
		$user_id = get_current_user_id();
			$today = date("F j, Y");
			$ex_wallet_amount = get_user_meta($user_id,'_fl_wallet_amount', true);
			$wallet_amount = $ex_wallet_amount - $processing_fee;
		
		
			$payout_method = get_user_meta($user_id,'_default_payout_method', true);
		if(!is_numeric($current_payout_amount))
		{
			$return = array('message' => esc_html__( 'Please provide numeric value', 'exertio_framework' ));
			wp_send_json_error($return);
		}
		if(isset($payout_method) && $payout_method != '')
		{
			if($current_payout_amount > $wallet_amount)
			{
				$return = array('message' => esc_html__( 'You have ', 'exertio_framework' ).fl_price_separator($wallet_amount).esc_html__( ' to payout', 'exertio_framework' ));
				wp_send_json_error($return);
			}
			
			if($current_payout_amount < $min_payout_amount)
			{
				$return = array('message' => esc_html__( 'Minimum Payout amount is ', 'exertio_framework' ).fl_price_separator($min_payout_amount));
				wp_send_json_error($return);
			}
			else
			{
				$my_post = array(
					'post_title' => 'Wallet payout '.$today,
					'post_type' => 'payouts',
					'post_author' => $user_id,
					'post_status'   => 'pending',
				);
				$post_id = wp_insert_post($my_post);
				if (is_wp_error($post_id))
				{
					$return = array('message' => esc_html__( 'Error while creating payout. Please contact Admin', 'exertio_framework' ));
					wp_send_json_error($return);
				}
				else 
				{
					$updated_wallet_amount = $wallet_amount - $current_payout_amount;

					update_post_meta ($post_id,'_payout_processing_fee',$processing_fee);
					update_post_meta ( $post_id, '_payout_status', 'pending' );
					update_post_meta ( $post_id, '_payout_amount', $current_payout_amount );
					update_post_meta ( $post_id, '_payout_method', $payout_method );
					update_user_meta($user_id,'_fl_wallet_amount',$updated_wallet_amount);
				
					$total_price=$processing_fee + $current_payout_amount;



					do_action( 'exertio_transection_action',array('post_id'=> $post_id,'price'=>$total_price,'t_type'=>'payout_completed','t_status'=>'3', 'user_id'=> $user_id));


					/*EMAIL ON PAYOUT CREATED*/
					if(fl_framework_get_options('fl_email_payout_create') == true)
					{
						if (function_exists('fl_payout_create_email'))
						{
							fl_payout_create_email($user_id,$current_payout_amount);
						}
					}
					if(fl_framework_get_options('fl_email_payout_create_admin') == true)
					{
						if (function_exists('fl_payout_create_email_admin'))
						{
							fl_payout_create_email_admin($user_id, $current_payout_amount);
						}
					}

					$return = array('message' => esc_html__( 'Payout created', 'exertio_framework' ));
					wp_send_json_success($return);
					die;
				}
			}
		}
		else
		{
			$return = array('message' => esc_html__( 'Please select default payout method first.', 'exertio_framework' ));
			wp_send_json_error($return);
		}
	}
}
	
	
	
add_action( 'init', 'exertio_create_payouts_event');

// Function which will register the event
function exertio_create_payouts_event() {
	// Make sure this event hasn't been scheduled
	if( !wp_next_scheduled( 'exertio_payouts_cron' ) ) {
		// Schedule the event
		wp_schedule_event( time(), 'custon_days', 'exertio_payouts_cron' );
	}
}

add_filter( 'cron_schedules', 'exertio_add_schedule' ); 
function exertio_add_schedule( $schedules ) {
	//$payout_days = fl_framework_get_options('payout_days_after');
	$payout_days =  30;
	if ( class_exists( 'Redux' ) )
	{
		$payout_days = Redux::get_option('exertio_theme_options', 'payout_days_after');
	}
	$total_days = $payout_days* 24 * 60 * 60;
	$schedules['custon_days'] = array(
		'interval' => $total_days , //7 days * 24 hours * 60 minutes * 60 seconds
		'display' => __( 'After '.$payout_days.' days', 'exertio_framework' )
	);
	return $schedules;
}