auth = new HVAC_Google_Sheets_Auth(); $this->manager = new HVAC_Google_Sheets_Manager(); add_action('wp_ajax_hvac_create_master_report', array($this, 'ajax_create_master_report')); add_action('wp_ajax_hvac_create_event_spreadsheet', array($this, 'ajax_create_event_spreadsheet')); add_action('wp_ajax_hvac_test_google_sheets_connection', array($this, 'ajax_test_connection')); add_action('wp_ajax_hvac_verify_folder_structure', array($this, 'ajax_verify_folder_structure')); } /** * Render Google Sheets admin page */ public function render_admin_page() { try { // Initialize with safe defaults $auth_status = array( 'has_credentials' => false, 'is_authenticated' => false, 'client_id' => 'Not configured', 'token_expires' => 'N/A' ); // Try to get auth status if ($this->auth) { $auth_status = $this->auth->get_config_status(); } // Initialize report variables $latest_report = null; $report_history = array(); // Try to get reports if manager is available if ($this->manager) { $latest_report = $this->manager->get_latest_master_report(); $report_history = $this->manager->get_master_report_history(); } ?>

Google Sheets Integration

Success! Google Sheets authorization completed successfully! You can now create reports.
Error:

Connection Status

Credentials:
Authentication:
Client ID:
Token Expires:
Authorize Access

Master Report

Generate a comprehensive report with system overview, trainer performance, all events, and revenue analytics.

Latest Report

Event Spreadsheets

Create detailed spreadsheets for individual events with attendees, financial data, and event details.

Existing Event Spreadsheets

render_existing_event_sheets(); ?>

Report History

by display_name; ?>
Open
Error: Unable to load Google Sheets integration. getMessage()); ?>
getMessage()); } } /** * Render event options for select dropdown */ private function render_event_options() { $events = get_posts(array( 'post_type' => 'tribe_events', 'post_status' => 'publish', 'numberposts' => -1, 'orderby' => 'meta_value', 'meta_key' => '_EventStartDate', 'order' => 'DESC' )); foreach ($events as $event) { $event_date = get_post_meta($event->ID, '_EventStartDate', true); $formatted_date = $event_date ? date('M j, Y', strtotime($event_date)) : 'No date'; $trainer_name = get_the_author_meta('display_name', $event->post_author); echo ''; } } /** * Render existing event spreadsheets */ private function render_existing_event_sheets() { global $wpdb; $results = $wpdb->get_results( "SELECT p.ID, p.post_title, pm.meta_value, u.display_name FROM {$wpdb->posts} p JOIN {$wpdb->postmeta} pm ON p.ID = pm.post_id JOIN {$wpdb->users} u ON p.post_author = u.ID WHERE p.post_type = 'tribe_events' AND pm.meta_key = '_hvac_google_sheet' ORDER BY p.post_date DESC" ); if (empty($results)) { echo '

No event spreadsheets created yet.

'; return; } foreach ($results as $result) { $sheet_data = maybe_unserialize($result->meta_value); if (is_array($sheet_data) && isset($sheet_data['url'])) { echo '
'; echo '
'; echo '

' . esc_html($result->post_title) . '

'; echo 'by ' . esc_html($result->display_name) . ''; echo 'Created: ' . date('M j, Y', strtotime($sheet_data['created_at'])) . ''; echo '
'; echo ''; echo ' Open Spreadsheet'; echo ''; echo '
'; } } } /** * AJAX: Create Master Report */ public function ajax_create_master_report() { check_ajax_referer('hvac_google_sheets', '_wpnonce'); if (!current_user_can('view_master_dashboard')) { wp_die('Insufficient permissions'); } $result = $this->manager->create_master_report(); if ($result['success']) { wp_send_json_success($result); } else { wp_send_json_error($result['error']); } } /** * AJAX: Create Event Spreadsheet */ public function ajax_create_event_spreadsheet() { check_ajax_referer('hvac_google_sheets', '_wpnonce'); if (!current_user_can('view_master_dashboard')) { wp_die('Insufficient permissions'); } $event_id = intval($_POST['event_id']); if (!$event_id) { wp_send_json_error('Invalid event ID'); } $result = $this->manager->create_event_spreadsheet($event_id); if ($result['success']) { wp_send_json_success($result); } else { wp_send_json_error($result['error']); } } /** * AJAX: Test Connection */ public function ajax_test_connection() { check_ajax_referer('hvac_google_sheets', '_wpnonce'); if (!current_user_can('view_master_dashboard')) { wp_die('Insufficient permissions'); } $result = $this->manager->test_connection(); if ($result['success']) { wp_send_json_success($result['message']); } else { wp_send_json_error($result['message']); } } /** * AJAX: Verify Folder Structure */ public function ajax_verify_folder_structure() { check_ajax_referer('hvac_google_sheets', '_wpnonce'); if (!current_user_can('view_master_dashboard')) { wp_die('Insufficient permissions'); } require_once plugin_dir_path(dirname(__FILE__)) . '../google-sheets-folder-manager.php'; $folder_manager = new HVAC_Google_Sheets_Folder_Manager(); $result = $folder_manager->verify_folder_structure(); wp_send_json_success($result); } }