admin_url('admin-ajax.php'), 'nonce' => wp_create_nonce('hvac_venues_nonce') )); } } /** * Render venues list */ public function render_venues_list() { if (!is_user_logged_in()) { return '

You must be logged in to view this page.

'; } // Allow trainers, master trainers, or WordPress admins if (!current_user_can('hvac_trainer') && !current_user_can('hvac_master_trainer') && !current_user_can('manage_options')) { return '

You must be a trainer to view this page.

'; } ob_start(); ?>

Training Venues

Add New Venue
render_breadcrumbs(); } ?> render_venues_table(); ?>
class_exists('Tribe__Events__Main') ? Tribe__Events__Main::VENUE_POST_TYPE : 'tribe_venue', 'posts_per_page' => $per_page, 'offset' => $offset, 'orderby' => 'title', 'order' => 'ASC', 'post_status' => 'publish' ); // Filter handling if (!empty($_GET['search'])) { $query_args['s'] = sanitize_text_field($_GET['search']); } if (!empty($_GET['state'])) { $query_args['meta_query'] = array( array( 'key' => '_VenueState', 'value' => sanitize_text_field($_GET['state']), 'compare' => '=' ) ); } // Get venues $venues_query = new WP_Query($query_args); // Get total count for pagination $total_venues = $venues_query->found_posts; $total_pages = ceil($total_venues / $per_page); ?>
Clear
have_posts()) { while ($venues_query->have_posts()) { $venues_query->the_post(); $venue_id = get_the_ID(); $is_author = (get_post_field('post_author', $venue_id) == $current_user_id); // Get venue meta $address = get_post_meta($venue_id, '_VenueAddress', true); $city = get_post_meta($venue_id, '_VenueCity', true); $state = get_post_meta($venue_id, '_VenueState', true); if (empty($state)) { $state = get_post_meta($venue_id, '_VenueStateProvince', true); } $phone = get_post_meta($venue_id, '_VenuePhone', true); ?>
Venue Name Address City State Phone Actions
Your Venue Edit View Only
No venues found.
1): ?>
add_query_arg('paged', '%#%'), 'format' => '', 'current' => $page, 'total' => $total_pages, 'prev_text' => '« Previous', 'next_text' => 'Next »' )); ?>
You must be logged in to view this page.

'; } // Allow trainers, master trainers, or WordPress admins if (!current_user_can('hvac_trainer') && !current_user_can('hvac_master_trainer') && !current_user_can('manage_options')) { return '

You must be a trainer to view this page.

'; } $venue_id = isset($_GET['venue_id']) ? intval($_GET['venue_id']) : 0; $venue = null; if ($venue_id) { $venue = get_post($venue_id); // Check if user can edit this venue if (!$venue || $venue->post_author != get_current_user_id()) { return '

You do not have permission to edit this venue.

'; } } ob_start(); ?>

render_breadcrumbs(); } ?>

Venue Information

Location Details

Contact Information

Cancel
post_author != get_current_user_id()) { wp_send_json_error('You do not have permission to edit this venue.'); } } // Prepare venue data $venue_data = array( 'Venue' => sanitize_text_field($_POST['venue_name']), 'Description' => wp_kses_post($_POST['venue_description']), 'Address' => sanitize_text_field($_POST['venue_address']), 'City' => sanitize_text_field($_POST['venue_city']), 'StateProvince' => sanitize_text_field($_POST['venue_state']), 'State' => sanitize_text_field($_POST['venue_state']), 'Province' => sanitize_text_field($_POST['venue_state']), 'Zip' => sanitize_text_field($_POST['venue_zip']), 'Country' => sanitize_text_field($_POST['venue_country']), 'Phone' => sanitize_text_field($_POST['venue_phone']), 'URL' => esc_url_raw($_POST['venue_website']), 'ShowMap' => true, 'ShowMapLink' => true ); if ($venue_id) { $venue_data['ID'] = $venue_id; $result = function_exists('tribe_update_venue') ? tribe_update_venue($venue_id, $venue_data) : wp_update_post($venue_data); } else { $venue_data['post_status'] = 'publish'; $venue_data['post_author'] = get_current_user_id(); $result = function_exists('tribe_create_venue') ? tribe_create_venue($venue_data) : wp_insert_post($venue_data); } if (is_wp_error($result)) { wp_send_json_error($result->get_error_message()); } else { wp_send_json_success(array( 'message' => $venue_id ? 'Venue updated successfully.' : 'Venue created successfully.', 'venue_id' => $result )); } } /** * AJAX handler for deleting venue */ public function ajax_delete_venue() { check_ajax_referer('hvac_venues_nonce', 'nonce'); if (!current_user_can('hvac_trainer') && !current_user_can('hvac_master_trainer') && !current_user_can('manage_options')) { wp_send_json_error('Unauthorized'); } $venue_id = isset($_POST['venue_id']) ? intval($_POST['venue_id']) : 0; if (!$venue_id) { wp_send_json_error('Invalid venue ID'); } $venue = get_post($venue_id); if (!$venue || $venue->post_author != get_current_user_id()) { wp_send_json_error('You do not have permission to delete this venue.'); } // Check if venue is being used by any events $events_using_venue = get_posts(array( 'post_type' => class_exists('Tribe__Events__Main') ? Tribe__Events__Main::POSTTYPE : 'tribe_events', 'meta_query' => array( array( 'key' => '_EventVenueID', 'value' => $venue_id, 'compare' => '=' ) ), 'posts_per_page' => 1 )); if (!empty($events_using_venue)) { wp_send_json_error('Cannot delete venue. It is being used by one or more events.'); } $result = wp_trash_post($venue_id); if ($result) { wp_send_json_success('Venue deleted successfully.'); } else { wp_send_json_error('Failed to delete venue.'); } } /** * AJAX handler for loading venue data */ public function ajax_load_venue() { check_ajax_referer('hvac_venues_nonce', 'nonce'); if (!current_user_can('hvac_trainer') && !current_user_can('hvac_master_trainer') && !current_user_can('manage_options')) { wp_send_json_error('Unauthorized'); } $venue_id = isset($_GET['venue_id']) ? intval($_GET['venue_id']) : 0; if (!$venue_id) { wp_send_json_error('Invalid venue ID'); } $venue = get_post($venue_id); if (!$venue) { wp_send_json_error('Venue not found'); } $venue_data = array( 'id' => $venue_id, 'name' => $venue->post_title, 'description' => $venue->post_content, 'address' => get_post_meta($venue_id, '_VenueAddress', true), 'city' => get_post_meta($venue_id, '_VenueCity', true), 'state' => get_post_meta($venue_id, '_VenueStateProvince', true), 'zip' => get_post_meta($venue_id, '_VenueZip', true), 'country' => get_post_meta($venue_id, '_VenueCountry', true), 'phone' => get_post_meta($venue_id, '_VenuePhone', true), 'website' => get_post_meta($venue_id, '_VenueURL', true) ); wp_send_json_success($venue_data); } }