ID : $current_user_id; // Define test events $events = [ [ 'title' => 'HVAC System Design Fundamentals', 'description' => 'Learn the basics of designing effective HVAC systems for residential and light commercial buildings. This course covers load calculations, equipment selection, and ductwork design.', 'start_date' => date('Y-m-d H:i:s', strtotime('+1 week')), 'end_date' => date('Y-m-d H:i:s', strtotime('+1 week +6 hours')), 'venue' => 'Technical Training Institute', 'address' => '123 Education Blvd, Boston, MA 02108', 'attendees' => 25, 'checked_in' => 20, ], [ 'title' => 'Advanced Refrigeration Technology', 'description' => 'Deep dive into commercial refrigeration systems, focusing on the latest technologies, troubleshooting techniques, and energy efficiency improvements.', 'start_date' => date('Y-m-d H:i:s', strtotime('+2 weeks')), 'end_date' => date('Y-m-d H:i:s', strtotime('+2 weeks +8 hours')), 'venue' => 'Refrigeration Excellence Center', 'address' => '456 Technology Park, Miami, FL 33101', 'attendees' => 18, 'checked_in' => 15, ], [ 'title' => 'Building Automation Systems Workshop', 'description' => 'Hands-on workshop teaching the fundamentals of modern building automation systems, including programming, troubleshooting, and optimization techniques.', 'start_date' => date('Y-m-d H:i:s', strtotime('+3 weeks')), 'end_date' => date('Y-m-d H:i:s', strtotime('+3 weeks +12 hours')), 'venue' => 'Smart Building Center', 'address' => '789 Innovation Way, Seattle, WA 98101', 'attendees' => 15, 'checked_in' => 12, ] ]; // Attendee data generation $first_names = ['John', 'Jane', 'Michael', 'Sara', 'David', 'Lisa', 'Robert', 'Emily', 'William', 'Olivia', 'James', 'Sophia', 'Thomas', 'Emma', 'Daniel', 'Ava']; $last_names = ['Smith', 'Johnson', 'Williams', 'Jones', 'Brown', 'Davis', 'Miller', 'Wilson', 'Moore', 'Taylor', 'Anderson', 'Thomas', 'Jackson', 'White', 'Harris', 'Martin']; $domains = ['gmail.com', 'yahoo.com', 'hotmail.com', 'outlook.com', 'aol.com', 'icloud.com', 'protonmail.com', 'hvactraining.com', 'techedu.org', 'contractor.net']; // Track statistics $events_created = 0; $attendees_created = 0; $attendees_checked_in = 0; $certificates_created = 0; $certificates_revoked = 0; $certificates_emailed = 0; $created_event_ids = []; // Create events and associated data foreach ($events as $event_data) { echo "Creating event: {$event_data['title']}\n"; // Create event $event_args = [ 'post_title' => $event_data['title'], 'post_content' => $event_data['description'], 'post_status' => 'publish', 'post_type' => Tribe__Events__Main::POSTTYPE, 'post_author' => $trainer_id ]; $event_id = wp_insert_post($event_args); if (is_wp_error($event_id)) { echo "Failed to create event: " . $event_id->get_error_message() . "\n"; continue; } // Add event meta update_post_meta($event_id, '_EventStartDate', $event_data['start_date']); update_post_meta($event_id, '_EventEndDate', $event_data['end_date']); // Create venue $venue_args = [ 'post_title' => $event_data['venue'], 'post_status' => 'publish', 'post_type' => Tribe__Events__Venue::POSTTYPE, 'post_author' => $trainer_id ]; $venue_id = wp_insert_post($venue_args); if (!is_wp_error($venue_id)) { // Parse address $address_parts = explode(', ', $event_data['address']); $street = isset($address_parts[0]) ? $address_parts[0] : ''; $city = isset($address_parts[1]) ? $address_parts[1] : ''; $state_zip = isset($address_parts[2]) ? explode(' ', $address_parts[2]) : ['', '']; // Add venue meta update_post_meta($venue_id, '_VenueAddress', $street); update_post_meta($venue_id, '_VenueCity', $city); update_post_meta($venue_id, '_VenueStateProvince', $state_zip[0]); update_post_meta($venue_id, '_VenueZip', isset($state_zip[1]) ? $state_zip[1] : ''); // Link venue to event update_post_meta($event_id, '_EventVenueID', $venue_id); } $events_created++; $created_event_ids[] = $event_id; echo "Event created successfully (ID: {$event_id})\n"; // Create attendees directly (without tickets, for simplicity) $local_attendees_created = 0; $local_attendees_checked_in = 0; $local_certificates_created = 0; for ($i = 1; $i <= $event_data['attendees']; $i++) { // Generate attendee data $first_name = ($i === 1) ? 'Ben' : $first_names[array_rand($first_names)]; $last_name = ($i === 1) ? 'Tester' : $last_names[array_rand($last_names)]; $email = ($i === 1) ? 'ben@tealmaker.com' : strtolower($first_name . '.' . $last_name . '.' . rand(100, 999) . '@' . $domains[array_rand($domains)]); $full_name = $first_name . ' ' . $last_name; // Create attendee post $attendee_args = [ 'post_title' => $full_name, 'post_content' => '', 'post_status' => 'publish', 'post_type' => 'tribe_tpp_attendees', // Use PayPal attendees for this test ]; $attendee_id = wp_insert_post($attendee_args); if (is_wp_error($attendee_id)) { echo "Failed to create attendee {$full_name}: " . $attendee_id->get_error_message() . "\n"; continue; } // Generate a unique order ID $order_id = 'TEST-ORDER-' . $event_id . '-' . $i . '-' . uniqid(); // Add attendee meta update_post_meta($attendee_id, '_tribe_tickets_full_name', $full_name); update_post_meta($attendee_id, '_tribe_tickets_email', $email); update_post_meta($attendee_id, '_tribe_tpp_full_name', $full_name); update_post_meta($attendee_id, '_tribe_tpp_email', $email); update_post_meta($attendee_id, '_tribe_tpp_event', $event_id); update_post_meta($attendee_id, '_tribe_tpp_order', $order_id); update_post_meta($attendee_id, '_tribe_tpp_security_code', wp_generate_password(10, false)); update_post_meta($attendee_id, '_tribe_tickets_order_status', 'completed'); $local_attendees_created++; $attendees_created++; // Check in some attendees if ($i <= $event_data['checked_in']) { update_post_meta($attendee_id, '_tribe_tpp_checkin', 1); update_post_meta($attendee_id, '_tribe_tpp_checked_in', 1); update_post_meta($attendee_id, '_tribe_tickets_checkin_status', 1); update_post_meta($attendee_id, 'check_in', 1); $local_attendees_checked_in++; $attendees_checked_in++; // Generate certificate for checked-in attendee $year = date('Y'); $month = date('m'); $certificate_filename = "certificate-{$event_id}-{$attendee_id}-" . time() . ".pdf"; $certificate_relative_path = "hvac-certificates/{$year}/{$month}/{$certificate_filename}"; // Create year/month directory structure if needed $year_month_dir = $cert_dir . "/{$year}/{$month}"; if (!file_exists($year_month_dir)) { wp_mkdir_p($year_month_dir); } // Create the certificate record $certificate_id = $certificate_manager->create_certificate( $event_id, $attendee_id, 0, // user_id (not associated with a user) $certificate_relative_path, $trainer_id // generated by trainer ); if ($certificate_id) { $local_certificates_created++; $certificates_created++; // Create dummy certificate file $certificate_full_path = $upload_dir['basedir'] . '/' . $certificate_relative_path; file_put_contents($certificate_full_path, "Placeholder for certificate PDF - {$event_data['title']} - {$full_name}"); // Randomly mark some certificates as revoked or emailed for testing $random = mt_rand(1, 10); // Revoke about 10% of certificates if ($random == 1) { $certificate_manager->revoke_certificate( $certificate_id, $trainer_id, "Test revocation for certificate testing" ); $certificates_revoked++; } // Mark about 70% as emailed if ($random <= 7) { $certificate_manager->mark_certificate_emailed($certificate_id); $certificates_emailed++; } } } } echo "Created {$local_attendees_created} attendees\n"; echo "Checked in {$local_attendees_checked_in} attendees\n"; echo "Generated {$local_certificates_created} certificates\n"; echo "----------------------------\n"; } // Print summary echo "\n===== TEST DATA CREATION SUMMARY =====\n"; echo "Events created: {$events_created}\n"; echo "Attendees created: {$attendees_created}\n"; echo "Attendees checked in: {$attendees_checked_in}\n"; echo "Certificates created: {$certificates_created}\n"; echo "Certificates revoked: {$certificates_revoked}\n"; echo "Certificates marked as emailed: {$certificates_emailed}\n"; // Get certificate statistics $stats = $certificate_manager->get_certificate_stats(); echo "\n===== CERTIFICATE DATABASE STATISTICS =====\n"; echo "Total certificates in database: {$stats['total_certificates']}\n"; echo "Total events with certificates: {$stats['total_events']}\n"; echo "Total trainees with certificates: {$stats['total_trainees']}\n"; echo "Total revoked certificates: {$stats['total_revoked']}\n"; echo "Total emailed certificates: {$stats['total_emailed']}\n"; echo "Average certificates per attendee: {$stats['avg_per_attendee']}\n"; echo "\n===== EVENT IDS FOR REFERENCE =====\n"; foreach ($created_event_ids as $id) { $title = get_the_title($id); echo "Event ID {$id}: {$title}\n"; } echo "\n===== TEST DATA CREATION COMPLETE =====\n"; echo "You can now test the certificate system with the created data.\n"; echo "View certificates at: " . home_url('/certificate-reports/') . "\n";