function delete_order($force_delete = true, $id = false) { $id = $id ? $id : $this->id; if ($force_delete) { wp_delete_post($id); } else { wp_trash_post($id); } //Delete associated ticket instances $args = array('post_type' => 'tc_tickets_instances', 'post_status' => 'any', 'post_parent' => $id); $ticket_instances = get_posts($args); foreach ($ticket_instances as $ticket_instance) { $ticket_instance_instance = new TC_Ticket_Instance($ticket_instance->ID); $ticket_instance_instance->delete_ticket_instance($force_delete); } }
function tc_ticket_instance_field_value($value = false, $field_value = false, $post_field_type = false, $col_field_id = false, $field_id = false) { //$value, $post_field_type, $var_name if ($field_id == 'order') { $parent_post = get_post_ancestors($value); $parent_post = isset($parent_post[0]) ? $parent_post[0] : 0; $order = new TC_Order($parent_post); $order_found = false; if (get_post_type($order->details->ID) == 'tc_orders') { $order_found = true; } $order_found = apply_filters('tc_order_found', $order_found, $order->details->ID); if ($order_found) { if (current_user_can('manage_orders_cap')) { $value = apply_filters('tc_ticket_instance_order_admin_url', '<a target="_blank" href="' . admin_url('edit.php?post_type=tc_events&page=tc_orders&action=details&ID=' . $order->details->ID) . '">' . $order->details->post_title . '</a>', $parent_post, $order->details->post_title); } else { $value = $order->details->post_title; } } else { $value = __('N/A', 'tc'); } } if ($field_id == 'event') { $value = tc_get_ticket_instance_event(false, false, $value); } if ($field_id == 'ticket_code') { $value = $field_value; } if ($field_id == 'ticket_type_id') { $ticket_type = new TC_Ticket($field_value); $value = apply_filters('tc_checkout_owner_info_ticket_title', isset($ticket_type->details->post_title) ? $ticket_type->details->post_title : __('N/A', 'tc'), $field_value); } if ($field_id == 'ticket') { $value = '<a target="_blank" href="' . admin_url('edit.php?post_type=tc_events&page=' . $_GET['page'] . '&tc_preview&ticket_instance_id=' . $field_value) . '">' . __('View', 'tc') . '</a> | <a target="_top" href="' . admin_url('edit.php?post_type=tc_events&page=' . $_GET['page'] . '&tc_download&ticket_instance_id=' . $field_value) . '">' . __('Download', 'tc') . '</a>'; } if ($field_id == 'checkins') { $ticket_instance = new TC_Ticket_Instance($field_value); $checkins_pass = $ticket_instance->get_number_of_checkins('pass'); $checkins_fail = $ticket_instance->get_number_of_checkins('fail'); $value = '<a href="' . admin_url('edit.php?post_type=tc_events&page=tc_attendees&action=details&ID=' . $field_value) . '">'; $value .= '<span class="' . ($checkins_pass > 0 ? 'status_green' : '') . '">' . $checkins_pass . '</span>'; if ($checkins_fail > 0) { $value .= ' | <span class="status_red">' . $checkins_fail . '</span>'; } $value .= __(' Details', 'tc'); $value .= '</a>'; } if ($field_id == 'owner_name') { $owner_name = get_post_meta($value, 'first_name', true) . ' ' . get_post_meta($value, 'last_name', true); if (trim($owner_name) == '') { $parent_post = get_post_ancestors($value); $parent_post = isset($parent_post[0]) ? $parent_post[0] : 0; $order = new TC_Order($parent_post); $buyer_full_name = $order->details->tc_cart_info['buyer_data']['first_name_post_meta'] . ' ' . $order->details->tc_cart_info['buyer_data']['last_name_post_meta']; //$buyer_info = get_post_meta( $value, 'tc_cart_info', false ); if (trim($buyer_full_name) !== '') { $value = apply_filters('tc_ticket_buyer_name_element', $buyer_full_name, $parent_post); } else { $value = apply_filters('tc_ticket_buyer_name_element', '-', $parent_post); } } else { $value = $owner_name; } } return $value; }
</h2> <?php if (isset($message)) { ?> <div id="message" class="updated fade"><p><?php echo esc_attr($message); ?> </p></div> <?php } ?> <?php if (isset($_GET['action']) && $_GET['action'] == 'details' && isset($_GET['ID'])) { $ticket_instance = new TC_Ticket_Instance((int) $_GET['ID']); $ticket_type = new TC_Ticket($ticket_instance->details->ticket_type_id); $ticket_event_id = $ticket_type->get_ticket_event($ticket_instance->details->ticket_type_id); if (isset($_POST['api_key'])) { $api_key = new TC_API_Key($_POST['api_key']); $checkin = new TC_Checkin_API($api_key->details->api_key, apply_filters('tc_checkin_request_name', 'tickera_scan'), 'return', $ticket_instance->details->ticket_code, false); $checkin_result = $checkin->ticket_checkin(false); if ($checkin_result['status'] == 1) { $message_type = 'updated'; $message = __('Ticket checked in successfully.', 'tc'); } else { $message_type = 'error'; $message = __('Ticket expired.', 'tc'); } } $ticket_checkins = $ticket_instance->get_ticket_checkins();
function ticket_checkin($echo = true) { if ($this->get_api_key_id()) { $api_key_id = $this->get_api_key_id(); $ticket_id = ticket_code_to_id($this->ticket_code); if ($ticket_id) { $ticket_instance = new TC_Ticket_Instance($ticket_id); $ticket_type_id = apply_filters('tc_ticket_type_id', $ticket_instance->details->ticket_type_id); $ticket_type = new TC_Ticket($ticket_type_id); $order = new TC_Order($ticket_instance->details->post_parent); if ($order->details->post_status == 'order_paid') { $order_is_paid = true; } else { $order_is_paid = false; } $order_is_paid = apply_filters('tc_order_is_paid', $order_is_paid, $order->details->ID); if ($order_is_paid) { //all good, continue with check-in process } else { _e('Ticket does not exist', 'tc'); exit; } $ticket_event_id = $ticket_type->get_ticket_event($ticket_type_id); } else { _e('Ticket does not exist', 'tc'); exit; } if ($this->get_api_event() != $ticket_event_id) { //Only API key for the parent event can check-in this ticket if ($this->get_api_event() !== 'all') { if ($echo) { _e('Insufficient permissions. This API key cannot check-in this ticket.', 'tc'); } else { return 403; //error code for incufficient persmissions } exit; } } $check_ins = $ticket_instance->get_ticket_checkins(); $num_of_check_ins = apply_filters('tc_num_of_checkins', is_array($check_ins) ? count($check_ins) : 0); $available_checkins = get_post_meta($ticket_type_id, 'available_checkins_per_ticket', true); $alternate_available_checkins = get_post_meta($ticket_type_id, '_available_checkins_per_ticket', true); $available_checkins = !empty($available_checkins) ? $available_checkins : $alternate_available_checkins; $available_checkins = is_numeric($available_checkins) ? $available_checkins : 9999; //9999 means unlimited check-ins but it's set for easier comparation if ($available_checkins > $num_of_check_ins) { $check_in_status = apply_filters('tc_checkin_status_name', true); $check_in_status_bool = true; do_action('tc_check_in_notification', $ticket_id); } else { $check_in_status = apply_filters('tc_checkin_status_name', false); $check_in_status_bool = false; } $new_checkins = array(); if (is_array($check_ins)) { foreach ($check_ins as $check_in) { $new_checkins[] = $check_in; } } $new_checkin = array("date_checked" => time(), "status" => $check_in_status ? apply_filters('tc_checkin_status_name', 'Pass') : apply_filters('tc_checkin_status_name', 'Fail'), "api_key_id" => $api_key_id); $new_checkins[] = apply_filters('tc_new_checkin_array', $new_checkin); do_action('tc_before_checkin_array_update'); update_post_meta($ticket_id, "tc_checkins", $new_checkins); do_action('tc_after_checkin_array_update'); $payment_date = apply_filters('tc_checkin_payment_date', tc_format_date(apply_filters('tc_ticket_checkin_order_date', $order->details->tc_order_date, $order->details->ID))); //date_i18n( get_option( 'date_format' ) . ' ' . get_option( 'time_format' ), $order->details->tc_order_date, false ) if ($payment_date == '') { $payment_date = 'N/A'; } $name = apply_filters('tc_checkin_owner_name', $ticket_instance->details->first_name . ' ' . $ticket_instance->details->last_name); if (trim($name) == '') { $name = 'N/A'; } $address = apply_filters('tc_checkin_owner_address', $ticket_instance->details->address); if ($address == '') { $address = 'N/A'; } $city = apply_filters('tc_checkin_owner_city', $ticket_instance->details->city); if ($city == '') { $city = 'N/A'; } $state = apply_filters('tc_checkin_owner_state', $ticket_instance->details->state); if ($state == '') { $state = 'N/A'; } $country = apply_filters('tc_checkin_owner_country', $ticket_instance->details->country); if ($country == '') { $country = 'N/A'; } $data = array('status' => $check_in_status_bool, 'previous_status' => '', 'pass' => true, 'name' => $name, 'payment_date' => $payment_date, 'address' => $address, 'city' => $city, 'state' => $state, 'country' => $country, 'checksum' => $this->ticket_code); $buyer_full_name = isset($order->details->tc_cart_info['buyer_data']['first_name_post_meta']) ? $order->details->tc_cart_info['buyer_data']['first_name_post_meta'] . ' ' . $order->details->tc_cart_info['buyer_data']['last_name_post_meta'] : ''; $buyer_email = isset($order->details->tc_cart_info['buyer_data']['email_post_meta']) ? $order->details->tc_cart_info['buyer_data']['email_post_meta'] : ''; $data['custom_fields'] = array(array(apply_filters('tc_ticket_checkin_custom_field_title', 'Ticket Type'), apply_filters('tc_checkout_owner_info_ticket_title', $ticket_type->details->post_title, $ticket_type->details->ID)), array(apply_filters('tc_ticket_checkin_custom_field_title', 'Buyer Name'), apply_filters('tc_ticket_checkin_buyer_full_name', $buyer_full_name, $order->details->ID)), array(apply_filters('tc_ticket_checkin_custom_field_title', 'Buyer E-mail'), apply_filters('tc_ticket_checkin_buyer_email', $buyer_email, $order->details->ID))); $data['custom_fields'] = apply_filters('tc_checkin_custom_fields', $data['custom_fields'], $ticket_instance->details->ID, $ticket_event_id, $order, $ticket_type); apply_filters('tc_checkin_output_data', $data); if ($echo === true || $echo == 'echo') { echo json_encode($data); exit; } else { return $data; } } }
function tc_ticket_instance_field_value($value = false, $field_value = false, $post_field_type = false, $col_field_id = false, $field_id = false) { //$value, $post_field_type, $var_name if ($field_id == 'order') { $parent_post = get_post_ancestors($value); $order = new TC_Order($parent_post[0]); if (current_user_can('manage_orders_cap')) { $value = '<a target="_blank" href="' . admin_url('admin.php?page=tc_orders&action=details&ID=' . $order->details->ID) . '">' . $order->details->post_title . '</a>'; } else { $value = $order->details->post_title; } } if ($field_id == 'event') { $value = tc_get_ticket_instance_event(false, false, $value); } if ($field_id == 'ticket_code') { $value = $field_value; } if ($field_id == 'ticket_type_id') { $ticket_type = new TC_Ticket($field_value); $value = $ticket_type->details->post_title; } if ($field_id == 'ticket') { $value = '<a target="_blank" href="' . admin_url('admin.php?page=' . $_GET['page'] . '&tc_preview&ticket_instance_id=' . $field_value) . '">' . __('View', 'tc') . '</a> | <a target="_top" href="' . admin_url('admin.php?page=' . $_GET['page'] . '&tc_download&ticket_instance_id=' . $field_value) . '">' . __('Download', 'tc') . '</a>'; } if ($field_id == 'checkins') { $ticket_instance = new TC_Ticket_Instance($field_value); $checkins_pass = $ticket_instance->get_number_of_checkins('pass'); $checkins_fail = $ticket_instance->get_number_of_checkins('fail'); $value = '<a href="' . admin_url('admin.php?page=tc_attendees&&action=details&ID=' . $field_value) . '">'; $value .= '<span class="' . ($checkins_pass > 0 ? 'status_green' : '') . '">' . $checkins_pass . '</span>'; if ($checkins_fail > 0) { $value .= ' | <span class="status_red">' . $checkins_fail . '</span>'; } $value .= __(' Details', 'tc'); $value .= '</a>'; } if ($field_id == 'owner_name') { $value = get_post_meta($value, 'first_name', true) . ' ' . get_post_meta($value, 'last_name', true); if (trim($value) == '') { $value = '-'; } } return $value; }