Your IP : 216.73.216.164


Current Path : /var/www/html/afc2023/wp-content/plugins/eea-pricing/
Upload File :
Current File : /var/www/html/afc2023/wp-content/plugins/eea-pricing/EE_Pricing.class.php

<?php
use EventEspresso\core\services\loaders\LoaderInterface;
use EventEspresso\core\exceptions\InvalidInterfaceException;
use EventEspresso\core\exceptions\InvalidDataTypeException;
use EventEspresso\core\services\loaders\Loader;
use EventEspresso\core\services\loaders\LoaderFactory;

if (! defined('EVENT_ESPRESSO_VERSION')) {
    exit();
}

define('EE_PRICE_BASENAME', plugin_basename(EE_PRICE_PLUGIN_FILE));
define('EE_PRICE_PATH', plugin_dir_path(__FILE__));
define('EE_PRICE_URL', plugin_dir_url(__FILE__));
define('EE_PRICING_CORE', EE_PRICE_PATH . 'core' . DS);


class EE_Pricing extends EE_Addon
{

    /**
     * register_addon
     */
    public static function register_addon()
    {
        //register addon via Plugin API
        EE_Register_Addon::register(
            'EE_Pricing',
            array(
                'version'           => EE_PRICE_VERSION,
                'min_core_version'  => EE_PRICE_CORE_VERSION_REQUIRED,
                'main_file_path'    => EE_PRICE_PLUGIN_FILE,
                'plugin_slug'       => 'espresso_pricing',
                'autoloader_paths' => array(
                     'EE_Pricing'             => EE_PRICE_PATH . 'EE_Pricing.class.php',
                 
                )
                                  
            )
        );
       
        
    }
    public function after_registration()
    {
        require_once 'EE_Price_Display_Strategy.php';
        require_once 'EE_Price_Validation_Strategy.php';
        require_once 'EE_SSA_PRICING.php';
        add_filter('FHEE__EEM_Question__construct__allowed_question_types', array('EE_Pricing','ssa_add_price_type_question'), 10, 1);
        add_filter('FHEE__EE_SPCO_Reg_Step_Attendee_Information___generate_question_input__default', array('EE_Pricing','ssa_render_pricing_question'), 10, 4);
        add_action('admin_enqueue_scripts', array('EE_Pricing','ssa_load_custom_wp_admin_style'));
    }
    public static function ssa_load_custom_wp_admin_style($hook)
    {
        global $wpdb;
        $table = $wpdb->prefix.'esp_question_price_type';
        $opts = $wpdb->prefix.'esp_question_price_opt';
        $prices = '';
        $type = '';
        $tax = '';
        
        if ($hook == 'event-espresso_page_espresso_registration_form') 
        {
            if (isset($_GET['QST_ID']) && $_GET['QST_ID'] != '') 
            {
                $que_id = $_GET['QST_ID'];
                $prices = $wpdb->get_results("SELECT * FROM $opts  WHERE qst_id='$que_id'");
                $type = $wpdb->get_var("SELECT type FROM $table WHERE qst_id='$que_id'");
                $tax = $wpdb->get_var("SELECT taxable FROM $table  WHERE qst_id='$que_id'");
            }
                wp_enqueue_style('admin-pricing-css', plugins_url('css/admin-screen.css', __FILE__));
                wp_enqueue_script('admin-pricing-js', plugins_url('scripts/admin-js.js', __FILE__), array('jquery'));
                wp_localize_script('admin-pricing-js', 'ssa_price_ds', array('type'=>$type,'price' =>$prices,'tax'=>$tax));


        }
    }
    public static function ssa_add_price_type_question($question_types)
    {
        $label = 'Pricing';
        $label =  apply_filters('ssa_change_price_question_label', $label);
        $question_types['pricing']= $label;
        return $question_types;
    }
    public static function ssa_render_pricing_question($param1, $type, $question, $args)
    {
        if ($type == 'pricing') {
            return new EE_SSA_PRICING($args);
        } else {
            return $param1;
        }
    }
   

}

add_action('AHEE__Extend_Registration_Form_Admin_Page___redirect_after_action__before_redirect_modification_insert_question', 'update_logic_function', 10, 1);

add_action('AHEE__Extend_Registration_Form_Admin_Page___redirect_after_action__before_redirect_modification_update_question', 'update_logic_function', 10, 1);

function update_logic_function($args)
{
    global $wpdb;
    $type_table = $wpdb->prefix.'esp_question_price_type';
    $price_table = $wpdb->prefix.'esp_question_price_opt';

    $question_id = $args['QST_ID'];
   
    $count = $wpdb->get_var("SELECT COUNT(id) FROM $type_table WHERE qst_id='{$question_id}'");
    $type = $_POST['pricing_type'];
    $taxable = isset($_POST['pricing_taxable'])?$_POST['pricing_taxable']:0;
    $remove_options = $_POST['removed_opts'];
    $wpdb->query("DELETE FROM $price_table WHERE ID in ($remove_options)");

    $prices= json_decode(stripslashes($_POST['pricing_opts']));
      
    if ($count > 0) {

        
          $wpdb->update(
              $type_table,
              array('type' => $type,
                    'taxable' => $taxable),
              array('qst_id'=>$question_id),
              array('%s',
                    '%d'),
              array('%d')
          );
          foreach($prices as $key=>$value)
          {
                $opt_id = $key;
                $val = explode('|',$value);
                $price = $val[1];
                $desc = $val[0];
                if($opt_id > 50000)
                {
                    $wpdb->insert(
                        $price_table,
                        array('opt_desc'=>$desc,
                            'opt_price' =>$price,
                            'qst_id'=>$question_id),
                        array( '%s',
                            '%f',
                            '%d')
                    );
                }
                else
                {
                    $wpdb->update(
                        $price_table,
                        array(
                            'opt_desc'=>$desc,
                            'opt_price' =>$price
                            ),
                        array(
                            'id' =>$opt_id
                            ),                            
                        array( '%s',
                            '%f'),
                        array('%d')
                  );
                }

          }
          
    } else {
        
         $wpdb->insert(
             $type_table,
             array('type'=>$type,
                    'taxable' => $taxable,
                    'qst_id'=>$question_id),
             array( '%s',
                    '%d',
                    '%d')
         );
          foreach($prices as $key=>$value)
          {
                $opt_id = $key;
                $val = explode('|',$value);
                $price = $val[1];
                $desc = $val[0];
                
                    $wpdb->insert(
                        $price_table,
                        array('opt_desc'=>$desc,
                            'opt_price' =>$price,
                            'qst_id'=>$question_id),
                        array( '%s',
                            '%f',
                            '%d')
                    );
                
                

          }
       
    }
  
   
}

add_action('wp_ajax_update_registration', 'update_registration');
add_action('wp_ajax_nopriv_update_registration', 'update_registration');
function update_registration()
{
    global $wpdb;
    $tbl = $wpdb->prefix.'esp_line_item';
    $reg = $_POST['reg'];
    $qid =  $_POST['qid'];
    $ex = explode('-', $qid);
   
    if (count($ex) == 6) {
        unset($ex[3]);
    }

    $rid = implode('-', $ex);
    $sql = "SELECT LIN_ID,LIN_unit_price,LIN_parent FROM $tbl WHERE LIN_code like '$rid%' AND OBJ_ID='$reg'";
    $line = $wpdb->get_row($sql);
    //print_r($line);
    if ($line != '') {
        $line_id = $line->LIN_ID;
        
        $price = $line->LIN_unit_price;
       
        $parent = $line->LIN_parent;
      
        $wpdb->query("DELETE FROM $tbl WHERE LIN_ID='$line_id'");
        $wpdb->query("DELETE FROM $tbl WHERE LIN_parent='$line_id'");
       
        $cart = EE_Registry::instance()->SSN->cart();
        $cart->get_grand_total()->recalculate_total_including_taxes();
        $cart->save_cart(false);
        $wpdb->query("UPDATE $tbl SET LIN_unit_price = LIN_unit_price-$price WHERE LIN_ID='$parent'");
    }


    die();
}
function return_registration_status($reg_id)
{
    global $wpdb;
    $reg_table = $wpdb->prefix.'esp_registration';
    $status = $wpdb->get_var("SELECT STS_ID FROM $reg_table WHERE REG_ID='$reg_id'");
    return $status;
}

function return_registration_event_id($reg_id)
{
    global $wpdb;
    $reg_table = $wpdb->prefix.'esp_registration';
    $event_id = $wpdb->get_var("SELECT EVT_ID FROM $reg_table WHERE REG_ID='$reg_id'");
    return $event_id;
}