233 lines
No EOL
8.6 KiB
Bash
Executable file
233 lines
No EOL
8.6 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
# Add test attendees with check-ins to existing events for certificate testing
|
|
|
|
echo "=== Adding Test Attendees with Check-ins on Staging Server ==="
|
|
echo "Remote host: 146.190.76.204"
|
|
echo "Remote user: roodev"
|
|
echo "==============================="
|
|
|
|
# Create PHP script to run on server
|
|
cat << 'EOF' > add-attendees.php
|
|
<?php
|
|
// Load WordPress
|
|
require_once 'wp-load.php';
|
|
|
|
// Ensure TEC and ET plugins are active
|
|
if (!class_exists('Tribe__Events__Main') || !class_exists('Tribe__Tickets__Main')) {
|
|
die("Required plugins (The Events Calendar or Event Tickets) are not active");
|
|
}
|
|
|
|
echo "Adding test attendees to existing events...\n";
|
|
|
|
// Get the test trainer user
|
|
$test_trainer = get_user_by('login', 'test_trainer');
|
|
if (!$test_trainer) {
|
|
die("test_trainer user not found. Please create this user first.");
|
|
}
|
|
|
|
$trainer_id = $test_trainer->ID;
|
|
echo "Found test_trainer user ID: {$trainer_id}\n";
|
|
|
|
// Use existing events
|
|
$event_data = [
|
|
5484 => [ // HVAC Installation Best Practices
|
|
'price' => 150,
|
|
'attendees' => 12,
|
|
'checkins' => 8
|
|
],
|
|
5485 => [ // Commercial HVAC Systems Overview
|
|
'price' => 250,
|
|
'attendees' => 15,
|
|
'checkins' => 10
|
|
],
|
|
5486 => [ // HVAC Energy Efficiency Certification
|
|
'price' => 350,
|
|
'attendees' => 20,
|
|
'checkins' => 15
|
|
]
|
|
];
|
|
|
|
foreach ($event_data as $event_id => $data) {
|
|
// Get event post
|
|
$event = get_post($event_id);
|
|
if (!$event) {
|
|
echo "Event ID {$event_id} not found, skipping\n";
|
|
continue;
|
|
}
|
|
|
|
echo "Processing event: {$event->post_title} (ID: {$event_id})\n";
|
|
|
|
// Create ticket if needed or use existing
|
|
$existing_tickets = get_posts([
|
|
'post_type' => 'tribe_tpp_tickets',
|
|
'meta_query' => [
|
|
[
|
|
'key' => '_tribe_tpp_for_event',
|
|
'value' => $event_id,
|
|
]
|
|
],
|
|
'posts_per_page' => 1
|
|
]);
|
|
|
|
if (!empty($existing_tickets)) {
|
|
$ticket_id = $existing_tickets[0]->ID;
|
|
echo "Using existing ticket ID: {$ticket_id}\n";
|
|
|
|
// Update ticket price and capacity if needed
|
|
update_post_meta($ticket_id, '_price', $data['price']);
|
|
update_post_meta($ticket_id, '_capacity', $data['attendees'] + 5); // Add buffer
|
|
} else {
|
|
// Create new ticket using PayPal provider
|
|
if (class_exists('Tribe__Tickets_Plus__Commerce__PayPal__Main')) {
|
|
$provider = Tribe__Tickets_Plus__Commerce__PayPal__Main::get_instance();
|
|
|
|
$ticket_args = [
|
|
'post_title' => "General Admission - {$event->post_title}",
|
|
'post_content' => "Ticket for {$event->post_title}",
|
|
'post_status' => 'publish',
|
|
'post_type' => 'tribe_tpp_tickets',
|
|
];
|
|
|
|
$ticket_id = wp_insert_post($ticket_args);
|
|
|
|
if (is_wp_error($ticket_id)) {
|
|
echo "Failed to create ticket for event {$event_id}: " . $ticket_id->get_error_message() . "\n";
|
|
continue;
|
|
}
|
|
|
|
// Add ticket meta
|
|
update_post_meta($ticket_id, '_tribe_tpp_for_event', $event_id);
|
|
update_post_meta($ticket_id, '_tribe_tpp_enabled', 'yes');
|
|
update_post_meta($ticket_id, '_price', $data['price']);
|
|
update_post_meta($ticket_id, '_capacity', $data['attendees'] + 5); // Add buffer
|
|
update_post_meta($ticket_id, '_stock', $data['attendees'] + 5);
|
|
update_post_meta($ticket_id, '_manage_stock', 'yes');
|
|
|
|
// Associate ticket with event
|
|
update_post_meta($event_id, '_tribe_default_ticket_provider', 'Tribe__Tickets_Plus__Commerce__PayPal__Main');
|
|
|
|
echo "Created new ticket ID: {$ticket_id}\n";
|
|
} else {
|
|
echo "Event Tickets Plus PayPal provider not available, skipping ticket creation\n";
|
|
continue;
|
|
}
|
|
}
|
|
|
|
// Clear any existing attendees (optional - comment out if you want to keep existing ones)
|
|
$existing_attendees = get_posts([
|
|
'post_type' => 'tribe_tpp_attendees',
|
|
'meta_query' => [
|
|
[
|
|
'key' => '_tribe_tpp_event',
|
|
'value' => $event_id,
|
|
]
|
|
],
|
|
'posts_per_page' => -1
|
|
]);
|
|
|
|
if (!empty($existing_attendees)) {
|
|
echo "Removing " . count($existing_attendees) . " existing attendees...\n";
|
|
foreach ($existing_attendees as $attendee) {
|
|
wp_delete_post($attendee->ID, true);
|
|
}
|
|
}
|
|
|
|
// Create attendees with check-ins
|
|
$attendee_ids = [];
|
|
for ($i = 1; $i <= $data['attendees']; $i++) {
|
|
$attendee_first_name = "Attendee" . $i;
|
|
$attendee_last_name = "Event" . $event_id;
|
|
$attendee_email = "attendee{$i}_event{$event_id}@example.com";
|
|
|
|
// Special email for the first attendee of each event
|
|
if ($i === 1) {
|
|
$attendee_email = "ben@tealmaker.com";
|
|
$attendee_first_name = "Ben";
|
|
$attendee_last_name = "Tester";
|
|
}
|
|
|
|
// Create attendee post
|
|
$attendee_args = [
|
|
'post_title' => "{$attendee_first_name} {$attendee_last_name}",
|
|
'post_content' => '',
|
|
'post_status' => 'publish',
|
|
'post_type' => 'tribe_tpp_attendees',
|
|
];
|
|
|
|
$attendee_id = wp_insert_post($attendee_args);
|
|
|
|
if (is_wp_error($attendee_id)) {
|
|
echo "Failed to create attendee for event {$event_id}: " . $attendee_id->get_error_message() . "\n";
|
|
continue;
|
|
}
|
|
|
|
$attendee_ids[] = $attendee_id;
|
|
|
|
// Generate a unique order ID
|
|
$order_id = 'ORDER-' . $event_id . '-' . $i . '-' . uniqid();
|
|
|
|
// Add attendee meta
|
|
$meta_fields = [
|
|
'_tribe_tickets_full_name' => "{$attendee_first_name} {$attendee_last_name}",
|
|
'_tribe_tickets_email' => $attendee_email,
|
|
'_tribe_tpp_full_name' => "{$attendee_first_name} {$attendee_last_name}",
|
|
'_tribe_tpp_email' => $attendee_email,
|
|
'_tribe_tpp_event' => $event_id,
|
|
'_tribe_tpp_product' => $ticket_id,
|
|
'_tribe_tpp_order' => $order_id,
|
|
'_tribe_tpp_security_code' => wp_generate_password(10, false),
|
|
'_tribe_tickets_order_status' => 'complete',
|
|
'_tribe_tpp_attendee_optout' => 'no',
|
|
'_tribe_tickets_attendee_user_id' => 0,
|
|
];
|
|
|
|
foreach ($meta_fields as $key => $value) {
|
|
update_post_meta($attendee_id, $key, $value);
|
|
}
|
|
|
|
// Check in some attendees (for certificate testing)
|
|
if ($i <= $data['checkins']) {
|
|
// Multiple check-in meta fields for compatibility with different providers
|
|
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);
|
|
echo "Checked in attendee {$attendee_id} for event {$event_id}\n";
|
|
}
|
|
}
|
|
|
|
echo "Created {$data['attendees']} attendees for event {$event_id}\n";
|
|
echo "Checked in {$data['checkins']} attendees for event {$event_id}\n";
|
|
|
|
// Update ticket stock and sales counts
|
|
update_post_meta($ticket_id, '_tribe_tpp_sold', $data['attendees']);
|
|
update_post_meta($ticket_id, '_stock', intval(get_post_meta($ticket_id, '_capacity', true)) - $data['attendees']);
|
|
update_post_meta($ticket_id, '_tribe_ticket_sold', $data['attendees']);
|
|
|
|
// Update event attendance meta
|
|
update_post_meta($event_id, '_tribe_ticket_sold_count', $data['attendees']);
|
|
|
|
echo "----------------------------\n";
|
|
}
|
|
|
|
echo "Test attendee creation completed!\n";
|
|
?>
|
|
EOF
|
|
|
|
# Copy PHP script to server and execute
|
|
echo "[1;33mCopying script to server...[0m"
|
|
scp add-attendees.php roodev@146.190.76.204:/home/974670.cloudwaysapps.com/uberrxmprk/public_html/
|
|
|
|
echo "[1;33mExecuting script on server...[0m"
|
|
ssh roodev@146.190.76.204 "cd /home/974670.cloudwaysapps.com/uberrxmprk/public_html/ && php add-attendees.php"
|
|
|
|
# Clean up
|
|
rm add-attendees.php
|
|
ssh roodev@146.190.76.204 "rm /home/974670.cloudwaysapps.com/uberrxmprk/public_html/add-attendees.php"
|
|
|
|
echo "[0;32mTest data creation completed![0m"
|
|
echo "1. Added attendees to existing events on staging"
|
|
echo "2. Some attendees are marked as checked-in"
|
|
echo "3. One attendee for each event has email: ben@tealmaker.com"
|
|
echo "4. Checked-in attendees are ready for certificate generation" |