Current Path : /var/www/html/wings/wp-content/plugins/eea-pricing/ |
Current File : /var/www/html/wings/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; }