2018-02-27 06:37:04 -05:00
< ? php
2018-12-02 00:45:21 -05:00
function mep_add_custom_fields_text_to_cart_item ( $cart_item_data , $product_id , $variation_id ){
2019-12-10 02:51:49 -05:00
$product_id = get_post_meta ( $product_id , 'link_mep_event' , true ) ? get_post_meta ( $product_id , 'link_mep_event' , true ) : $product_id ;
2019-11-04 06:24:02 -05:00
if ( get_post_type ( $product_id ) == 'mep_events' ) {
2018-07-02 04:39:41 -04:00
$tp = get_post_meta ( $product_id , '_price' , true );
2018-12-02 00:45:21 -05:00
2018-07-02 04:39:41 -04:00
$new = array ();
2018-08-16 08:19:34 -04:00
2019-03-25 06:17:44 -04:00
if ( isset ( $_POST [ 'mep_event_location_cart' ])){
$event_cart_location = $_POST [ 'mep_event_location_cart' ];
} else { $event_cart_location = " " ; }
2018-08-16 08:19:34 -04:00
2019-03-25 06:17:44 -04:00
if ( isset ( $_POST [ 'mep_event_date_cart' ])){
$event_cart_date = $_POST [ 'mep_event_date_cart' ];
} else { $event_cart_date = " " ; }
2018-08-16 08:19:34 -04:00
2019-12-10 02:51:49 -05:00
if ( isset ( $_POST [ 'mep_event_start_date' ])){
$mep_event_start_date = $_POST [ 'mep_event_start_date' ];
} else { $mep_event_start_date = " " ; }
2019-03-25 06:17:44 -04:00
if ( isset ( $_POST [ 'event_addt_price' ])){
$checked = $_POST [ 'event_addt_price' ];
} else { $checked = " " ; }
2018-08-16 08:19:34 -04:00
2019-12-10 02:51:49 -05:00
if ( isset ( $_POST [ 'option_name' ])){
2019-03-25 06:17:44 -04:00
$names = $_POST [ 'option_name' ];
} else { $names = array (); }
2018-08-16 08:19:34 -04:00
2019-03-25 06:17:44 -04:00
if ( isset ( $_POST [ 'option_qty' ])){
$qty = $_POST [ 'option_qty' ];
2020-01-29 06:45:33 -05:00
} else { $qty = " " ; }
if ( isset ( $_POST [ 'max_qty' ])){
$max_qty = $_POST [ 'max_qty' ];
} else { $max_qty = " " ; }
2018-08-16 08:19:34 -04:00
2019-03-25 06:17:44 -04:00
if ( isset ( $_POST [ 'option_price' ])){
$price = $_POST [ 'option_price' ];
} else { $price = " " ; }
2018-08-16 08:19:34 -04:00
2018-07-02 04:39:41 -04:00
$count = count ( $names );
2018-08-16 08:19:34 -04:00
if ( isset ( $_POST [ 'option_name' ])){
2018-07-02 04:39:41 -04:00
for ( $i = 0 ; $i < $count ; $i ++ ) {
if ( $names [ $i ] != '' ) :
$new [ $i ][ 'option_name' ] = stripslashes ( strip_tags ( $names [ $i ] ) );
endif ;
if ( $price [ $i ] != '' ) :
$new [ $i ][ 'option_price' ] = stripslashes ( strip_tags ( $price [ $i ] ) );
endif ;
if ( $qty [ $i ] != '' ) :
$new [ $i ][ 'option_qty' ] = stripslashes ( strip_tags ( $qty [ $i ] ) );
endif ;
2020-01-29 06:45:33 -05:00
if ( $max_qty [ $i ] != '' ) :
$new [ $i ][ 'max_qty' ] = stripslashes ( strip_tags ( $max_qty [ $i ] ) );
endif ;
2018-07-02 04:39:41 -04:00
$opttprice = ( $price [ $i ] * $qty [ $i ]);
$tp = ( $tp + $opttprice );
}
2018-08-16 08:19:34 -04:00
}
2018-02-27 06:37:04 -05:00
2020-01-29 06:45:33 -05:00
$extra_service_name = isset ( $_POST [ 'event_extra_service_name' ]) ? mage_array_strip ( $_POST [ 'event_extra_service_name' ]) : array ();
$extra_service_qty = isset ( $_POST [ 'event_extra_service_qty' ]) ? mage_array_strip ( $_POST [ 'event_extra_service_qty' ]) : array ();
$extra_service_price = isset ( $_POST [ 'event_extra_service_price' ]) ? mage_array_strip ( $_POST [ 'event_extra_service_price' ]) : array ();
if ( $extra_service_name ){
for ( $i = 0 ; $i < count ( $extra_service_name ); $i ++ ) {
if ( $extra_service_qty [ $i ] > 0 ){
if ( $extra_service_name [ $i ] != '' ) :
$event_extra [ $i ][ 'service_name' ] = stripslashes ( strip_tags ( $extra_service_name [ $i ] ) );
endif ;
if ( $extra_service_price [ $i ] != '' ) :
$event_extra [ $i ][ 'service_price' ] = stripslashes ( strip_tags ( $extra_service_price [ $i ] ) );
endif ;
if ( $extra_service_qty [ $i ] != '' ) :
$event_extra [ $i ][ 'service_qty' ] = stripslashes ( strip_tags ( $extra_service_qty [ $i ] ) );
endif ;
}
$extprice = ( $extra_service_price [ $i ] * $extra_service_qty [ $i ]);
$tp = ( $tp + $extprice );
}
}
2018-07-02 04:39:41 -04:00
2018-08-16 08:19:34 -04:00
if ( isset ( $_POST [ 'mep_event_ticket_type' ])){
2019-03-25 06:17:44 -04:00
$ttp = $_POST [ 'mep_event_ticket_type' ];
$ttpqt = $_POST [ 'tcp_qty' ];
$ticket_type = mep_get_order_info ( $ttp , 1 );
$ticket_type_price = ( mep_get_order_info ( $ttp , 0 ) * $ttpqt );
$cart_item_data [ 'event_ticket_type' ] = $ticket_type ;
2018-07-02 04:39:41 -04:00
$cart_item_data [ 'event_ticket_price' ] = $ticket_type_price ;
2019-03-25 06:17:44 -04:00
$cart_item_data [ 'event_ticket_qty' ] = $ttpqt ;
$tp = $tp + $ticket_type_price ;
2018-07-02 04:39:41 -04:00
}
2020-01-29 06:45:33 -05:00
2019-03-25 06:17:44 -04:00
$form_position = mep_get_option ( 'mep_user_form_position' , 'general_attendee_sec' , 'details_page' );
if ( $form_position == 'details_page' ){
$user = mep_save_attendee_info_into_cart ( $product_id );
} else {
$user = '' ;
}
2018-07-02 04:39:41 -04:00
2019-09-15 08:03:06 -04:00
2019-12-10 02:51:49 -05:00
$mep_event_ticket_type = get_post_meta ( $product_id , 'mep_event_ticket_type' , true ) ? get_post_meta ( $product_id , 'mep_event_ticket_type' , true ) : array ();
2019-09-15 08:03:06 -04:00
$cnt = 0 ;
2019-12-18 02:01:50 -05:00
$vald = 0 ;
2019-09-15 08:03:06 -04:00
$ticket_type_arr = array ();
2019-12-10 02:51:49 -05:00
if ( is_array ( $mep_event_ticket_type ) && sizeof ( $mep_event_ticket_type ) > 0 ){
2019-09-15 08:03:06 -04:00
foreach ( $mep_event_ticket_type as $_type ){
// echo $_type['option_name_t'];
$cart_arr = $new [ $cnt ];
// print_r($cart_arr);
2019-10-07 00:39:24 -04:00
$name_key = array_search ( $_type [ 'option_name_t' ], $cart_arr );
2019-09-15 08:03:06 -04:00
$qty_key = array_search ( $_type [ 'option_qty_t' ], $cart_arr );
2019-10-07 00:39:24 -04:00
if ( is_array ( $name_key )){
$total_found = count ( $name_key );
} else {
$total_found = 0 ;
}
2019-09-15 08:03:06 -04:00
if ( $cart_arr [ 'option_qty' ] > 0 ){
2019-12-10 02:51:49 -05:00
$ticket_type_arr [ $cnt ][ 'ticket_name' ] = stripslashes ( strip_tags ( $cart_arr [ $name_key ] ) );
$ticket_type_arr [ $cnt ][ 'ticket_qty' ] = stripslashes ( strip_tags ( $cart_arr [ 'option_qty' ] ) );
2019-09-15 08:03:06 -04:00
$ticket_type_arr [ $cnt ][ 'ticket_price' ] = stripslashes ( strip_tags ( $cart_arr [ 'option_price' ] ) );
2019-12-10 02:51:49 -05:00
$ticket_type_arr [ $cnt ][ 'event_date' ] = stripslashes ( strip_tags ( $mep_event_start_date ) );
2019-12-18 02:01:50 -05:00
$validate [ $cnt ][ 'ticket_qty' ] = $vald + stripslashes ( strip_tags ( $cart_arr [ 'option_qty' ] ) );
$validate [ $cnt ][ 'event_id' ] = stripslashes ( strip_tags ( $product_id ) );
2019-09-15 08:03:06 -04:00
}
$cnt ++ ;
}
2019-12-10 02:51:49 -05:00
}
2019-11-04 06:24:02 -05:00
$cart_item_data [ 'event_ticket_info' ] = $ticket_type_arr ;
2019-12-18 02:01:50 -05:00
$cart_item_data [ 'event_validate_info' ] = $validate ;
2019-02-18 23:30:58 -05:00
$cart_item_data [ 'event_extra_option' ] = $new ;
$cart_item_data [ 'event_user_info' ] = $user ;
$cart_item_data [ 'event_tp' ] = $tp ;
$cart_item_data [ 'line_total' ] = $tp ;
$cart_item_data [ 'line_subtotal' ] = $tp ;
2020-01-29 06:45:33 -05:00
$cart_item_data [ 'event_extra_service' ] = $event_extra ;
2019-02-18 23:30:58 -05:00
$cart_item_data [ 'event_cart_location' ] = $event_cart_location ;
2019-12-10 02:51:49 -05:00
$cart_item_data [ 'event_cart_date' ] = $mep_event_start_date ;
// $cart_item_data['event_cart_date'] = $event_cart_date;
2019-11-04 06:24:02 -05:00
}
$cart_item_data [ 'event_id' ] = $product_id ;
2019-09-15 08:03:06 -04:00
2018-02-27 06:37:04 -05:00
return $cart_item_data ;
}
2019-12-10 02:51:49 -05:00
add_filter ( 'woocommerce_add_cart_item_data' , 'mep_add_custom_fields_text_to_cart_item' , 90 , 3 );
2018-02-27 06:37:04 -05:00
2019-12-10 02:51:49 -05:00
add_action ( 'woocommerce_before_calculate_totals' , 'add_custom_price' , 90 , 1 );
2018-02-27 06:37:04 -05:00
function add_custom_price ( $cart_object ) {
2018-12-02 00:45:21 -05:00
2019-12-10 02:51:49 -05:00
foreach ( $cart_object -> cart_contents as $key => $value ) {
2018-12-02 02:22:21 -05:00
$eid = $value [ 'event_id' ];
if ( get_post_type ( $eid ) == 'mep_events' ) {
2018-02-27 06:37:04 -05:00
$cp = $value [ 'event_tp' ];
$value [ 'data' ] -> set_price ( $cp );
2019-09-15 08:03:06 -04:00
$value [ 'data' ] -> set_regular_price ( $cp );
$value [ 'data' ] -> set_sale_price ( $cp );
$value [ 'data' ] -> set_sold_individually ( 'yes' );
2018-02-27 06:37:04 -05:00
$new_price = $value [ 'data' ] -> get_price ();
}
2018-12-02 02:22:21 -05:00
}
2018-02-27 06:37:04 -05:00
}
2018-07-02 04:39:41 -04:00
2018-02-27 06:37:04 -05:00
function mep_display_custom_fields_text_cart ( $item_data , $cart_item ) {
2018-07-02 04:39:41 -04:00
$mep_events_extra_prices = $cart_item [ 'event_extra_option' ];
2018-12-20 00:56:29 -05:00
// print_r($cart_item);
2019-04-10 07:36:55 -04:00
$eid = $cart_item [ 'event_id' ];
2019-09-15 08:03:06 -04:00
2019-12-10 02:51:49 -05:00
if ( get_post_type ( $eid ) == 'mep_events' ) {
$user_info = $cart_item [ 'event_user_info' ];
$ticket_type_arr = $cart_item [ 'event_ticket_info' ];
2020-01-29 06:45:33 -05:00
$event_extra_service = $cart_item [ 'event_extra_service' ];
2019-12-18 02:01:50 -05:00
2018-02-27 06:37:04 -05:00
echo " <ul class='event-custom-price'> " ;
2020-01-05 07:29:22 -05:00
if ( is_array ( $user_info ) && sizeof ( $user_info ) > 0 ){
2019-12-10 02:51:49 -05:00
foreach ( $user_info as $userinf ){
?>
< li >< ? php _e ( 'Event Date' , 'mage-eventpress' ); ?> : <?php echo date('D, d M Y',strtotime($userinf['user_event_date'])); ?></li>
< ? php
}
} else {
?>
< li >< ? php _e ( 'Event Date' , 'mage-eventpress' ); ?> : <?php echo date('D, d M Y',strtotime($cart_item['event_cart_date'])); ?></li>
< ? php
}
2019-02-18 23:30:58 -05:00
?>
2019-03-25 06:17:44 -04:00
< li >< ? php _e ( 'Event Location' , 'mage-eventpress' ); ?> : <?php echo $cart_item['event_cart_location']; //echo $cart_item['event_ticket_type']; ?></li>
2019-02-18 23:30:58 -05:00
< ? php
2020-01-29 06:45:33 -05:00
if ( is_array ( $ticket_type_arr ) && sizeof ( $ticket_type_arr ) > 0 ){
foreach ( $ticket_type_arr as $ticket ){
echo '<li>' . $ticket [ 'ticket_name' ] . " - " . wc_price ( $ticket [ 'ticket_price' ]) . ' x ' . $ticket [ 'ticket_qty' ] . ' = ' . wc_price ( $ticket [ 'ticket_price' ] * $ticket [ 'ticket_qty' ]) . '</li>' ;
2019-12-10 02:51:49 -05:00
}
2018-07-02 04:39:41 -04:00
}
2020-01-29 06:45:33 -05:00
if ( is_array ( $event_extra_service ) && sizeof ( $event_extra_service ) > 0 ){
foreach ( $event_extra_service as $extra_service ){
echo '<li>' . $extra_service [ 'service_name' ] . " - " . wc_price ( $extra_service [ 'service_price' ]) . ' x ' . $extra_service [ 'service_qty' ] . ' = ' . wc_price ( $extra_service [ 'service_price' ] * $extra_service [ 'service_qty' ]) . '</li>' ;
}
2018-07-02 04:39:41 -04:00
}
2020-01-29 06:45:33 -05:00
2019-12-10 02:51:49 -05:00
echo " </ul> " ;
}
2018-02-27 06:37:04 -05:00
return $item_data ;
2018-07-02 04:39:41 -04:00
}
2019-12-10 02:51:49 -05:00
add_filter ( 'woocommerce_get_item_data' , 'mep_display_custom_fields_text_cart' , 90 , 2 );
2018-02-27 06:37:04 -05:00
2018-07-02 04:39:41 -04:00
2019-12-18 02:01:50 -05:00
add_action ( 'woocommerce_after_checkout_validation' , 'mep_checkout_validation' );
function mep_checkout_validation ( $posted ) {
global $woocommerce ;
$items = $woocommerce -> cart -> get_cart ();
foreach ( $items as $item => $values ) {
$event_id = $values [ 'event_id' ];
$total_seat = mep_event_total_seat ( $event_id , 'total' );
$total_resv = mep_event_total_seat ( $event_id , 'resv' );
$total_sold = mep_ticket_sold ( $event_id );
$total_left = $total_seat - ( $total_sold + $total_resv );
;
$event_validate_info = $values [ 'event_validate_info' ];
$ee = 0 ;
foreach ( $event_validate_info as $inf ){
$ee = $ee + $inf [ 'ticket_qty' ];
}
if ( $ee > $total_left ) {
$event = get_the_title ( $event_id );
wc_add_notice ( __ ( " Sorry, Seats are not available in <b> $event </b>, Available Seats <b> $total_left </b> but you selected <b> $ee </b> " , 'mage-eventpress' ), 'error' );
}
}
}
2018-07-02 04:39:41 -04:00
2018-02-27 06:37:04 -05:00
function mep_add_custom_fields_text_to_order_items ( $item , $cart_item_key , $values , $order ) {
2019-03-25 06:17:44 -04:00
$eid = $values [ 'event_id' ];
2018-12-02 02:22:21 -05:00
if ( get_post_type ( $eid ) == 'mep_events' ) {
2020-01-29 06:45:33 -05:00
$mep_events_extra_prices = $values [ 'event_extra_option' ];
2019-04-10 07:36:55 -04:00
if ( isset ( $values [ 'event_ticket_type' ])){
2019-12-10 02:51:49 -05:00
$event_ticket_type = $values [ 'event_ticket_type' ];
2019-04-10 07:36:55 -04:00
} else {
2019-12-10 02:51:49 -05:00
$event_ticket_type = " " ;
2019-04-10 07:36:55 -04:00
}
if ( isset ( $values [ 'event_ticket_price' ])){
2019-12-10 02:51:49 -05:00
$event_ticket_price = $values [ 'event_ticket_price' ];
2019-04-10 07:36:55 -04:00
} else {
2019-12-10 02:51:49 -05:00
$event_ticket_price = " " ;
2019-04-10 07:36:55 -04:00
}
if ( isset ( $values [ 'event_ticket_qty' ])){
2019-12-10 02:51:49 -05:00
$event_ticket_qty = $values [ 'event_ticket_qty' ];
2019-04-10 07:36:55 -04:00
} else {
2019-12-10 02:51:49 -05:00
$event_ticket_qty = " " ;
2019-04-10 07:36:55 -04:00
}
2020-01-15 05:31:41 -05:00
$user_set_format = mep_get_option ( 'mep_event_time_format' , 'general_setting_sec' , 12 );
$date_format = get_option ( 'date_format' );
$time_format = get_option ( 'time_format' );
$wpdatesettings = $date_format . ' ' . $time_format ;
if ( $user_set_format == 12 ){
$cart_date = date_i18n ( 'Y-m-d h:i A' , strtotime ( $values [ 'event_cart_date' ] ) );
} elseif ( $user_set_format == 24 ){
$cart_date = date_i18n ( 'Y-m-d H:i' , strtotime ( $values [ 'event_cart_date' ] ) );
} elseif ( $user_set_format == 'wtss' ){
$cart_date = date_i18n ( $wpdatesettings , strtotime ( $values [ 'event_cart_date' ] ) );
}
2019-12-10 02:51:49 -05:00
$product_id = $values [ 'product_id' ];
$cart_location = $values [ 'event_cart_location' ];
2020-01-29 06:45:33 -05:00
$event_extra_service = $values [ 'event_extra_service' ];
$ticket_type_arr = $values [ 'event_ticket_info' ];
2019-03-25 06:17:44 -04:00
$form_position = mep_get_option ( 'mep_user_form_position' , 'general_attendee_sec' , 'details_page' );
if ( $form_position == 'details_page' ){
$event_user_info = $values [ 'event_user_info' ];
} else {
$event_user_info = mep_save_attendee_info_into_cart ( $eid );
}
2019-02-18 23:30:58 -05:00
2020-01-15 05:31:41 -05:00
$item -> add_meta_data ( 'Date' , $cart_date );
2019-02-18 23:30:58 -05:00
2019-12-10 02:51:49 -05:00
$item -> add_meta_data ( 'Location' , $cart_location );
$item -> add_meta_data ( '_event_ticket_info' , $values [ 'event_ticket_info' ]);
2019-02-18 23:30:58 -05:00
2020-01-29 06:45:33 -05:00
// if (is_array($mep_events_extra_prices) || is_object($mep_events_extra_prices)){
// foreach ( $mep_events_extra_prices as $field ) {
// if($field['option_qty']>0){
// $item->add_meta_data(esc_attr( $field['option_name'] )." x ".$field['option_qty'], wc_price($field['option_qty'] *$field['option_price'] ) );
// // $opt_name = $product_id.str_replace(' ', '', $field['option_name']);
// // $opt_qty = $field['option_qty'];
// // $tes = get_post_meta($product_id,"mep_xtra_$opt_name",true);
// // $ntes = ($tes+$opt_qty);
// // update_post_meta( $product_id, "mep_xtra_$opt_name",$ntes);
// }
// }
// }
if ( is_array ( $ticket_type_arr ) && sizeof ( $ticket_type_arr ) > 0 ){
foreach ( $ticket_type_arr as $ticket ){
$ticket_type_name = $ticket [ 'ticket_name' ] . " - " . wc_price ( $ticket [ 'ticket_price' ]) . ' x ' . $ticket [ 'ticket_qty' ] . ' = ' ;
$ticket_type_val = wc_price ( $ticket [ 'ticket_price' ] * $ticket [ 'ticket_qty' ]);
$item -> add_meta_data ( $ticket_type_name , $ticket_type_val );
}
}
if ( is_array ( $event_extra_service ) && sizeof ( $event_extra_service ) > 0 ){
foreach ( $event_extra_service as $extra_service ){
$service_type_name = $extra_service [ 'service_name' ] . " - " . wc_price ( $extra_service [ 'service_price' ]) . ' x ' . $extra_service [ 'service_qty' ] . ' = ' ;
$service_type_val = wc_price ( $extra_service [ 'service_price' ] * $extra_service [ 'service_qty' ]);
$item -> add_meta_data ( $service_type_name , $service_type_val );
2019-12-10 02:51:49 -05:00
}
2018-08-25 06:12:18 -04:00
}
2018-07-02 04:39:41 -04:00
2020-01-29 06:45:33 -05:00
2018-07-02 04:39:41 -04:00
if ( $event_ticket_type ){
2020-01-29 06:45:33 -05:00
} else {
2019-12-10 02:51:49 -05:00
$item -> add_meta_data ( '_event_ticket_type' , 'normal' );
2020-01-29 06:45:33 -05:00
}
2019-12-10 02:51:49 -05:00
$item -> add_meta_data ( '_event_user_info' , $event_user_info );
$item -> add_meta_data ( '_no_of_ticket' , count ( $event_user_info ));
$item -> add_meta_data ( '_event_service_info' , $mep_events_extra_prices );
$item -> add_meta_data ( 'event_id' , $eid );
$item -> add_meta_data ( '_product_id' , $eid );
2020-01-29 06:45:33 -05:00
$item -> add_meta_data ( '_event_extra_service' , $event_extra_service );
2018-02-27 06:37:04 -05:00
}
2018-07-02 04:39:41 -04:00
}
2019-12-10 02:51:49 -05:00
add_action ( 'woocommerce_checkout_create_order_line_item' , 'mep_add_custom_fields_text_to_order_items' , 90 , 4 );