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/woo-employer-packages.php
<?php
if( in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', get_option( 'active_plugins' ) ) ) ) 
{
	// #1 Add New Product Type to Select Dropdown
	 
	add_filter( 'product_type_selector', 'exertio_add_employer_package_product_type' );
	 
	function exertio_add_employer_package_product_type( $types ){
		$types[ 'employer-packages' ] = 'Employers Packages';
		return $types;
	}
	
	// --------------------------
	// #2 Add New Product Type Class
	 
	add_action( 'init', 'exertio_create_employer_package_product_type' );
	 
	function exertio_create_employer_package_product_type(){
		class WC_Product_Custom_Employer_Package extends WC_Product {
		  public function get_type() {
			 return 'employer-packages';
		  }
		}
	}
	 
	// --------------------------
	// #3 Load New Product Type Class
	 
	add_filter( 'woocommerce_product_class', 'exertio_woocommerce_employer_package_product_class', 10, 2 );
	 
	function exertio_woocommerce_employer_package_product_class( $classname, $product_type ) {
		if ( $product_type == 'employer-packages' ) { 
			$classname = 'WC_Product_Custom_Employer_Package';
		}
		return $classname;
	}
	add_filter('woocommerce_product_data_tabs', 'remove_woo_product_data_tab_employers', 11, 1);
	function remove_woo_product_data_tab_employers($tabs){
		
		$tabs['attribute']['class'][] = 'hide_if_employer-packages';
		$tabs['shipping']['class'][] = 'hide_if_employer-packages';
		$tabs['linked_product']['class'][] = 'hide_if_employer-packages';
		$tabs['advanced']['class'][] = 'hide_if_employer-packages';
		
		?>
		<script>
			jQuery( document ).ready( function() {
				jQuery('#general_product_data .pricing').addClass('show_if_wallet');
				jQuery('#product-type').trigger( 'change' );
			});
		</script>
		<?php
		return($tabs);
	}
	
	//add_action('admin_print_scripts', 'exertio_employer_product_type');
	
	add_action( 'load-post.php', 'employer_packages_post_meta_boxes_setup' );
	add_action( 'load-post-new.php', 'employer_packages_post_meta_boxes_setup' );
	
	
	function employer_packages_post_meta_boxes_setup() {
	
	  /* Add meta boxes on the 'add_meta_boxes' hook. */
	  add_action( 'add_meta_boxes', 'employer_packages_add_post_meta_boxes' );
	  
	  /* Save post meta on the 'save_post' hook. */
	  add_action( 'save_post', 'employer_packages_save_post_class_meta', 10, 2 );
	}
	
	/* Create one or more meta boxes to be displayed on the post editor screen. */
	function employer_packages_add_post_meta_boxes() {
	  add_meta_box(
		'employer-packages-post-class',
		esc_html__( 'Add Package Detail', 'exertio_framework' ),
		'employer_packages_post_class_meta_box',
		'product',
		'normal',
		'default' 
	  );
	}
	
	function employer_packages_post_class_meta_box( $post ) { ?>
		
	  <?php wp_nonce_field( basename( __FILE__ ), 'employer_package_class_nonce' ); 
		//print_r($post);
		$post_id =  $post->ID;
		?>
        <div class="custom-row">
            <div class="col-3"><label><?php echo __( "Number of Simple Project Allowed", 'exertio_framework' ); ?></label></div>
            <div class="col-3">
            <?php 
				$simple_projects ='';
				$simple_projects = get_post_meta($post_id, '_simple_projects', true);
			?>
            <input type="number" name="simple_projects" value="<?php echo $simple_projects; ?>" >
            <p><?php echo __( "Integer value only", "exertio_framework" ); ?></p>
            </div>
        </div>
        <div class="custom-row">
            <div class="col-3"><label><?php echo __( "Simple Project Expiry", 'exertio_framework' ); ?></label></div>
            <div class="col-3">
            <?php 
				$simple_project_expiry ='';
				$simple_project_expiry = get_post_meta($post_id, '_simple_project_expiry', true);
			?>
            <input type="number" name="simple_project_expiry" value="<?php echo $simple_project_expiry; ?>" >
            <p><?php echo __( "In days only", "exertio_framework" ); ?></p>
            </div>
        </div>

        
        <div class="custom-row">
            <div class="col-3"><label><?php echo __( "Number of Featured Projects Allowed", 'exertio_framework' ); ?></label></div>
            <div class="col-3">
            <?php 
				$featured_projects ='';
				$featured_projects = get_post_meta($post_id, '_featured_projects', true);
			?>
            <input type="number" name="featured_projects" value="<?php echo $featured_projects; ?>" >
            <p><?php echo __( "Integer value only", "exertio_framework" ); ?></p>
            </div>
        </div>
        <div class="custom-row">
            <div class="col-3"><label><?php echo __( "Featured Projects Expiry", 'exertio_framework' ); ?></label></div>
            <div class="col-3">
            <?php 
				$featured_project_expiry ='';
				$featured_project_expiry = get_post_meta($post_id, '_featured_project_expiry', true);
			?>
            <input type="number" name="featured_project_expiry" value="<?php echo $featured_project_expiry; ?>" >
            <p><?php echo __( "In days only", "exertio_framework" ); ?></p>
            </div>
        </div>
       <div class="custom-row">
            <div class="col-3"><label><?php echo __( "Project Bump up", 'exertio_framework' ); ?></label></div>
            <div class="col-3">
                <?php
                $employer_listing_bump ='';
                $employer_listing_bump = get_post_meta($post_id, '_employer_listing_bump', true);
                ?>
                <input type="number" name="employer_listing_bump" value="<?php echo $employer_listing_bump; ?>" >
                <p><?php echo __( "Integer value in Number only. Give -1 value if you want it to unlimited", "exertio_framework" ); ?></p>
            </div>
        </div>

        <div class="custom-row">
            <div class="col-3"><label><?php echo __( "Expiry date for package", 'exertio_framework' ); ?></label></div>
            <div class="col-3">
            <?php 
				$employer_package_expiry ='';
				$employer_package_expiry = get_post_meta($post_id, '_employer_package_expiry', true);
			?>
            <input type="number" name="employer_package_expiry" value="<?php echo $employer_package_expiry; ?>" >
            <p><?php echo __( "Integer value only in days only", "exertio_framework" ); ?></p>
            </div>
        </div>
        
        
        <div class="custom-row">
            <div class="col-3"><label><?php echo __( "Profile Featured", 'exertio_framework' ); ?></label></div>
            <div class="col-3">
            <?php 
				$employer_is_featured ='';
				$employer_is_featured = get_post_meta($post_id, '_employer_is_featured', true);
			?>
            	<select name="employer_is_featured">
                	<option value="" >  <?php echo __( "Select option", 'exertio_framework' ); ?></option>
                	<option value="1" <?php if($employer_is_featured == 1) { echo 'selected="selected"';}?>>  <?php echo __( "YES", 'exertio_framework' ); ?></option>
                    <option value="0" <?php if($employer_is_featured == 0) { echo 'selected="selected"';}?>>  <?php echo __( "NO", 'exertio_framework' ); ?></option>
                </select>
                <p><?php echo __( "This option will allow employers to be featured on website", 'exertio_framework' ); ?></p>
            </div>
        </div>
	
	<div class="custom-row">
            <div class="col-3"><label><?php echo __( "Mark as free package", 'exertio_framework' ); ?></label></div>
            <div class="col-3">
            <?php 
				$is_employer_pkg_free ='';
				$is_employer_pkg_free = get_post_meta($post_id, '_is_employer_pkg_free', true);
			?>
            	<select name="is_employer_pkg_free">
                	<option value="" >  <?php echo __( "Mark package free", 'exertio_framework' ); ?></option>
                	<option value="1" <?php if($is_employer_pkg_free == 1) { echo 'selected="selected"';}?>>  <?php echo __( "YES", 'exertio_framework' ); ?></option>
                    <option value="0" <?php if($is_employer_pkg_free == 0) { echo 'selected="selected"';}?>>  <?php echo __( "NO", 'exertio_framework' ); ?></option>
                </select>
                <p><?php echo __( "If you mark this package free then the user can purchase this package once. Most probably this will be assigned at the time of registration.", 'exertio_framework' ); ?></p>
            </div>
        </div>
        
        
    <?php }

	
	/* Save the meta box's post metadata. */
	function employer_packages_save_post_class_meta( $post_id, $post ) {
	
	  if ( !isset( $_POST['employer_package_class_nonce'] ) || !wp_verify_nonce( $_POST['employer_package_class_nonce'], basename( __FILE__ ) ) )
		return $post_id;
	
	  $post_type = get_post_type_object( $post->post_type );
	
	  if ( !current_user_can( $post_type->cap->edit_post, $post_id ) )
		return $post_id;
		
		if(isset($_POST['simple_projects']))
		{
			update_post_meta( $post_id, '_simple_projects', $_POST['simple_projects']);
		}
		if(isset($_POST['simple_project_expiry']))
		{
			update_post_meta( $post_id, '_simple_project_expiry', $_POST['simple_project_expiry']);
		}
		
		if(isset($_POST['featured_projects']))
		{
			update_post_meta( $post_id, '_featured_projects', $_POST['featured_projects']);
		}
		if(isset($_POST['featured_project_expiry']))
		{
			update_post_meta( $post_id, '_featured_project_expiry', $_POST['featured_project_expiry']);
		}
		if(isset($_POST['employer_listing_bump']))
		{
			update_post_meta( $post_id, '_employer_listing_bump', $_POST['employer_listing_bump']);
		}
		if(isset($_POST['employer_package_expiry']))
		{
			update_post_meta( $post_id, '_employer_package_expiry', $_POST['employer_package_expiry']);
		}
		if(isset($_POST['employer_is_featured']))
		{
			update_post_meta( $post_id, '_employer_is_featured', $_POST['employer_is_featured']);
		}
		if(isset($_POST['is_employer_pkg_free']))
		{
			update_post_meta( $post_id, '_is_employer_pkg_free', $_POST['is_employer_pkg_free']);
		}
		
		
	}

	/*HIDE METABOXES IF EMPLPYER PACKAGE PRODUCT TYPE IS NOT SELECTED*/	
	function exertio_employer_package_custom_js() {
	
		if ( 'product' != get_post_type() ) :
			return;
		endif;
	
		?><script type='text/javascript'>
			jQuery( document ).ready( function() {
				
				jQuery('#general_product_data .pricing').addClass('show_if_employer-packages');
				jQuery('#product-type').trigger( 'change' );
	
				jQuery( '#employer-packages-post-class' ).hide();
				
				jQuery('#product-type').on('change', function()
				{
					if( jQuery(this).val() == 'employer-packages' )
					{
						jQuery( '#employer-packages-post-class' ).show();
					}
					else
					{
						jQuery( '#employer-packages-post-class' ).hide();
					}
				});
				jQuery('#product-type').trigger( 'change' );
				
			});
		</script><?php
	}
	add_action( 'admin_footer', 'exertio_employer_package_custom_js' );
	
	// GET PACKAGES DETAIL
	if ( ! function_exists( 'exertio_employers_packages' ) )
	{
		function exertio_employers_packages()
		{
			$args	=	array(
			'post_type' => 'product',
			'tax_query' => array(
				array(	
				   'taxonomy' => 'product_type',
				   'field' => 'slug',
				   'terms' => 'employer-packages'
				),
			),	
			'post_status' => 'publish',
			'posts_per_page' => -1,
			'order'=> 'ASC',
			'orderby' => 'title'
			);
			$packages = new WP_Query( $args );
			return $packages;
		}
	}
	
	/*EMPLOYER PACKAGE CALLBACK*/
	add_action('wp_ajax_exertio_employer_package_callback', 'exertio_employer_package_callback');
	add_action( 'wp_ajax_nopriv_exertio_employer_package_callback', 'exertio_employer_package_callback' );
	if ( ! function_exists( 'exertio_employer_package_callback' ) )
	{ 
		function exertio_employer_package_callback()
		{
			check_ajax_referer( 'employer_package_nonce_value', 'security' );
			if( is_user_logged_in() )
			{
				$products_id = $_POST['product_id'];
				/*DEMO DISABLED*/
				exertio_demo_disable('json');
				$current_user_id = get_current_user_id();
				$employer_id = get_user_meta( $current_user_id, 'employer_id' , true );
				$is_employer_pkg_free = get_post_meta($products_id, '_is_employer_pkg_free', true);

				$purchased_free_pkg = get_post_meta($employer_id, '_purchased_free_pkg_emp', true);
				if(isset($purchased_free_pkg) && $purchased_free_pkg == 1 && $is_employer_pkg_free == 1)
				{
					$return = array('message' => esc_html__( 'You can not purchase free package twice.', 'exertio_framework' ));
					wp_send_json_error($return);
					exit();
				}
				else
				{
					if ( class_exists( 'WooCommerce' ) )
					{
							global $woocommerce;
							$qty = 1;
							if( $woocommerce->cart->add_to_cart($products_id, $qty) )
							{
								$cart_url = wc_get_cart_url();
								$return = array('message' => esc_html__( 'Redirecting to cart page', 'exertio_framework' ),'cart_page' => $cart_url);
								wp_send_json_success($return);

							}
					}
					else {
						$return = array('message' => esc_html__( 'WooCommerce plugin is not active', 'exertio_framework' ));
						wp_send_json_error($return);
						exit();
					}
				}
			}
			else
			{
				$return = array('message' => esc_html__( 'Please login first', 'exertio_framework' ));
				wp_send_json_error($return);
				exit();
			}
		}
	}

if ( ! function_exists( 'exertio_employer_order_status_completed' ) )
{
	function exertio_employer_order_status_completed( $order_id )
	{
		
		$order = new WC_Order($order_id);
		$items = $order->get_items();
		$amount = $order->get_total();
		$user = $order->get_user();
		$user_id = $order->get_user_id();
		
		$employer_id = get_user_meta( $user_id, 'employer_id' , true );
		

		foreach ( $items as $item )
		{			
			$product_id = $item['product_id'];
			$product = wc_get_product( $product_id );

			$prduct_type = $product->get_type();


			if($prduct_type == 'employer-packages') 
			{
				/*STATEMENT HOOK*/
				do_action( 'exertio_transection_action',array('post_id'=> $order_id,'price'=>$amount,'t_type'=>'employer_package','t_status'=>'2', 'user_id'=> $user_id));
				
				$simple_projects = get_post_meta($product_id, '_simple_projects', true);
				$simple_project_expiry = get_post_meta($product_id, '_simple_project_expiry', true);
				$featured_projects = get_post_meta($product_id, '_featured_projects', true);
				$featured_project_expiry = get_post_meta($product_id, '_featured_project_expiry', true);
				$employer_package_expiry = get_post_meta($product_id, '_employer_package_expiry', true);
				$employer_is_featured = get_post_meta($product_id, '_employer_is_featured', true);

				$employer_package_expiry_date = Date('y:m:d', strtotime($employer_package_expiry. ' days'));


				$ext_simple_projects = get_post_meta($employer_id, '_simple_projects', true);
				if($ext_simple_projects == -1 || $simple_projects == -1)
				{
					$simple_projects = -1;
				}
				else if(isset($ext_simple_projects) && $ext_simple_projects > 0)
				{
					$simple_projects = $ext_simple_projects + $simple_projects;
				}

				$ext_simple_project_expiry = get_post_meta($employer_id, '_simple_project_expiry', true);
				if($ext_simple_project_expiry == -1 || $simple_project_expiry == -1)
				{
					$simple_project_expiry = -1;
				}
				else if(isset($ext_simple_project_expiry) && $ext_simple_project_expiry > 0)
				{
					$simple_project_expiry = $ext_simple_project_expiry + $simple_project_expiry;
				}

				$ext_featured_projects = get_post_meta($employer_id, '_featured_projects', true);
				if($ext_featured_projects == -1 || $featured_projects == -1)
				{
					$featured_projects = -1;
				}
				else if(isset($ext_featured_projects) && $ext_featured_projects > 0)
				{
					$featured_projects = $ext_featured_projects + $featured_projects;
				}

				$ext_featured_project_expiry = get_post_meta($employer_id, '_featured_project_expiry', true);
				if($ext_featured_project_expiry == -1 || $featured_project_expiry == -1)
				{
					$featured_project_expiry = -1;
				}
				else if(isset($ext_featured_project_expiry) && $ext_featured_project_expiry > 0)
				{
					$featured_project_expiry = (int) $ext_featured_project_expiry + (int)$featured_project_expiry;
				}

				$ext_employer_package_expiry = get_post_meta($employer_id, '_employer_package_expiry', true);
				if($ext_employer_package_expiry == -1 || $employer_package_expiry == -1)
				{
					$employer_package_expiry = -1;
				}
				else if(isset($ext_employer_package_expiry) && $ext_employer_package_expiry > 0)
				{
					$employer_package_expiry = (int)$ext_employer_package_expiry + (int)$employer_package_expiry;
				}


               /*bump up project*/
               $employer_listing_bump  =  get_post_meta($product_id, '_employer_listing_bump', true);
				$ext_employer_listing_bump = get_post_meta($employer_id, '_employer_listing_bump', true);
				if($ext_employer_listing_bump == -1 || $employer_listing_bump == -1)
				{
					$employer_listing_bump = -1;
				}
				else if(isset($ext_employer_listing_bump) && $employer_listing_bump > 0)
				{
					$employer_listing_bump = (int)$ext_employer_listing_bump + (int)$employer_listing_bump;
				}






				$ext_employer_is_featured = get_post_meta($employer_id, '_employer_is_featured', true);
				if($ext_employer_is_featured == 1)
				{
					$employer_is_featured = $ext_employer_is_featured;
				}
				else if(isset($ext_employer_is_featured) && $ext_employer_is_featured == 0)
				{
					$employer_is_featured = $employer_is_featured;
				}



				$c_dATE = DATE("d-m-Y");
				$ext_employer_package_expiry_date = get_post_meta($employer_id, '_employer_package_expiry_date', true);
				if($employer_package_expiry == -1 || $ext_employer_package_expiry_date == -1)
				{
					$employer_package_expiry_date = -1;

				}
				else
				{
					if($ext_employer_package_expiry_date == "")
					{
						$employer_package_expiry_date = date('d-m-Y', strtotime($c_dATE. " + $employer_package_expiry days"));
					}
					else
					{
						$employer_package_expiry_date = date('d-m-Y', strtotime($ext_employer_package_expiry_date. " + $employer_package_expiry days"));
					}
				}


				update_post_meta( $employer_id, '_simple_projects', $simple_projects);
				update_post_meta( $employer_id, '_simple_project_expiry', $simple_project_expiry);
				update_post_meta( $employer_id, '_featured_projects', $featured_projects);
				update_post_meta( $employer_id, '_featured_project_expiry', $featured_project_expiry);
				update_post_meta( $employer_id, '_employer_package_expiry', $employer_package_expiry);
				update_post_meta( $employer_id, '_employer_is_featured', $employer_is_featured);
				update_post_meta( $employer_id, '_employer_package_expiry_date', $employer_package_expiry_date);
				
				update_post_meta( $employer_id, '_employer_listing_bump', $employer_listing_bump);

                   
				/*FOR THE FREE PACKAGE*/
				$is_employer_pkg_free = get_post_meta($product_id, '_is_employer_pkg_free', true);
				if(isset($is_employer_pkg_free) && $is_employer_pkg_free == 1)
				{
					update_post_meta( $employer_id, '_purchased_free_pkg_emp', 1);	
				}

			}

		}
	}
}
add_action( 'woocommerce_order_status_completed', 'exertio_employer_order_status_completed', 10, 1 );

if ( ! function_exists( 'exertio_employer_package_auto_complete_order' ) )
{
	function exertio_employer_package_auto_complete_order( $order_id )
	{ 
		if ( ! $order_id ) {
			return;
		}
		if(fl_framework_get_options('project_package_approval') == 1)
		{
			//$order = wc_get_order( $order_id );
			$order = new WC_Order($order_id);
			$items = $order->get_items();
	
			foreach ( $items as $item )
			{
				$product = wc_get_product( $item['product_id'] );
				$prduct_type = $product->get_type();
			  
			}
			if($prduct_type == 'employer-packages')
			{
				$order->update_status( 'completed' );
			}
		}
	}
}
add_action( 'woocommerce_thankyou', 'exertio_employer_package_auto_complete_order' );
	
	
	/*EMPLOYER PACKAGE ASSIGNMENT AT THE TIME OF REGISTERATION*/
	if ( ! function_exists( 'exertio_employer_pck_on_registeration' ) )
	{
		function exertio_employer_pck_on_registeration( $employer_id)
		{ 
			global $exertio_theme_options;
			if(isset($exertio_theme_options['employer_default_package_switch']) && $exertio_theme_options['employer_default_package_switch'] == 1 )
			{
				if(isset($exertio_theme_options['employer_default_packages']) && $exertio_theme_options['employer_default_packages'] != '' )
				{
					$product_id = $exertio_theme_options['employer_default_packages'];
					$product = wc_get_product( $product_id );
					if(!empty($product))
					{
						$simple_projects = get_post_meta($product_id, '_simple_projects', true);
						$simple_project_expiry = get_post_meta($product_id, '_simple_project_expiry', true);
						$featured_projects = get_post_meta($product_id, '_featured_projects', true);
						$featured_project_expiry = get_post_meta($product_id, '_featured_project_expiry', true);
						$employer_package_expiry = get_post_meta($product_id, '_employer_package_expiry', true);
						$employer_is_featured = get_post_meta($product_id, '_employer_is_featured', true);
						
						$employer_package_expiry_date = '';
						$c_dATE = DATE("d-m-Y");
						if($employer_package_expiry != -1)
						{
							$employer_package_expiry_date = date('d-m-Y', strtotime($c_dATE. " + $employer_package_expiry days"));
						}
						else
						{
							$employer_package_expiry_date = -1;
						}

						update_post_meta( $employer_id, '_simple_projects', $simple_projects);
						update_post_meta( $employer_id, '_simple_project_expiry', $simple_project_expiry);
						update_post_meta( $employer_id, '_featured_projects', $featured_projects);
						update_post_meta( $employer_id, '_featured_project_expiry', $featured_project_expiry);
						update_post_meta( $employer_id, '_employer_package_expiry', $employer_package_expiry);
						update_post_meta( $employer_id, '_employer_is_featured', $employer_is_featured);
						update_post_meta( $employer_id, '_employer_package_expiry_date', $employer_package_expiry_date);
						
					}
				}
			}
		}
	}
	
}