Advertisement
Guest User

woohelper.php

a guest
Jan 4th, 2018
575
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 44.53 KB | None | 0 0
  1. <?php if ( ! defined( 'ABSPATH' ) ) exit;
  2.  
  3. class Woo_Helper {
  4.    
  5.     public  $Config;
  6.         public  $TicketHelper;
  7.         private $BarcodeHelper;
  8.         public  $MailHelper;
  9.    
  10.     public function __construct($config) {
  11.  
  12.             $this->check_woocommerce_exists();
  13.             $this->Config = $config;
  14.            
  15.             //TicketHelper
  16.             require_once($this->Config->classPath.'tickethelper.php');
  17.             $this->TicketHelper = new Ticket_Helper($this->Config);
  18.            
  19.             //BarcodeHelper
  20.             require_once($this->Config->classPath.'barcodehelper.php');
  21.             $this->BarcodeHelper = new Barcode_Helper($this->Config);
  22.            
  23.             //MailHelper
  24.             require_once($this->Config->classPath.'mailhelper.php');
  25.             $this->MailHelper = new Mail_Helper($this->Config);
  26.            
  27.             add_action('woocommerce_product_tabs', array(&$this, 'add_front_end_tab'), 10, 2);
  28.             add_action('woocommerce_order_status_partially-paid', array(&$this, 'send_ticket_email'), 10, 1);
  29.             add_action( 'woocommerce_product_write_panel_tabs', array( $this, 'add_product_options_tab' ) );
  30.             add_action( 'woocommerce_product_write_panels', array( $this, 'add_product_options_tab_options' ) );
  31.             add_action( 'woocommerce_process_product_meta', array( $this, 'process_meta_box' ) );
  32.             add_action( 'wp_ajax_woocommerce_events_csv', array( $this, 'woocommerce_events_csv' ) );
  33.             add_action( 'wp_ajax_nopriv_woocommerce_events_csv', array( $this, 'woocommerce_events_csv' ) );
  34.             add_action( 'wp_ajax_nopriv_woocommerce_events_csv', array( $this, 'woocommerce_events_csv' ) );
  35.             add_action('woocommerce_thankyou_order_received_text', array( $this, 'display_thank_you_text' ));
  36.  
  37.     }
  38.        
  39.         /**
  40.          * Checks if the WooCommerce plugin exists
  41.          *
  42.          */
  43.     public function check_woocommerce_exists() {
  44.    
  45.             if ( !class_exists( 'WooCommerce' ) ) {
  46.  
  47.                     $this->output_notices(array(__( 'WooCommerce is not active. Please install and activate it.', 'woocommerce-events' )));
  48.  
  49.             }
  50.    
  51.     }
  52.        
  53.         /**
  54.          * Initializes the WooCommerce meta box
  55.          *
  56.          */
  57.         public function add_product_options_tab() {
  58.  
  59.             echo '<li class="custom_tab"><a href="#woocommerce_events_data">'.__( 'Event', 'woocommerce-events' ).'</a></li>';
  60.  
  61.         }
  62.        
  63.        
  64.         /**
  65.          * Displays the event form
  66.          *
  67.          * @param object $post
  68.          */
  69.         public function add_product_options_tab_options() {
  70.            
  71.             global $post;
  72.            
  73.             $WooCommerceEventsEvent                     = get_post_meta($post->ID, 'WooCommerceEventsEvent', true);
  74.             $WooCommerceEventsDate                      = get_post_meta($post->ID, 'WooCommerceEventsDate', true);
  75.             $WooCommerceEventsHour                      = get_post_meta($post->ID, 'WooCommerceEventsHour', true);
  76.             $WooCommerceEventsMinutes                   = get_post_meta($post->ID, 'WooCommerceEventsMinutes', true);
  77.             $WooCommerceEventsHourEnd                   = get_post_meta($post->ID, 'WooCommerceEventsHourEnd', true);
  78.             $WooCommerceEventsMinutesEnd                = get_post_meta($post->ID, 'WooCommerceEventsMinutesEnd', true);
  79.             $WooCommerceEventsLocation                  = get_post_meta($post->ID, 'WooCommerceEventsLocation', true);
  80.             $WooCommerceEventsTicketLogo                = get_post_meta($post->ID, 'WooCommerceEventsTicketLogo', true);
  81.             $WooCommerceEventsSupportContact            = get_post_meta($post->ID, 'WooCommerceEventsSupportContact', true);
  82.             $WooCommerceEventsGPS                       = get_post_meta($post->ID, 'WooCommerceEventsGPS', true);
  83.             $WooCommerceEventsGoogleMaps                = get_post_meta($post->ID, 'WooCommerceEventsGoogleMaps', true);
  84.             $WooCommerceEventsDirections                = get_post_meta($post->ID, 'WooCommerceEventsDirections', true);
  85.             $WooCommerceEventsEmail                     = get_post_meta($post->ID, 'WooCommerceEventsEmail', true);
  86.             $WooCommerceEventsTicketBackgroundColor     = get_post_meta($post->ID, 'WooCommerceEventsTicketBackgroundColor', true);
  87.             $WooCommerceEventsTicketButtonColor         = get_post_meta($post->ID, 'WooCommerceEventsTicketButtonColor', true);
  88.             $WooCommerceEventsTicketTextColor           = get_post_meta($post->ID, 'WooCommerceEventsTicketTextColor', true);
  89.             $WooCommerceEventsTicketPurchaserDetails    = get_post_meta($post->ID, 'WooCommerceEventsTicketPurchaserDetails', true);
  90.             $WooCommerceEventsTicketAddCalendar         = get_post_meta($post->ID, 'WooCommerceEventsTicketAddCalendar', true);
  91.             $WooCommerceEventsTicketDisplayDateTime     = get_post_meta($post->ID, 'WooCommerceEventsTicketDisplayDateTime', true);
  92.             $WooCommerceEventsTicketDisplayBarcode      = get_post_meta($post->ID, 'WooCommerceEventsTicketDisplayBarcode', true);
  93.             $WooCommerceEventsTicketDisplayPrice            = get_post_meta($post->ID, 'WooCommerceEventsTicketDisplayPrice', true);
  94.             $WooCommerceEventsTicketText                    = get_post_meta($post->ID, 'WooCommerceEventsTicketText', true);
  95.             $WooCommerceEventsThankYouText                  = get_post_meta($post->ID, 'WooCommerceEventsThankYouText', true);
  96.             $WooCommerceEventsCaptureAttendeeDetails        = get_post_meta($post->ID, 'WooCommerceEventsCaptureAttendeeDetails', true);
  97.             $WooCommerceEventsSendEmailTickets              = get_post_meta($post->ID, 'WooCommerceEventsSendEmailTickets', true);
  98.             $WooCommerceEventsCaptureAttendeeTelephone      = get_post_meta($post->ID, 'WooCommerceEventsCaptureAttendeeTelephone', true);
  99.             $WooCommerceEventsCaptureAttendeeCompany        = get_post_meta($post->ID, 'WooCommerceEventsCaptureAttendeeCompany', true);
  100.             $WooCommerceEventsCaptureAttendeeDesignation    = get_post_meta($post->ID, 'WooCommerceEventsCaptureAttendeeDesignation', true);
  101.  
  102.            
  103.             $globalWooCommerceEventsTicketBackgroundColor   = get_option('globalWooCommerceEventsTicketBackgroundColor', true);
  104.             $globalWooCommerceEventsTicketButtonColor       = get_option('globalWooCommerceEventsTicketButtonColor', true);
  105.             $globalWooCommerceEventsTicketLogo              = get_option('globalWooCommerceEventsTicketLogo', true);
  106.  
  107.            
  108.             require($this->Config->templatePath.'eventmetaoptions.php');
  109.  
  110.         }
  111.    
  112.         /**
  113.          * Processes the meta box form once the plubish / update button is clicked.
  114.          *
  115.          * @global object $woocommerce_errors
  116.          * @param int $post_id
  117.          * @param object $post
  118.          */
  119.         public function process_meta_box($post_id) {
  120.            
  121.             global $woocommerce_errors;
  122.  
  123.             if(isset($_POST['WooCommerceEventsEvent'])) {
  124.                
  125.                 update_post_meta($post_id, 'WooCommerceEventsEvent', $_POST['WooCommerceEventsEvent']);
  126.                
  127.             }
  128.            
  129.             if(isset($_POST['WooCommerceEventsDate'])) {
  130.                
  131.                 update_post_meta($post_id, 'WooCommerceEventsDate', $_POST['WooCommerceEventsDate']);
  132.                
  133.             }
  134.            
  135.             if(isset($_POST['WooCommerceEventsHour'])) {
  136.                
  137.                 update_post_meta($post_id, 'WooCommerceEventsHour', $_POST['WooCommerceEventsHour']);
  138.                
  139.             }
  140.            
  141.             if(isset($_POST['WooCommerceEventsMinutes'])) {
  142.                
  143.                 update_post_meta($post_id, 'WooCommerceEventsMinutes', $_POST['WooCommerceEventsMinutes']);
  144.                
  145.             }
  146.            
  147.             if(isset($_POST['WooCommerceEventsLocation'])) {
  148.                
  149.                 $WooCommerceEventsLocation = htmlentities(stripslashes($_POST['WooCommerceEventsLocation']));
  150.                
  151.                 update_post_meta($post_id, 'WooCommerceEventsLocation', $WooCommerceEventsLocation);
  152.                
  153.             }
  154.            
  155.             if(isset($_POST['WooCommerceEventsTicketLogo'])) {
  156.                
  157.                 update_post_meta($post_id, 'WooCommerceEventsTicketLogo', $_POST['WooCommerceEventsTicketLogo']);
  158.                
  159.             }
  160.            
  161.             if(isset($_POST['WooCommerceEventsTicketText'])) {
  162.                
  163.                 update_post_meta($post_id, 'WooCommerceEventsTicketText', $_POST['WooCommerceEventsTicketText']);
  164.                
  165.             }
  166.            
  167.             if(isset($_POST['WooCommerceEventsThankYouText'])) {
  168.                
  169.                 update_post_meta($post_id, 'WooCommerceEventsThankYouText', $_POST['WooCommerceEventsThankYouText']);
  170.                
  171.             }
  172.            
  173.             if(isset($_POST['WooCommerceEventsSupportContact'])) {
  174.                
  175.                 $WooCommerceEventsSupportContact = htmlentities(stripslashes($_POST['WooCommerceEventsSupportContact']));
  176.                
  177.                 update_post_meta($post_id, 'WooCommerceEventsSupportContact', $WooCommerceEventsSupportContact);
  178.                
  179.             }
  180.            
  181.             if(isset($_POST['WooCommerceEventsHourEnd'])) {
  182.                
  183.                 update_post_meta($post_id, 'WooCommerceEventsHourEnd', $_POST['WooCommerceEventsHourEnd']);
  184.                
  185.             }
  186.            
  187.             if(isset($_POST['WooCommerceEventsMinutesEnd'])) {
  188.                
  189.                 update_post_meta($post_id, 'WooCommerceEventsMinutesEnd', $_POST['WooCommerceEventsMinutesEnd']);
  190.                
  191.             }
  192.            
  193.             if(isset($_POST['WooCommerceEventsGPS'])) {
  194.                
  195.                 $WooCommerceEventsGPS = htmlentities(stripslashes($_POST['WooCommerceEventsGPS']));
  196.                
  197.                 update_post_meta($post_id, 'WooCommerceEventsGPS',  htmlentities(stripslashes($_POST['WooCommerceEventsGPS'])));
  198.                
  199.             }
  200.            
  201.             if(isset($_POST['WooCommerceEventsDirections'])) {
  202.                
  203.                 $WooCommerceEventsDirections = htmlentities(stripslashes($_POST['WooCommerceEventsDirections']));
  204.                
  205.                 update_post_meta($post_id, 'WooCommerceEventsDirections', $WooCommerceEventsDirections);
  206.                
  207.             }
  208.            
  209.             if(isset($_POST['WooCommerceEventsEmail'])) {
  210.                
  211.                 $WooCommerceEventsEmail = esc_textarea($_POST['WooCommerceEventsEmail']);
  212.                
  213.                 update_post_meta($post_id, 'WooCommerceEventsEmail', $WooCommerceEventsEmail);
  214.                
  215.             }
  216.            
  217.             if(isset($_POST['WooCommerceEventsTicketBackgroundColor'])) {
  218.                
  219.                 update_post_meta($post_id, 'WooCommerceEventsTicketBackgroundColor', $_POST['WooCommerceEventsTicketBackgroundColor']);
  220.                
  221.             }
  222.            
  223.             if(isset($_POST['WooCommerceEventsTicketButtonColor'])) {
  224.                
  225.                 update_post_meta($post_id, 'WooCommerceEventsTicketButtonColor', $_POST['WooCommerceEventsTicketButtonColor']);
  226.                
  227.             }
  228.            
  229.             if(isset($_POST['WooCommerceEventsTicketTextColor'])) {
  230.                
  231.                 update_post_meta($post_id, 'WooCommerceEventsTicketTextColor', $_POST['WooCommerceEventsTicketTextColor']);
  232.                
  233.             }
  234.            
  235.             if(isset($_POST['WooCommerceEventsGoogleMaps'])) {
  236.                
  237.                 update_post_meta($post_id, 'WooCommerceEventsGoogleMaps', $_POST['WooCommerceEventsGoogleMaps']);
  238.                
  239.             }
  240.            
  241.             if(isset($_POST['WooCommerceEventsTicketPurchaserDetails'])) {
  242.                
  243.                 update_post_meta($post_id, 'WooCommerceEventsTicketPurchaserDetails', $_POST['WooCommerceEventsTicketPurchaserDetails']);
  244.                
  245.             } else {
  246.                
  247.                 update_post_meta($post_id, 'WooCommerceEventsTicketPurchaserDetails', 'off');
  248.                
  249.             }
  250.            
  251.             if(isset($_POST['WooCommerceEventsTicketAddCalendar'])) {
  252.                
  253.                 update_post_meta($post_id, 'WooCommerceEventsTicketAddCalendar', $_POST['WooCommerceEventsTicketAddCalendar']);
  254.                
  255.             } else {
  256.                
  257.                 update_post_meta($post_id, 'WooCommerceEventsTicketAddCalendar', 'off');
  258.                
  259.             }
  260.  
  261.             if(isset($_POST['WooCommerceEventsTicketDisplayDateTime'])) {
  262.                
  263.                 update_post_meta($post_id, 'WooCommerceEventsTicketDisplayDateTime', $_POST['WooCommerceEventsTicketDisplayDateTime']);
  264.                
  265.             } else {
  266.                
  267.                 update_post_meta($post_id, 'WooCommerceEventsTicketDisplayDateTime', 'off');
  268.                
  269.             }
  270.            
  271.             if(isset($_POST['WooCommerceEventsTicketDisplayBarcode'])) {
  272.                
  273.                 update_post_meta($post_id, 'WooCommerceEventsTicketDisplayBarcode', $_POST['WooCommerceEventsTicketDisplayBarcode']);
  274.                
  275.             } else {
  276.                
  277.                 update_post_meta($post_id, 'WooCommerceEventsTicketDisplayBarcode', 'off');
  278.                
  279.             }
  280.            
  281.             if(isset($_POST['WooCommerceEventsTicketDisplayPrice'])) {
  282.                
  283.                 update_post_meta($post_id, 'WooCommerceEventsTicketDisplayPrice', $_POST['WooCommerceEventsTicketDisplayPrice']);
  284.                
  285.             } else {
  286.                
  287.                 update_post_meta($post_id, 'WooCommerceEventsTicketDisplayPrice', 'off');
  288.                
  289.             }
  290.            
  291.             if(isset($_POST['WooCommerceEventsCaptureAttendeeDetails'])) {
  292.                
  293.                 update_post_meta($post_id, 'WooCommerceEventsCaptureAttendeeDetails', $_POST['WooCommerceEventsCaptureAttendeeDetails']);
  294.                
  295.             } else {
  296.                
  297.                 update_post_meta($post_id, 'WooCommerceEventsCaptureAttendeeDetails', 'off');
  298.                
  299.             }
  300.            
  301.             if(isset($_POST['WooCommerceEventsCaptureAttendeeTelephone'])) {
  302.                
  303.                 update_post_meta($post_id, 'WooCommerceEventsCaptureAttendeeTelephone', $_POST['WooCommerceEventsCaptureAttendeeTelephone']);
  304.                
  305.             } else {
  306.                
  307.                 update_post_meta($post_id, 'WooCommerceEventsCaptureAttendeeTelephone', 'off');
  308.                
  309.             }
  310.            
  311.             if(isset($_POST['WooCommerceEventsCaptureAttendeeCompany'])) {
  312.                
  313.                 update_post_meta($post_id, 'WooCommerceEventsCaptureAttendeeCompany', $_POST['WooCommerceEventsCaptureAttendeeCompany']);
  314.                
  315.             } else {
  316.                
  317.                 update_post_meta($post_id, 'WooCommerceEventsCaptureAttendeeCompany', 'off');
  318.                
  319.             }
  320.            
  321.             if(isset($_POST['WooCommerceEventsCaptureAttendeeDesignation'])) {
  322.                
  323.                 update_post_meta($post_id, 'WooCommerceEventsCaptureAttendeeDesignation', $_POST['WooCommerceEventsCaptureAttendeeDesignation']);
  324.                
  325.             } else {
  326.                
  327.                 update_post_meta($post_id, 'WooCommerceEventsCaptureAttendeeDesignation', 'off');
  328.                
  329.             }
  330.            
  331.             if(isset($_POST['WooCommerceEventsSendEmailTickets'])) {
  332.                
  333.                 update_post_meta($post_id, 'WooCommerceEventsSendEmailTickets', $_POST['WooCommerceEventsSendEmailTickets']);
  334.                
  335.             } else {
  336.                
  337.                 update_post_meta($post_id, 'WooCommerceEventsSendEmailTickets', 'off');
  338.                
  339.             }
  340.  
  341.         }
  342.        
  343.         /**
  344.          * Displays the event details on the front end template. Before WooCommerce Displays content.
  345.          *
  346.          * @param array $tabs
  347.          * @global object $post
  348.          * @return array $tabs
  349.          */
  350.         public function add_front_end_tab($tabs) {
  351.            
  352.             global $post;
  353.            
  354.             $WooCommerceEventsEvent = get_post_meta($post->ID, 'WooCommerceEventsEvent', true);
  355.            
  356.             $WooCommerceEventsGoogleMaps = get_post_meta($post->ID, 'WooCommerceEventsGoogleMaps', true);
  357.            
  358.             $globalWooCommerceHideEventDetailsTab   = get_option('globalWooCommerceHideEventDetailsTab', true);
  359.            
  360.             if($WooCommerceEventsEvent == 'Event') {
  361.                
  362.                 if($globalWooCommerceHideEventDetailsTab != 'yes') {
  363.                
  364.                     $tabs['woocommerce_events'] = array(
  365.                         'title'     => __('Data, Orario e Luogo', 'woocommerce-events'),
  366.                         'priority'  => 30,
  367.                         'callback'  => 'displayEventTab'
  368.                     );
  369.  
  370.                 }
  371.                
  372.                 if(!empty($WooCommerceEventsGoogleMaps)) {
  373.                    
  374.                     $tabs['description'] = array(
  375.                         'title'     => __('Descrizione', 'woocommerce-events'),
  376.                         'priority' => 1,
  377.                         'callback'  => 'displayEventTabMap'
  378.                     );
  379.                    
  380.                 }
  381.                
  382.             }
  383.             return $tabs;
  384.            
  385.         }
  386.        
  387.         /**
  388.          * Sends a ticket email once an order is completed.
  389.          *
  390.          * @param int $order_id
  391.          * @global $woocommerce, $evotx;
  392.          */
  393.      public function send_ticket_email($order_id) {
  394.            
  395.             error_reporting(E_ALL);
  396.             ini_set('display_errors', '1');
  397.          
  398.             set_time_limit(0);
  399.          
  400.             global $woocommerce;
  401.            
  402.             $order = new WC_Order( $order_id );
  403.             $tickets = $order->get_items();
  404.            
  405.             $WooCommerceEventsTicketsPurchased = get_post_meta($order_id, 'WooCommerceEventsTicketsPurchased', true);
  406.             $WooCommerceEventsTicketsPurchased = json_decode($WooCommerceEventsTicketsPurchased, true);
  407.  
  408.             $customer = get_post_meta($order_id, '_customer_user', true);
  409.             $usermeta = get_user_meta($customer);
  410.  
  411.             $WooCommerceEventsSentTicket        =  get_post_meta($order_id, 'WooCommerceEventsSentTicket', true);
  412.            
  413.            
  414.             $customerDetails = array(
  415.                         'customerID'        => $customer
  416.             );
  417.  
  418.             $customerDetails['customerFirstName']   = $order->billing_first_name;
  419.             $customerDetails['customerLastName']    = $order->billing_last_name;
  420.             $customerDetails['customerEmail']       = $order->billing_email;
  421.            
  422.            
  423.             $tickets = new WP_Query( array('post_type' => array('event_magic_tickets'), 'posts_per_page' => -1, 'meta_query' => array( array( 'key' => 'WooCommerceEventsOrderID', 'value' => $order_id ) )) );
  424.             $tickets = $tickets->get_posts();
  425.            
  426.            
  427.             $body = '';
  428.             $header = $this->MailHelper->parse_email_template('header.php', $customerDetails);
  429.             $footer = $this->MailHelper->parse_email_template('footer.php', $customerDetails);
  430.             $ticketBody = '';
  431.            
  432.             $globalWooCommerceEventsEmailAttendees = get_option('globalWooCommerceEventsEmailAttendees', true);
  433.            
  434.             foreach ($tickets as $ticketItem) {
  435.                
  436.                 $WooCommerceEventsProductID                 = get_post_meta($ticketItem->ID, 'WooCommerceEventsProductID', true);
  437.                 $WooCommerceEventsTicketType                = get_post_meta($ticketItem->ID, 'WooCommerceEventsTicketType', true);
  438.                 $WooCommerceEventsTicketID                  = get_post_meta($ticketItem->ID, 'WooCommerceEventsTicketID', true);
  439.                 $WooCommerceEventsStatus                    = get_post_meta($ticketItem->ID, 'WooCommerceEventsStatus', true);
  440.                 $ticket['WooCommerceEventsVariations']      = json_decode(get_post_meta($ticketItem->ID, 'WooCommerceEventsVariations', true));
  441.                 $ticket['WooCommerceEventsVariationID']     = get_post_meta($ticketItem->ID, 'WooCommerceEventsVariationID', true);
  442.                 $WooCommerceEventsEvent                     = get_post_meta($WooCommerceEventsProductID, 'WooCommerceEventsEvent', true);
  443.                 $WooCommerceEventsCaptureAttendeeDetails    = get_post_meta($WooCommerceEventsProductID, 'WooCommerceEventsCaptureAttendeeDetails', true);
  444.                 $WooCommerceEventsSendEmailTickets          = get_post_meta($WooCommerceEventsProductID, 'WooCommerceEventsSendEmailTickets', true);
  445.  
  446.                 if($WooCommerceEventsTicketsPurchased[$WooCommerceEventsProductID] > 0) {
  447.      
  448.                     if($WooCommerceEventsEvent == 'Event') {
  449.  
  450.                         //update ticket as paid
  451.                         if($WooCommerceEventsStatus == 'Unpaid') {
  452.  
  453.                             update_post_meta($ticketItem->ID, 'WooCommerceEventsStatus', 'Not Checked In');
  454.  
  455.                         }
  456.  
  457.                         //ticket details for email
  458.                         $ticket['WooCommerceEventsEvent']                       = get_post_meta($WooCommerceEventsProductID, 'WooCommerceEventsEvent', true);
  459.                         $ticket['WooCommerceEventsDate']                        = get_post_meta($WooCommerceEventsProductID, 'WooCommerceEventsDate', true);
  460.                         $ticket['WooCommerceEventsHour']                        = get_post_meta($WooCommerceEventsProductID, 'WooCommerceEventsHour', true);
  461.                         $ticket['WooCommerceEventsMinutes']                     = get_post_meta($WooCommerceEventsProductID, 'WooCommerceEventsMinutes', true);
  462.                         $ticket['WooCommerceEventsHourEnd']                     = get_post_meta($WooCommerceEventsProductID, 'WooCommerceEventsHourEnd', true);
  463.                         $ticket['WooCommerceEventsMinutesEnd']                  = get_post_meta($WooCommerceEventsProductID, 'WooCommerceEventsMinutesEnd', true);
  464.                         $ticket['WooCommerceEventsLocation']                    = get_post_meta($WooCommerceEventsProductID, 'WooCommerceEventsLocation', true);
  465.                         $ticket['WooCommerceEventsTicketLogo']                  = get_post_meta($WooCommerceEventsProductID, 'WooCommerceEventsTicketLogo', true);
  466.                         $ticket['WooCommerceEventsSupportContact']              = get_post_meta($WooCommerceEventsProductID, 'WooCommerceEventsSupportContact', true);
  467.                         $ticket['WooCommerceEventsTicketBackgroundColor']       = get_post_meta($WooCommerceEventsProductID, 'WooCommerceEventsTicketBackgroundColor', true);
  468.                         $ticket['WooCommerceEventsTicketButtonColor']           = get_post_meta($WooCommerceEventsProductID, 'WooCommerceEventsTicketButtonColor', true);
  469.                         $ticket['WooCommerceEventsTicketPurchaserDetails']      = get_post_meta($WooCommerceEventsProductID, 'WooCommerceEventsTicketPurchaserDetails', true);
  470.                         $ticket['WooCommerceEventsTicketAddCalendar']           = get_post_meta($WooCommerceEventsProductID, 'WooCommerceEventsTicketAddCalendar', true);
  471.                         $ticket['WooCommerceEventsTicketDisplayDateTime']       = get_post_meta($WooCommerceEventsProductID, 'WooCommerceEventsTicketDisplayDateTime', true);
  472.                         $ticket['WooCommerceEventsTicketDisplayBarcode']        = get_post_meta($WooCommerceEventsProductID, 'WooCommerceEventsTicketDisplayBarcode', true);
  473.                         $ticket['WooCommerceEventsTicketText']                  = get_post_meta($WooCommerceEventsProductID, 'WooCommerceEventsTicketText', true);
  474.                         $ticket['WooCommerceEventsDirections']                  = get_post_meta($WooCommerceEventsProductID, 'WooCommerceEventsDirections', true);
  475.                         $ticket['WooCommerceEventsTicketDisplayPrice']          = get_post_meta($WooCommerceEventsProductID, 'WooCommerceEventsTicketDisplayPrice', true);
  476.  
  477.                         $ticket['WooCommerceEventsTicketType']                  = $WooCommerceEventsTicketType;
  478.                         $ticket['WooCommerceEventsProductID']                   = $WooCommerceEventsProductID;
  479.                         $ticket['WooCommerceEventsTicketID']                    = $WooCommerceEventsTicketID;
  480.                        
  481.                         $ticketDetails = get_post($WooCommerceEventsProductID);
  482.  
  483.  
  484.                        
  485.  
  486.                         if(empty($ticket['name'])) {
  487.  
  488.                              $ticket['name'] = $ticketDetails->post_title;
  489.  
  490.                         }
  491.  
  492.                         $timestamp                                              = time();
  493.                         $key                                                    = md5($WooCommerceEventsTicketID + $timestamp + $this->Config->salt);                              
  494.                         $ticket['cancelLink']                                   = get_site_url().'/wp-admin/admin-ajax.php?action=woocommerce_events_cancel&id='.$WooCommerceEventsTicketID.'&t='.$timestamp.'&k='.$key;
  495.  
  496.                         if($WooCommerceEventsCaptureAttendeeDetails === 'on') {
  497.  
  498.                             $ticket['customerFirstName']        = get_post_meta($ticketItem->ID, 'WooCommerceEventsAttendeeName', true);
  499.                             $ticket['customerLastName']         = '';
  500.  
  501.                         } else {
  502.  
  503.                             $ticket['customerFirstName']        = $customerDetails['customerFirstName'];
  504.                             $ticket['customerLastName']         = $customerDetails['customerLastName'];
  505.  
  506.                         }
  507.  
  508.                         $WooCommerceEventsAttendeeEmail = get_post_meta($ticketItem->ID, 'WooCommerceEventsAttendeeEmail', true);
  509.  
  510.                         //generate barcode
  511.                         if (!file_exists($this->Config->barcodePath.$ticket['WooCommerceEventsTicketID'].'.png')) {
  512.  
  513.                             $this->BarcodeHelper->generate_barcode($ticket['WooCommerceEventsTicketID']);
  514.  
  515.                         }
  516.                        
  517.                         if($WooCommerceEventsSentTicket != 'Yes' && $globalWooCommerceEventsEmailAttendees == 'yes') {
  518.  
  519.                             //email attendee
  520.                             $ticketBody = $this->MailHelper->parse_ticket_template($ticket);
  521.                             if(!empty($ticketBody)) {
  522.  
  523.                                 $body       = $header.$ticketBody.$footer;
  524.                                 $subject    = __('Ticket', 'woocommerce-events');
  525.                                 $fromEmail  = get_bloginfo('admin_email');  
  526.                                 $fromName   = get_bloginfo('name');
  527.                                 $from       = get_option( 'woocommerce_email_from_name' ).' <'.sanitize_email( get_option( 'woocommerce_email_from_address' ) ).'>';
  528.                                 $to         = $WooCommerceEventsAttendeeEmail;
  529.  
  530.                                 $headers = 'From: '.$from;
  531.                                
  532.                                 if(!empty($ticketBody) && $WooCommerceEventsSendEmailTickets != 'off') {
  533.  
  534.                                     //$sendMail = wp_mail($to, $subject, $body, $headers);
  535.                                     //if($this->MailHelper->send_ticket($to, $subject, $body, $headers)) {
  536.  
  537.                                     //}
  538.                                     $this->MailHelper->send_ticket($to, $subject, $body, $headers);
  539.                                 }
  540.  
  541.  
  542.  
  543.                             }
  544.  
  545.                             $ticketBody = '';
  546.  
  547.                         } else {
  548.  
  549.                             //email tickets to purchaser later
  550.                             $ticketBody .= $this->MailHelper->parse_ticket_template($ticket);
  551.  
  552.                         }
  553.  
  554.                         $WooCommerceEventsTicketsPurchased[$WooCommerceEventsProductID] = $WooCommerceEventsTicketsPurchased[$WooCommerceEventsProductID] - 1;
  555.  
  556.                     }
  557.                 }
  558.                
  559.             }
  560.            
  561.             if($WooCommerceEventsSentTicket != 'Yes' && $globalWooCommerceEventsEmailAttendees != 'yes') {
  562.                
  563.                 //email purchaser
  564.  
  565.                 $body       = $header.$ticketBody.$footer;
  566.                 $subject    = '[#'.$order_id.']'.__('Tickets', 'woocommerce-events');
  567.                 $fromEmail  = get_bloginfo('admin_email');  
  568.                 $fromName   = get_bloginfo('name');
  569.                 $from       = get_option( 'woocommerce_email_from_name' ).' <'.sanitize_email( get_option( 'woocommerce_email_from_address' ) ).'>';
  570.                 $to         = $customerDetails['customerEmail'];
  571.  
  572.                 $headers = 'From: '.$from;
  573.                
  574.                 if(!empty($ticketBody) && $WooCommerceEventsSendEmailTickets != 'off') {
  575.  
  576.                     //$sendMail = wp_mail($to, $subject, $body, $headers);
  577.                     $this->MailHelper->send_ticket($to, $subject, $body, $headers);
  578.  
  579.                 }
  580.  
  581.  
  582.             }
  583.            
  584.             update_post_meta($order_id, 'WooCommerceEventsSentTicket', 'Yes');
  585.             /*echo $body;
  586.             echo 'Processed: '.time();
  587.             exit();*/
  588.          
  589.             /*set_time_limit(0);
  590.          
  591.             global $woocommerce;
  592.            
  593.             $order = new WC_Order( $order_id );
  594.             $tickets = $order->get_items();
  595.            
  596.             $WooCommerceEventsTicketsPurchased = get_post_meta($order_id, 'WooCommerceEventsTicketsPurchased', true);
  597.             $WooCommerceEventsTicketsPurchased = json_decode($WooCommerceEventsTicketsPurchased, true);
  598.  
  599.             $customer = get_post_meta($order_id, '_customer_user', true);
  600.             $usermeta = get_user_meta($customer);
  601.            
  602.             $WooCommerceEventsSentTicket        =  get_post_meta($order_id, 'WooCommerceEventsSentTicket', true);
  603.            
  604.             $tickets = new WP_Query( array('post_type' => array('event_magic_tickets'), 'posts_per_page' => -1, 'meta_query' => array( array( 'key' => 'WooCommerceEventsOrderID', 'value' => $order_id ) )) );
  605.             $tickets = $tickets->get_posts();
  606.            
  607.            
  608.             $body = '';
  609.             $header = $this->MailHelper->parse_email_template('header.php', array());
  610.             $footer = $this->MailHelper->parse_email_template('footer.php', array());
  611.             $ticketBody = '';
  612.            
  613.             $globalWooCommerceEventsEmailAttendees = get_option('globalWooCommerceEventsEmailAttendees', true);
  614.            
  615.             foreach ($tickets as $ticketItem) {
  616.                
  617.                 $WooCommerceEventsProductID                 = get_post_meta($ticketItem->ID, 'WooCommerceEventsProductID', true);
  618.                 $WooCommerceEventsTicketType                = get_post_meta($ticketItem->ID, 'WooCommerceEventsTicketType', true);
  619.                 $WooCommerceEventsTicketID                  = get_post_meta($ticketItem->ID, 'WooCommerceEventsTicketID', true);
  620.                 $WooCommerceEventsStatus                    = get_post_meta($ticketItem->ID, 'WooCommerceEventsStatus', true);
  621.                 $ticket['WooCommerceEventsVariations']      = json_decode(get_post_meta($ticketItem->ID, 'WooCommerceEventsVariations', true));
  622.                 $WooCommerceEventsEvent                     = get_post_meta($WooCommerceEventsProductID, 'WooCommerceEventsEvent', true);
  623.                 $WooCommerceEventsCaptureAttendeeDetails    = get_post_meta($WooCommerceEventsProductID, 'WooCommerceEventsCaptureAttendeeDetails', true);
  624.                 $WooCommerceEventsSendEmailTickets          = get_post_meta($WooCommerceEventsProductID, 'WooCommerceEventsSendEmailTickets', true);
  625.                
  626.                 $product = get_post($WooCommerceEventsProductID);
  627.                
  628.                 if($WooCommerceEventsTicketsPurchased[$WooCommerceEventsProductID] > 0) {
  629.                    
  630.                    
  631.                     if($WooCommerceEventsEvent == 'Event') {
  632.                        
  633.                        
  634.                         //update ticket as paid
  635.                         if($WooCommerceEventsStatus == 'Unpaid') {
  636.  
  637.                             update_post_meta($ticketItem->ID, 'WooCommerceEventsStatus', 'Not Checked In');
  638.  
  639.                         }
  640.                        
  641.                         //ticket details for email
  642.                         $ticket['WooCommerceEventsEvent']                       = get_post_meta($WooCommerceEventsProductID, 'WooCommerceEventsEvent', true);
  643.                         $ticket['WooCommerceEventsDate']                        = get_post_meta($WooCommerceEventsProductID, 'WooCommerceEventsDate', true);
  644.                         $ticket['WooCommerceEventsHour']                        = get_post_meta($WooCommerceEventsProductID, 'WooCommerceEventsHour', true);
  645.                         $ticket['WooCommerceEventsMinutes']                     = get_post_meta($WooCommerceEventsProductID, 'WooCommerceEventsMinutes', true);
  646.                         $ticket['WooCommerceEventsHourEnd']                     = get_post_meta($WooCommerceEventsProductID, 'WooCommerceEventsHourEnd', true);
  647.                         $ticket['WooCommerceEventsMinutesEnd']                  = get_post_meta($WooCommerceEventsProductID, 'WooCommerceEventsMinutesEnd', true);
  648.                         $ticket['WooCommerceEventsLocation']                    = get_post_meta($WooCommerceEventsProductID, 'WooCommerceEventsLocation', true);
  649.                         $ticket['WooCommerceEventsTicketLogo']                  = get_post_meta($WooCommerceEventsProductID, 'WooCommerceEventsTicketLogo', true);
  650.                         $ticket['WooCommerceEventsSupportContact']              = get_post_meta($WooCommerceEventsProductID, 'WooCommerceEventsSupportContact', true);
  651.                         $ticket['WooCommerceEventsTicketBackgroundColor']       = get_post_meta($WooCommerceEventsProductID, 'WooCommerceEventsTicketBackgroundColor', true);
  652.                         $ticket['WooCommerceEventsTicketButtonColor']           = get_post_meta($WooCommerceEventsProductID, 'WooCommerceEventsTicketButtonColor', true);
  653.                         $ticket['WooCommerceEventsTicketPurchaserDetails']      = get_post_meta($WooCommerceEventsProductID, 'WooCommerceEventsTicketPurchaserDetails', true);
  654.                         $ticket['WooCommerceEventsTicketAddCalendar']           = get_post_meta($WooCommerceEventsProductID, 'WooCommerceEventsTicketAddCalendar', true);
  655.                         $ticket['WooCommerceEventsTicketDisplayDateTime']       = get_post_meta($WooCommerceEventsProductID, 'WooCommerceEventsTicketDisplayDateTime', true);
  656.                         $ticket['WooCommerceEventsTicketText']                  = get_post_meta($WooCommerceEventsProductID, 'WooCommerceEventsTicketText', true);
  657.                         $ticket['WooCommerceEventsDirections']                  = get_post_meta($WooCommerceEventsProductID, 'WooCommerceEventsDirections', true);
  658.  
  659.                         $ticket['WooCommerceEventsTicketType']                  = $WooCommerceEventsTicketType;
  660.                         $ticket['WooCommerceEventsProductID']                   = $WooCommerceEventsProductID;
  661.                         $ticket['WooCommerceEventsTicketID']                    = $WooCommerceEventsTicketID;
  662.                         $ticket['name']                                         = $product->post_title;
  663.  
  664.                         $timestamp                                              = time();
  665.                         $key                                                    = md5($WooCommerceEventsTicketID + $timestamp + $this->Config->salt);                              
  666.                         $ticket['cancelLink']                                   = get_site_url().'/wp-admin/admin-ajax.php?action=woocommerce_events_cancel&id='.$WooCommerceEventsTicketID.'&t='.$timestamp.'&k='.$key;
  667.                        
  668.                        
  669.                        
  670.                        
  671.                     }
  672.                    
  673.                    
  674.                 }
  675.                
  676.             }
  677.            
  678.             echo "<br />End.";
  679.             exit();*/
  680.            
  681.         }
  682.        
  683.         public function display_thank_you_text($thankYouText) {
  684.            
  685.             global $woocommerce;
  686.             global $post;
  687.            
  688.             $paged = get_query_var();
  689.            
  690.             $actualLink = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
  691.             $segments = array_reverse(explode('/', $actualLink));
  692.            
  693.             $orderID = $segments[1];
  694.             $order = new WC_Order($orderID);
  695.             $items = $order->get_items();
  696.            
  697.             $products = array();
  698.            
  699.             foreach($items as $item) {
  700.                
  701.                 $products[$item['product_id']] = $item['product_id'];
  702.                
  703.             }
  704.      
  705.             foreach($products as $key => $productID) {
  706.                
  707.                 $WooCommerceEventsThankYouText = get_post_meta($productID, 'WooCommerceEventsThankYouText', true);
  708.                
  709.                 if(!empty($WooCommerceEventsThankYouText)) {
  710.                    
  711.                     echo $WooCommerceEventsThankYouText."<br/><br/>";
  712.                    
  713.                 }
  714.                
  715.             }
  716.            
  717.             return $thankYouText;
  718.            
  719.         }
  720.        
  721.         public function woocommerce_events_csv() {
  722.            
  723.             /*error_reporting(E_ALL);
  724.             ini_set('display_errors', '1');*/
  725.            
  726.             error_reporting(0);
  727.             ini_set('display_errors', 0);
  728.            
  729.             global $woocommerce;
  730.  
  731.             $event = $_GET['event'];
  732.            
  733.             $events_query = new WP_Query( array('post_type' => array('event_magic_tickets'), 'posts_per_page' => -1, 'meta_query' => array( array( 'key' => 'WooCommerceEventsProductID', 'value' => $event ) )) );
  734.             $events = $events_query->get_posts();
  735.             header('Content-type: text/csv');
  736.             header('Content-Disposition: attachment; filename="'.date("Ymdhis").'.csv"');
  737.            
  738.             $csvOutput = array();
  739.             foreach($events as $eventItem) {
  740.                
  741.                 $id = $eventItem->ID;
  742.                
  743.                 $order_id                           = get_post_meta($id, 'WooCommerceEventsOrderID', true);
  744.                 $customer_id                        = get_post_meta($id, 'WooCommerceEventsCustomerID', true);
  745.                 $WooCommerceEventsStatus            = get_post_meta($id, 'WooCommerceEventsStatus', true);
  746.                 $WooCommerceEventsVariations        = json_decode(get_post_meta($id, 'WooCommerceEventsVariations', true));
  747.                 $order = new WC_Order( $order_id );
  748.                
  749.                 $ticket = get_post($id);
  750.                 $ticketID = $ticket->post_title;
  751.                 $ticketType = get_post_meta($ticket->ID, 'WooCommerceEventsTicketType', true);
  752.                
  753.                 if(empty($customer_id)) {
  754.                    
  755.                     $customer_id = $ticket->post_author;
  756.                    
  757.                 }
  758.                
  759.                 $purchaser = get_user_meta($customer_id);
  760.                 $orderID = get_post_meta($ticket->ID, 'WooCommerceEventsOrderID', true);
  761.                
  762.                 $order = new WC_Order( $orderID );
  763.                 $fp = fopen('php://output', 'w');
  764.                
  765.                 $csvListName = '';
  766.                 $csvListLastName = '';
  767.                 $WooCommerceEventsAttendeeName                      = get_post_meta($ticket->ID, 'WooCommerceEventsAttendeeName', true);
  768.                 $WooCommerceEventsAttendeeLastName                  = get_post_meta($ticket->ID, 'WooCommerceEventsAttendeeLastName', true);
  769.                 $WooCommerceEventsCaptureAttendeeTelephone          = get_post_meta($ticket->ID, 'WooCommerceEventsAttendeeTelephone', true);
  770.                 $WooCommerceEventsCaptureAttendeeCompany            = get_post_meta($ticket->ID, 'WooCommerceEventsAttendeeCompany', true);
  771.                 $WooCommerceEventsCaptureAttendeeDesignation        = get_post_meta($ticket->ID, 'WooCommerceEventsAttendeeDesignation', true);
  772.                
  773.                 if(empty($WooCommerceEventsAttendeeName)) {
  774.                    
  775.                     $csvListName = $order->billing_first_name;
  776.                    
  777.                 } else {
  778.                    
  779.                     $csvListName = $WooCommerceEventsAttendeeName;
  780.  
  781.                 }    
  782.                
  783.                 if(empty($WooCommerceEventsAttendeeLastName)) {
  784.                    
  785.                     $csvListLastName = $order->billing_last_name;
  786.                    
  787.                 } else {
  788.                    
  789.                      $csvListLastName = $WooCommerceEventsAttendeeLastName;
  790.                    
  791.                 }
  792.                
  793.                 $csvListEmail = '';
  794.                 $WooCommerceEventsAttendeeEmail = get_post_meta($ticket->ID, 'WooCommerceEventsAttendeeEmail', true);
  795.                
  796.                 if(empty($WooCommerceEventsAttendeeEmail)) {
  797.                    
  798.                     $csvListEmail = $order->billing_email;
  799.                    
  800.                 } else {
  801.                    
  802.                     $csvListEmail = $WooCommerceEventsAttendeeEmail;
  803.  
  804.                 }
  805.                
  806.                 if(!empty($order->post->post_status)) {
  807.                
  808.                     if($order->post->post_status == 'wc-partially-paid' && $WooCommerceEventsStatus != 'Unpaid') {
  809.  
  810.                         $variationOutput = '';
  811.                         $i = 0;
  812.                         if(!empty($WooCommerceEventsVariations)) {
  813.                             foreach($WooCommerceEventsVariations as $variationName => $variationValue) {
  814.  
  815.                                 if($i > 0) {
  816.  
  817.                                     $variationOutput .= ' | ';
  818.  
  819.                                 }
  820.                                
  821.                                 $variationNameOutput = str_replace('attribute_', '', $variationName);
  822.                                 $variationNameOutput = str_replace('pa_', '', $variationNameOutput);
  823.                                 $variationNameOutput = str_replace('_', ' ', $variationNameOutput);
  824.                                 $variationNameOutput = str_replace('-', ' ', $variationNameOutput);
  825.                                 $variationNameOutput = str_replace('Pa_', '', $variationNameOutput);
  826.                                 $variationNameOutput = ucwords($variationNameOutput);
  827.                                
  828.                                 $variationValueOutput = str_replace('_', ' ', $variationValue);
  829.                                 $variationValueOutput = str_replace('-', ' ', $variationValueOutput);
  830.                                 $variationValueOutput = ucwords($variationValueOutput);
  831.                                
  832.                                 $variationOutput .= $variationNameOutput.': '.$variationValueOutput;
  833.  
  834.                                 $i++;
  835.                             }
  836.                         }
  837.                         $csvOutput[] = array($ticketID, $csvListName, $csvListLastName, $csvListEmail, $WooCommerceEventsStatus, $ticketType, $variationOutput, $WooCommerceEventsCaptureAttendeeTelephone, $WooCommerceEventsCaptureAttendeeCompany, $WooCommerceEventsCaptureAttendeeDesignation);
  838.                     }
  839.                
  840.                 }
  841.                
  842.             }
  843.             if(empty($csvOutput)) {
  844.  
  845.                 $csvOutput[] = array(__('No tickets found.', 'woocommerce-events'));
  846.  
  847.             }
  848.  
  849.             foreach ($csvOutput as $fields) {
  850.  
  851.                 fputcsv($fp, $fields);
  852.  
  853.             }
  854.  
  855.             fclose($fp);
  856.  
  857.             exit();
  858.         }
  859.  
  860.     /**
  861.          * Outputs notices to screen.
  862.          *
  863.          * @param array $notices
  864.          */
  865.     private function output_notices($notices) {
  866.    
  867.             foreach ($notices as $notice) {
  868.  
  869.                     echo "<div class='updated'><p>$notice</p></div>";
  870.  
  871.             }
  872.    
  873.     }
  874.  
  875. }
  876.  
  877.  
  878. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement