docs: Update README with event creation testing status 2025-05-19
- Document enhanced event creation testing improvements - Add Breeze cache clearing script and integration - Detail form field mapping discoveries - Note current validation issues with description field - Include multiple test approaches implemented - Update error handling and debugging capabilities
This commit is contained in:
parent
aff540bdf6
commit
5d45ed594d
24 changed files with 2209 additions and 38 deletions
|
|
@ -183,6 +183,25 @@ Key findings:
|
||||||
- Events created during testing appear in My Events page but not main dashboard
|
- Events created during testing appear in My Events page but not main dashboard
|
||||||
- Form submission requires careful handling of TinyMCE editor and field formatting
|
- Form submission requires careful handling of TinyMCE editor and field formatting
|
||||||
- Tests handle both iframe and textarea fallbacks for description field
|
- Tests handle both iframe and textarea fallbacks for description field
|
||||||
|
|
||||||
|
**[UPDATE 2025-05-19]**
|
||||||
|
Enhanced event creation testing with improved handling of The Events Calendar Community Events:
|
||||||
|
- ✅ Identified correct form field names and structure for event creation
|
||||||
|
- ✅ Implemented Breeze cache clearing script to ensure fresh test runs
|
||||||
|
- ✅ Created multiple test approaches for handling TinyMCE editor
|
||||||
|
- 🔧 Event creation form validation issue remains for description field
|
||||||
|
|
||||||
|
Test infrastructure improvements:
|
||||||
|
- Created `bin/clear-breeze-cache.sh` for cache management
|
||||||
|
- Added form inspection utilities to identify exact field selectors
|
||||||
|
- Implemented screenshot capture for debugging form submissions
|
||||||
|
- Multiple test files demonstrating different approaches to form filling
|
||||||
|
|
||||||
|
Current status:
|
||||||
|
- Event creation tests properly fill all required fields
|
||||||
|
- TinyMCE description field handling works via iframe and JavaScript injection
|
||||||
|
- Server-side validation appears to reject description despite content being present
|
||||||
|
- Further investigation needed into Community Events plugin validation logic
|
||||||
```
|
```
|
||||||
|
|
||||||
**Staging Environment Tests:**
|
**Staging Environment Tests:**
|
||||||
|
|
|
||||||
63
wordpress-dev/bin/check-created-events.sh
Executable file
63
wordpress-dev/bin/check-created-events.sh
Executable file
|
|
@ -0,0 +1,63 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Get absolute path to this script's directory
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
|
||||||
|
# Navigate to wordpress-dev directory
|
||||||
|
cd "$(dirname "$SCRIPT_DIR")" || exit 1
|
||||||
|
|
||||||
|
# Load environment variables
|
||||||
|
ENV_FILE=".env"
|
||||||
|
if [ ! -f "$ENV_FILE" ]; then
|
||||||
|
echo "Error: .env file not found at: $ENV_FILE"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
source "$ENV_FILE"
|
||||||
|
|
||||||
|
# Colors for output
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
RED='\033[0;31m'
|
||||||
|
YELLOW='\033[1;33m'
|
||||||
|
NC='\033[0m'
|
||||||
|
|
||||||
|
echo "=== Checking Created Events on Staging Server ==="
|
||||||
|
echo "Remote host: $UPSKILL_STAGING_IP"
|
||||||
|
echo "Remote user: $UPSKILL_STAGING_SSH_USER"
|
||||||
|
echo "==============================="
|
||||||
|
|
||||||
|
# Check the recently created events by ID range
|
||||||
|
echo -e "\n${YELLOW}Finding events created today (ID range 5482-5486)...${NC}"
|
||||||
|
sshpass -p "${UPSKILL_STAGING_PASS}" ssh -o StrictHostKeyChecking=no "${UPSKILL_STAGING_SSH_USER}@${UPSKILL_STAGING_IP}" \
|
||||||
|
"cd ${UPSKILL_STAGING_PATH} && for ID in 5482 5483 5484 5485 5486; do wp post get \$ID --field=post_title,post_author --format=json --allow-root 2>/dev/null && echo; done"
|
||||||
|
|
||||||
|
# Get more details about these events
|
||||||
|
echo -e "\n${YELLOW}Getting detailed info about these events...${NC}"
|
||||||
|
sshpass -p "${UPSKILL_STAGING_PASS}" ssh -o StrictHostKeyChecking=no "${UPSKILL_STAGING_SSH_USER}@${UPSKILL_STAGING_IP}" \
|
||||||
|
"cd ${UPSKILL_STAGING_PATH} && wp post list --post_type=tribe_events --include=5482,5483,5484,5485,5486 --fields=ID,post_title,post_author,post_status --format=table --allow-root"
|
||||||
|
|
||||||
|
# Update these events to be owned by test_trainer
|
||||||
|
echo -e "\n${YELLOW}Updating events 5482-5486 to be owned by test_trainer...${NC}"
|
||||||
|
sshpass -p "${UPSKILL_STAGING_PASS}" ssh -o StrictHostKeyChecking=no "${UPSKILL_STAGING_SSH_USER}@${UPSKILL_STAGING_IP}" << 'EOF'
|
||||||
|
cd /home/974670.cloudwaysapps.com/uberrxmprk/public_html
|
||||||
|
|
||||||
|
# Get trainer user ID
|
||||||
|
TRAINER_ID=$(wp user get test_trainer --field=ID --allow-root)
|
||||||
|
echo "Trainer ID: $TRAINER_ID"
|
||||||
|
|
||||||
|
# Update events by ID
|
||||||
|
for EVENT_ID in 5482 5483 5484 5485 5486; do
|
||||||
|
if wp post get $EVENT_ID --allow-root >/dev/null 2>&1; then
|
||||||
|
echo "Updating event ID $EVENT_ID..."
|
||||||
|
wp post update $EVENT_ID --post_author=$TRAINER_ID --allow-root
|
||||||
|
else
|
||||||
|
echo "Event ID $EVENT_ID not found"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Verify the updates
|
||||||
|
echo -e "\nVerifying updates..."
|
||||||
|
wp post list --post_type=tribe_events --author=$TRAINER_ID --fields=ID,post_title,post_author --format=table --allow-root
|
||||||
|
EOF
|
||||||
|
|
||||||
|
echo -e "\n${GREEN}Event check completed!${NC}"
|
||||||
87
wordpress-dev/bin/check-dashboard-data.sh
Executable file
87
wordpress-dev/bin/check-dashboard-data.sh
Executable file
|
|
@ -0,0 +1,87 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Exit on error
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Source environment variables
|
||||||
|
source .env
|
||||||
|
|
||||||
|
echo "Checking dashboard data on staging..."
|
||||||
|
|
||||||
|
# Get test trainer user ID
|
||||||
|
USER_ID=$(sshpass -p "$UPSKILL_STAGING_PASS" ssh -o StrictHostKeyChecking=no "$UPSKILL_STAGING_SSH_USER@$UPSKILL_STAGING_IP" "cd $UPSKILL_STAGING_PATH && wp user get test_trainer --field=ID")
|
||||||
|
echo "Test trainer user ID: $USER_ID"
|
||||||
|
|
||||||
|
# Check events associated with this user
|
||||||
|
echo -e "\nEvents by author (post_author = $USER_ID):"
|
||||||
|
sshpass -p "$UPSKILL_STAGING_PASS" ssh -o StrictHostKeyChecking=no "$UPSKILL_STAGING_SSH_USER@$UPSKILL_STAGING_IP" "cd $UPSKILL_STAGING_PATH && wp db query \"SELECT ID, post_title, post_status, post_author FROM wp_posts WHERE post_type = 'tribe_events' AND post_author = $USER_ID\""
|
||||||
|
|
||||||
|
echo -e "\nEvents by organizer (meta _EventOrganizerID = $USER_ID):"
|
||||||
|
sshpass -p "$UPSKILL_STAGING_PASS" ssh -o StrictHostKeyChecking=no "$UPSKILL_STAGING_SSH_USER@$UPSKILL_STAGING_IP" "cd $UPSKILL_STAGING_PATH && wp db query \"SELECT p.ID, p.post_title, p.post_status, p.post_author, pm.meta_value as organizer_id FROM wp_posts p JOIN wp_postmeta pm ON p.ID = pm.post_id WHERE p.post_type = 'tribe_events' AND pm.meta_key = '_EventOrganizerID' AND pm.meta_value = '$USER_ID'\""
|
||||||
|
|
||||||
|
echo -e "\nAll events with their author and organizer:"
|
||||||
|
sshpass -p "$UPSKILL_STAGING_PASS" ssh -o StrictHostKeyChecking=no "$UPSKILL_STAGING_SSH_USER@$UPSKILL_STAGING_IP" "cd $UPSKILL_STAGING_PATH && wp db query \"SELECT p.ID, p.post_title, p.post_status, p.post_author, GROUP_CONCAT(CASE WHEN pm.meta_key = '_EventOrganizerID' THEN pm.meta_value END) as organizer_id FROM wp_posts p LEFT JOIN wp_postmeta pm ON p.ID = pm.post_id WHERE p.post_type = 'tribe_events' GROUP BY p.ID\""
|
||||||
|
|
||||||
|
echo -e "\nUser capabilities for test_trainer:"
|
||||||
|
sshpass -p "$UPSKILL_STAGING_PASS" ssh -o StrictHostKeyChecking=no "$UPSKILL_STAGING_SSH_USER@$UPSKILL_STAGING_IP" "cd $UPSKILL_STAGING_PATH && wp user meta get $USER_ID wp_capabilities"
|
||||||
|
|
||||||
|
echo -e "\nDebug: Clear cache and test dashboard data class:"
|
||||||
|
sshpass -p "$UPSKILL_STAGING_PASS" ssh -o StrictHostKeyChecking=no "$UPSKILL_STAGING_SSH_USER@$UPSKILL_STAGING_IP" "cd $UPSKILL_STAGING_PATH && wp cache flush"
|
||||||
|
|
||||||
|
# Create a PHP test script
|
||||||
|
sshpass -p "$UPSKILL_STAGING_PASS" ssh -o StrictHostKeyChecking=no "$UPSKILL_STAGING_SSH_USER@$UPSKILL_STAGING_IP" "cd $UPSKILL_STAGING_PATH && cat > test-dashboard-data.php << 'EOF'
|
||||||
|
<?php
|
||||||
|
// Load WordPress
|
||||||
|
require_once('wp-load.php');
|
||||||
|
|
||||||
|
// Get test user ID
|
||||||
|
\$user_id = get_user_by('login', 'test_trainer')->ID;
|
||||||
|
echo \"User ID: \$user_id\\n\";
|
||||||
|
|
||||||
|
// Check if the class exists
|
||||||
|
if (class_exists('HVAC_Dashboard_Data')) {
|
||||||
|
echo \"Using original HVAC_Dashboard_Data\\n\";
|
||||||
|
\$dashboard_data = new HVAC_Dashboard_Data(\$user_id);
|
||||||
|
} elseif (class_exists('HVAC_Dashboard_Data_Refactored')) {
|
||||||
|
echo \"Using refactored HVAC_Dashboard_Data_Refactored\\n\";
|
||||||
|
\$dashboard_data = new HVAC_Dashboard_Data_Refactored(\$user_id);
|
||||||
|
} else {
|
||||||
|
die(\"Dashboard data class not found\\n\");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get stats
|
||||||
|
\$total_events = \$dashboard_data->get_total_events_count();
|
||||||
|
\$upcoming_events = \$dashboard_data->get_upcoming_events_count();
|
||||||
|
\$past_events = \$dashboard_data->get_past_events_count();
|
||||||
|
\$total_tickets = \$dashboard_data->get_total_tickets_sold();
|
||||||
|
\$total_revenue = \$dashboard_data->get_total_revenue();
|
||||||
|
|
||||||
|
echo \"Total Events: \$total_events\\n\";
|
||||||
|
echo \"Upcoming Events: \$upcoming_events\\n\";
|
||||||
|
echo \"Past Events: \$past_events\\n\";
|
||||||
|
echo \"Total Tickets: \$total_tickets\\n\";
|
||||||
|
echo \"Total Revenue: \$total_revenue\\n\";
|
||||||
|
|
||||||
|
// Direct query test
|
||||||
|
echo \"\\nDirect query test:\\n\";
|
||||||
|
\$count = \$wpdb->get_var(\$wpdb->prepare(
|
||||||
|
\"SELECT COUNT(ID) FROM wp_posts WHERE post_type = %s AND post_author = %d AND post_status IN ('publish', 'future', 'draft', 'pending', 'private')\",
|
||||||
|
'tribe_events',
|
||||||
|
\$user_id
|
||||||
|
));
|
||||||
|
echo \"Direct count by author: \$count\\n\";
|
||||||
|
|
||||||
|
// Check with meta query
|
||||||
|
\$count2 = \$wpdb->get_var(\$wpdb->prepare(
|
||||||
|
\"SELECT COUNT(DISTINCT p.ID) FROM wp_posts p JOIN wp_postmeta pm ON p.ID = pm.post_id WHERE p.post_type = %s AND pm.meta_key = '_EventOrganizerID' AND pm.meta_value = %s\",
|
||||||
|
'tribe_events',
|
||||||
|
\$user_id
|
||||||
|
));
|
||||||
|
echo \"Count by organizer ID: \$count2\\n\";
|
||||||
|
EOF"
|
||||||
|
|
||||||
|
echo -e "\nRunning PHP test script:"
|
||||||
|
sshpass -p "$UPSKILL_STAGING_PASS" ssh -o StrictHostKeyChecking=no "$UPSKILL_STAGING_SSH_USER@$UPSKILL_STAGING_IP" "cd $UPSKILL_STAGING_PATH && php test-dashboard-data.php"
|
||||||
|
|
||||||
|
# Clean up
|
||||||
|
sshpass -p "$UPSKILL_STAGING_PASS" ssh -o StrictHostKeyChecking=no "$UPSKILL_STAGING_SSH_USER@$UPSKILL_STAGING_IP" "cd $UPSKILL_STAGING_PATH && rm test-dashboard-data.php"
|
||||||
59
wordpress-dev/bin/check-test-data.sh
Executable file
59
wordpress-dev/bin/check-test-data.sh
Executable file
|
|
@ -0,0 +1,59 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Get absolute path to this script's directory
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
|
||||||
|
# Navigate to wordpress-dev directory
|
||||||
|
cd "$(dirname "$SCRIPT_DIR")" || exit 1
|
||||||
|
|
||||||
|
# Load environment variables
|
||||||
|
ENV_FILE=".env"
|
||||||
|
if [ ! -f "$ENV_FILE" ]; then
|
||||||
|
echo "Error: .env file not found at: $ENV_FILE"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
source "$ENV_FILE"
|
||||||
|
|
||||||
|
# Colors for output
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
RED='\033[0;31m'
|
||||||
|
YELLOW='\033[1;33m'
|
||||||
|
NC='\033[0m'
|
||||||
|
|
||||||
|
echo "=== Checking Test Data on Staging Server ==="
|
||||||
|
echo "Remote host: $UPSKILL_STAGING_IP"
|
||||||
|
echo "Remote user: $UPSKILL_STAGING_SSH_USER"
|
||||||
|
echo "==============================="
|
||||||
|
|
||||||
|
# Get test_trainer user ID
|
||||||
|
echo -e "\n${YELLOW}Getting test_trainer user ID...${NC}"
|
||||||
|
sshpass -p "${UPSKILL_STAGING_PASS}" ssh -o StrictHostKeyChecking=no "${UPSKILL_STAGING_SSH_USER}@${UPSKILL_STAGING_IP}" \
|
||||||
|
"cd ${UPSKILL_STAGING_PATH} && wp user get test_trainer --field=ID --allow-root"
|
||||||
|
|
||||||
|
# Check events created by test_trainer
|
||||||
|
echo -e "\n${YELLOW}Events created by test_trainer:${NC}"
|
||||||
|
sshpass -p "${UPSKILL_STAGING_PASS}" ssh -o StrictHostKeyChecking=no "${UPSKILL_STAGING_SSH_USER}@${UPSKILL_STAGING_IP}" \
|
||||||
|
"cd ${UPSKILL_STAGING_PATH} && wp post list --post_type=tribe_events --author=\$(wp user get test_trainer --field=ID --allow-root) --fields=ID,post_title,post_status,post_author --format=table --allow-root"
|
||||||
|
|
||||||
|
# Check all events
|
||||||
|
echo -e "\n${YELLOW}All events in the system:${NC}"
|
||||||
|
sshpass -p "${UPSKILL_STAGING_PASS}" ssh -o StrictHostKeyChecking=no "${UPSKILL_STAGING_SSH_USER}@${UPSKILL_STAGING_IP}" \
|
||||||
|
"cd ${UPSKILL_STAGING_PATH} && wp post list --post_type=tribe_events --fields=ID,post_title,post_status,post_author --format=table --number=20 --allow-root"
|
||||||
|
|
||||||
|
# Check event meta data
|
||||||
|
echo -e "\n${YELLOW}Checking event meta data for a sample event:${NC}"
|
||||||
|
sshpass -p "${UPSKILL_STAGING_PASS}" ssh -o StrictHostKeyChecking=no "${UPSKILL_STAGING_SSH_USER}@${UPSKILL_STAGING_IP}" \
|
||||||
|
"cd ${UPSKILL_STAGING_PATH} && wp post meta list \$(wp post list --post_type=tribe_events --field=ID --number=1 --orderby=ID --order=DESC --allow-root) --fields=meta_key,meta_value --format=table --allow-root | grep -E '_Event|Cost'"
|
||||||
|
|
||||||
|
# Check ticket/attendee data
|
||||||
|
echo -e "\n${YELLOW}Checking for ticket data:${NC}"
|
||||||
|
sshpass -p "${UPSKILL_STAGING_PASS}" ssh -o StrictHostKeyChecking=no "${UPSKILL_STAGING_SSH_USER}@${UPSKILL_STAGING_IP}" \
|
||||||
|
"cd ${UPSKILL_STAGING_PATH} && wp post list --post_type=tribe_tpp_attendees --fields=ID,post_title,post_status --format=table --number=10 --allow-root"
|
||||||
|
|
||||||
|
# Check roles and capabilities
|
||||||
|
echo -e "\n${YELLOW}Checking test_trainer roles and capabilities:${NC}"
|
||||||
|
sshpass -p "${UPSKILL_STAGING_PASS}" ssh -o StrictHostKeyChecking=no "${UPSKILL_STAGING_SSH_USER}@${UPSKILL_STAGING_IP}" \
|
||||||
|
"cd ${UPSKILL_STAGING_PATH} && wp user get test_trainer --field=roles --allow-root"
|
||||||
|
|
||||||
|
echo -e "\n${GREEN}Data check completed!${NC}"
|
||||||
79
wordpress-dev/bin/clear-breeze-cache.sh
Executable file
79
wordpress-dev/bin/clear-breeze-cache.sh
Executable file
|
|
@ -0,0 +1,79 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Get absolute path to this script's directory
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
|
||||||
|
# Navigate to wordpress-dev directory
|
||||||
|
cd "$(dirname "$SCRIPT_DIR")" || exit 1
|
||||||
|
|
||||||
|
# Load environment variables
|
||||||
|
ENV_FILE=".env"
|
||||||
|
if [ ! -f "$ENV_FILE" ]; then
|
||||||
|
echo "Error: .env file not found at: $ENV_FILE"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
source "$ENV_FILE"
|
||||||
|
|
||||||
|
# Colors for output
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
RED='\033[0;31m'
|
||||||
|
YELLOW='\033[1;33m'
|
||||||
|
NC='\033[0m'
|
||||||
|
|
||||||
|
echo -e "${YELLOW}=== Clearing Breeze Cache on Staging Server ===${NC}"
|
||||||
|
echo "Remote host: $UPSKILL_STAGING_IP"
|
||||||
|
echo "Remote user: $UPSKILL_STAGING_SSH_USER"
|
||||||
|
echo "WordPress path: $UPSKILL_STAGING_PATH"
|
||||||
|
echo "==============================="
|
||||||
|
|
||||||
|
# Method 1: Try to clear Breeze cache using direct file system approach
|
||||||
|
echo -e "\n${YELLOW}Clearing Breeze cache files...${NC}"
|
||||||
|
sshpass -p "${UPSKILL_STAGING_PASS}" ssh -o StrictHostKeyChecking=no "${UPSKILL_STAGING_SSH_USER}@${UPSKILL_STAGING_IP}" \
|
||||||
|
"cd ${UPSKILL_STAGING_PATH} && find wp-content/cache/breeze -type f -name '*.php' -delete 2>/dev/null"
|
||||||
|
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo -e "${GREEN}✓ Breeze cache files cleared${NC}"
|
||||||
|
else
|
||||||
|
echo -e "${YELLOW}Note: No Breeze cache files found or clearing failed${NC}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Method 2: Clear Breeze minified files
|
||||||
|
echo -e "\n${YELLOW}Clearing Breeze minified files...${NC}"
|
||||||
|
sshpass -p "${UPSKILL_STAGING_PASS}" ssh -o StrictHostKeyChecking=no "${UPSKILL_STAGING_SSH_USER}@${UPSKILL_STAGING_IP}" \
|
||||||
|
"cd ${UPSKILL_STAGING_PATH} && rm -rf wp-content/uploads/breeze/js/* wp-content/uploads/breeze/css/* 2>/dev/null"
|
||||||
|
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo -e "${GREEN}✓ Breeze minified files cleared${NC}"
|
||||||
|
else
|
||||||
|
echo -e "${YELLOW}Note: No minified files found${NC}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Method 3: Try using WordPress transient API
|
||||||
|
echo -e "\n${YELLOW}Clearing Breeze-related transients...${NC}"
|
||||||
|
sshpass -p "${UPSKILL_STAGING_PASS}" ssh -o StrictHostKeyChecking=no "${UPSKILL_STAGING_SSH_USER}@${UPSKILL_STAGING_IP}" \
|
||||||
|
"cd ${UPSKILL_STAGING_PATH} && wp transient delete '_breeze_minification' --allow-root 2>/dev/null"
|
||||||
|
|
||||||
|
# Also clear object cache if exists
|
||||||
|
echo -e "\n${YELLOW}Clearing object cache...${NC}"
|
||||||
|
sshpass -p "${UPSKILL_STAGING_PASS}" ssh -o StrictHostKeyChecking=no "${UPSKILL_STAGING_SSH_USER}@${UPSKILL_STAGING_IP}" \
|
||||||
|
"cd ${UPSKILL_STAGING_PATH} && wp cache flush --allow-root"
|
||||||
|
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo -e "${GREEN}✓ Object cache cleared${NC}"
|
||||||
|
else
|
||||||
|
echo -e "${YELLOW}Note: Object cache clearing failed (might not be enabled)${NC}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Clear transients
|
||||||
|
echo -e "\n${YELLOW}Clearing transients...${NC}"
|
||||||
|
sshpass -p "${UPSKILL_STAGING_PASS}" ssh -o StrictHostKeyChecking=no "${UPSKILL_STAGING_SSH_USER}@${UPSKILL_STAGING_IP}" \
|
||||||
|
"cd ${UPSKILL_STAGING_PATH} && wp transient delete --all --allow-root"
|
||||||
|
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo -e "${GREEN}✓ Transients cleared${NC}"
|
||||||
|
else
|
||||||
|
echo -e "${YELLOW}Note: Transient clearing failed${NC}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -e "\n${GREEN}Cache clearing completed!${NC}"
|
||||||
155
wordpress-dev/bin/comprehensive-debug.sh
Executable file
155
wordpress-dev/bin/comprehensive-debug.sh
Executable file
|
|
@ -0,0 +1,155 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Comprehensive debug of event queries
|
||||||
|
|
||||||
|
# Get absolute path to this script's directory
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
|
||||||
|
# Navigate to wordpress-dev directory
|
||||||
|
cd "$(dirname "$SCRIPT_DIR")" || exit 1
|
||||||
|
|
||||||
|
# Load environment variables
|
||||||
|
ENV_FILE=".env"
|
||||||
|
if [ ! -f "$ENV_FILE" ]; then
|
||||||
|
echo "Error: .env file not found at: $ENV_FILE"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
source "$ENV_FILE"
|
||||||
|
|
||||||
|
echo "=== Comprehensive Event Query Debug ==="
|
||||||
|
echo "Remote host: $UPSKILL_STAGING_IP"
|
||||||
|
echo "==============================="
|
||||||
|
|
||||||
|
# Create comprehensive debug script
|
||||||
|
cat << 'EOF' > /tmp/debug-events.php
|
||||||
|
<?php
|
||||||
|
// Load WordPress
|
||||||
|
require_once dirname(dirname(__FILE__)) . '/public_html/wp-load.php';
|
||||||
|
|
||||||
|
echo "=== COMPREHENSIVE DEBUG ===\n\n";
|
||||||
|
|
||||||
|
// 1. User info
|
||||||
|
echo "1. User Information:\n";
|
||||||
|
$user = get_user_by('ID', 17);
|
||||||
|
echo "User ID: " . $user->ID . "\n";
|
||||||
|
echo "User login: " . $user->user_login . "\n";
|
||||||
|
echo "User roles: " . implode(', ', $user->roles) . "\n\n";
|
||||||
|
|
||||||
|
// 2. Direct DB query to see all events
|
||||||
|
echo "2. All tribe_events in database (direct query):\n";
|
||||||
|
global $wpdb;
|
||||||
|
$all_events = $wpdb->get_results("SELECT ID, post_title, post_author, post_status FROM {$wpdb->posts} WHERE post_type='tribe_events' ORDER BY ID DESC LIMIT 10");
|
||||||
|
foreach ($all_events as $event) {
|
||||||
|
echo "ID: {$event->ID}, Title: {$event->post_title}, Author: {$event->post_author}, Status: {$event->post_status}\n";
|
||||||
|
}
|
||||||
|
echo "\n";
|
||||||
|
|
||||||
|
// 3. Our specific events
|
||||||
|
echo "3. Our created events (5482-5486):\n";
|
||||||
|
$our_events = $wpdb->get_results("SELECT ID, post_title, post_author, post_status FROM {$wpdb->posts} WHERE ID IN (5482,5483,5484,5485,5486)");
|
||||||
|
foreach ($our_events as $event) {
|
||||||
|
echo "ID: {$event->ID}, Title: {$event->post_title}, Author: {$event->post_author}, Status: {$event->post_status}\n";
|
||||||
|
}
|
||||||
|
echo "\n";
|
||||||
|
|
||||||
|
// 4. Test WP_Query with various approaches
|
||||||
|
echo "4. Testing WP_Query approaches:\n";
|
||||||
|
|
||||||
|
// Test A: Simple author query
|
||||||
|
echo "Test A - Simple author query:\n";
|
||||||
|
$args_a = array(
|
||||||
|
'post_type' => 'tribe_events',
|
||||||
|
'author' => 17,
|
||||||
|
'posts_per_page' => -1,
|
||||||
|
'post_status' => 'any'
|
||||||
|
);
|
||||||
|
$query_a = new WP_Query($args_a);
|
||||||
|
echo "Found: " . $query_a->found_posts . "\n";
|
||||||
|
echo "SQL: " . $query_a->request . "\n\n";
|
||||||
|
|
||||||
|
// Test B: With suppress_filters
|
||||||
|
echo "Test B - With suppress_filters:\n";
|
||||||
|
$args_b = $args_a;
|
||||||
|
$args_b['suppress_filters'] = true;
|
||||||
|
$query_b = new WP_Query($args_b);
|
||||||
|
echo "Found: " . $query_b->found_posts . "\n";
|
||||||
|
echo "SQL: " . $query_b->request . "\n\n";
|
||||||
|
|
||||||
|
// Test C: Direct get_posts
|
||||||
|
echo "Test C - Direct get_posts:\n";
|
||||||
|
$posts_c = get_posts(array(
|
||||||
|
'post_type' => 'tribe_events',
|
||||||
|
'author' => 17,
|
||||||
|
'posts_per_page' => -1,
|
||||||
|
'post_status' => 'any',
|
||||||
|
'suppress_filters' => true
|
||||||
|
));
|
||||||
|
echo "Found: " . count($posts_c) . "\n\n";
|
||||||
|
|
||||||
|
// 5. Check TEC-specific methods
|
||||||
|
echo "5. TEC-specific methods:\n";
|
||||||
|
if (class_exists('Tribe__Events__Query')) {
|
||||||
|
echo "Using tribe_get_events:\n";
|
||||||
|
$tribe_events = tribe_get_events(array(
|
||||||
|
'author' => 17,
|
||||||
|
'posts_per_page' => -1,
|
||||||
|
'post_status' => 'any'
|
||||||
|
));
|
||||||
|
echo "Found: " . count($tribe_events) . "\n";
|
||||||
|
}
|
||||||
|
echo "\n";
|
||||||
|
|
||||||
|
// 6. Check active filters
|
||||||
|
echo "6. Active filters on pre_get_posts:\n";
|
||||||
|
global $wp_filter;
|
||||||
|
if (isset($wp_filter['pre_get_posts'])) {
|
||||||
|
foreach ($wp_filter['pre_get_posts'] as $priority => $callbacks) {
|
||||||
|
foreach ($callbacks as $callback) {
|
||||||
|
if (is_array($callback['function'])) {
|
||||||
|
$class = is_object($callback['function'][0]) ? get_class($callback['function'][0]) : $callback['function'][0];
|
||||||
|
$method = $callback['function'][1];
|
||||||
|
echo "Priority $priority: {$class}::{$method}\n";
|
||||||
|
} else {
|
||||||
|
echo "Priority $priority: " . $callback['function'] . "\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
echo "\n";
|
||||||
|
|
||||||
|
// 7. Check what happens when we query by ID
|
||||||
|
echo "7. Query by post ID (should work):\n";
|
||||||
|
$args_id = array(
|
||||||
|
'post_type' => 'tribe_events',
|
||||||
|
'post__in' => array(5482, 5483, 5484, 5485, 5486),
|
||||||
|
'posts_per_page' => -1,
|
||||||
|
'post_status' => 'any'
|
||||||
|
);
|
||||||
|
$query_id = new WP_Query($args_id);
|
||||||
|
echo "Found: " . $query_id->found_posts . "\n";
|
||||||
|
foreach ($query_id->posts as $post) {
|
||||||
|
echo "ID: {$post->ID}, Author: {$post->post_author}, Title: {$post->post_title}\n";
|
||||||
|
}
|
||||||
|
echo "\n";
|
||||||
|
|
||||||
|
// 8. Test dashboard data class
|
||||||
|
echo "8. Testing HVAC Dashboard Data class:\n";
|
||||||
|
require_once '/home/974670.cloudwaysapps.com/uberrxmprk/public_html/wp-content/plugins/hvac-community-events/includes/class-hvac-dashboard-data.php';
|
||||||
|
$dashboard = new HVAC_Dashboard_Data(17);
|
||||||
|
echo "Total events: " . $dashboard->get_total_events_count() . "\n";
|
||||||
|
echo "Upcoming events: " . $dashboard->get_upcoming_events_count() . "\n";
|
||||||
|
echo "Past events: " . $dashboard->get_past_events_count() . "\n";
|
||||||
|
|
||||||
|
echo "\n=== END DEBUG ===\n";
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Upload and execute
|
||||||
|
sshpass -p "${UPSKILL_STAGING_PASS}" scp /tmp/debug-events.php "${UPSKILL_STAGING_SSH_USER}@${UPSKILL_STAGING_IP}:/home/974670.cloudwaysapps.com/uberrxmprk/"
|
||||||
|
sshpass -p "${UPSKILL_STAGING_PASS}" ssh -o StrictHostKeyChecking=no "${UPSKILL_STAGING_SSH_USER}@${UPSKILL_STAGING_IP}" "cd /home/974670.cloudwaysapps.com/uberrxmprk && php debug-events.php"
|
||||||
|
|
||||||
|
# Clean up
|
||||||
|
rm /tmp/debug-events.php
|
||||||
|
sshpass -p "${UPSKILL_STAGING_PASS}" ssh -o StrictHostKeyChecking=no "${UPSKILL_STAGING_SSH_USER}@${UPSKILL_STAGING_IP}" "rm /home/974670.cloudwaysapps.com/uberrxmprk/debug-events.php"
|
||||||
|
|
||||||
|
echo "Debug completed!"
|
||||||
146
wordpress-dev/bin/create-test-tickets.sh
Normal file
146
wordpress-dev/bin/create-test-tickets.sh
Normal file
|
|
@ -0,0 +1,146 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Create tickets and attendees for test events on staging server
|
||||||
|
|
||||||
|
# Variables
|
||||||
|
SSH_USER="roodev"
|
||||||
|
SSH_HOST="146.190.76.204"
|
||||||
|
|
||||||
|
echo "=== Creating Test Tickets on Staging Server ==="
|
||||||
|
echo "Remote host: $SSH_HOST"
|
||||||
|
echo "Remote user: $SSH_USER"
|
||||||
|
echo "==============================="
|
||||||
|
|
||||||
|
# Create PHP script to run on server
|
||||||
|
cat << 'EOF' > create-tickets.php
|
||||||
|
<?php
|
||||||
|
// Load WordPress
|
||||||
|
require_once dirname(dirname(__FILE__)) . '/public_html/wp-load.php';
|
||||||
|
|
||||||
|
// Ensure Event Tickets plugin is active
|
||||||
|
if (!class_exists('Tribe__Tickets__Main')) {
|
||||||
|
die("Event Tickets plugin is not active");
|
||||||
|
}
|
||||||
|
|
||||||
|
// Event data with IDs from our created events
|
||||||
|
$events = [
|
||||||
|
5482 => [ // HVAC System Maintenance Workshop
|
||||||
|
'price' => 200,
|
||||||
|
'attendees' => 5,
|
||||||
|
'capacity' => 50
|
||||||
|
],
|
||||||
|
5483 => [ // Advanced Diagnostics Training
|
||||||
|
'price' => 350,
|
||||||
|
'attendees' => 8,
|
||||||
|
'capacity' => 30
|
||||||
|
],
|
||||||
|
5484 => [ // Energy Efficiency Certification
|
||||||
|
'price' => 500,
|
||||||
|
'attendees' => 12,
|
||||||
|
'capacity' => 40
|
||||||
|
],
|
||||||
|
5485 => [ // Refrigeration Masterclass
|
||||||
|
'price' => 300,
|
||||||
|
'attendees' => 15,
|
||||||
|
'capacity' => 50
|
||||||
|
],
|
||||||
|
5486 => [ // HVAC Business Development Summit
|
||||||
|
'price' => 1000,
|
||||||
|
'attendees' => 7,
|
||||||
|
'capacity' => 100
|
||||||
|
]
|
||||||
|
];
|
||||||
|
|
||||||
|
foreach ($events as $event_id => $event_data) {
|
||||||
|
// Check if event exists
|
||||||
|
$event = get_post($event_id);
|
||||||
|
if (!$event) {
|
||||||
|
echo "Event $event_id not found, skipping\n";
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "Processing event: {$event->post_title} (ID: $event_id)\n";
|
||||||
|
|
||||||
|
// Create ticket for this event
|
||||||
|
$ticket_args = [
|
||||||
|
'post_type' => 'tribe_tpp_tickets',
|
||||||
|
'post_status' => 'publish',
|
||||||
|
'post_title' => "{$event->post_title} - General Admission",
|
||||||
|
'meta_input' => [
|
||||||
|
'_tribe_tpp_enabled' => 'yes',
|
||||||
|
'_price' => $event_data['price'],
|
||||||
|
'_stock' => $event_data['capacity'],
|
||||||
|
'_capacity' => $event_data['capacity'],
|
||||||
|
'_manage_stock' => 'yes',
|
||||||
|
'_ticket_start_date' => '2025-01-01 00:00:00',
|
||||||
|
'_ticket_end_date' => '2025-12-31 23:59:59',
|
||||||
|
]
|
||||||
|
];
|
||||||
|
|
||||||
|
$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;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Associate ticket with event
|
||||||
|
update_post_meta($ticket_id, '_tribe_tpp_for_event', $event_id);
|
||||||
|
update_post_meta($event_id, '_tribe_default_ticket_provider', 'Tribe__Tickets_Plus__Commerce__PayPal__Main');
|
||||||
|
|
||||||
|
echo "Created ticket ID: $ticket_id\n";
|
||||||
|
|
||||||
|
// Create attendees
|
||||||
|
for ($i = 1; $i <= $event_data['attendees']; $i++) {
|
||||||
|
$attendee_args = [
|
||||||
|
'post_type' => 'tribe_tpp_attendees',
|
||||||
|
'post_status' => 'publish',
|
||||||
|
'post_title' => "Attendee $i for {$event->post_title}",
|
||||||
|
'meta_input' => [
|
||||||
|
'_tribe_tpp_event' => $event_id,
|
||||||
|
'_tribe_tpp_product' => $ticket_id,
|
||||||
|
'_tribe_tpp_ticket' => $ticket_id,
|
||||||
|
'_tribe_tpp_price_paid' => $event_data['price'],
|
||||||
|
'_tribe_tpp_order_status' => 'completed',
|
||||||
|
'_tribe_tpp_security_code' => wp_generate_password(10, false),
|
||||||
|
'_tribe_tpp_attendee_user_id' => 0,
|
||||||
|
'_tribe_tpp_attendee_email' => "attendee{$i}_{$event_id}@test.com",
|
||||||
|
'_tribe_tpp_attendee_full_name' => "Test Attendee $i",
|
||||||
|
'_tribe_tpp_checked_in' => '',
|
||||||
|
'_tribe_deleted' => 0,
|
||||||
|
]
|
||||||
|
];
|
||||||
|
|
||||||
|
$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";
|
||||||
|
} else {
|
||||||
|
echo "Created attendee ID: $attendee_id\n";
|
||||||
|
|
||||||
|
// Update event attendance
|
||||||
|
$current_count = get_post_meta($event_id, '_tribe_ticket_sold_count', true);
|
||||||
|
update_post_meta($event_id, '_tribe_ticket_sold_count', intval($current_count) + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update ticket stock
|
||||||
|
$remaining_stock = $event_data['capacity'] - $event_data['attendees'];
|
||||||
|
update_post_meta($ticket_id, '_stock', $remaining_stock);
|
||||||
|
update_post_meta($ticket_id, '_total_sales', $event_data['attendees']);
|
||||||
|
|
||||||
|
echo "Completed processing event $event_id\n\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "All tickets and attendees created successfully\n";
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Copy PHP script to server and execute
|
||||||
|
sshpass -p "$SSH_PASS" scp create-tickets.php $SSH_USER@$SSH_HOST:$WP_ROOT/
|
||||||
|
sshpass -p "$SSH_PASS" ssh $SSH_USER@$SSH_HOST "cd $WP_ROOT && /usr/bin/php create-tickets.php"
|
||||||
|
|
||||||
|
# Clean up
|
||||||
|
rm create-tickets.php
|
||||||
|
sshpass -p "$SSH_PASS" ssh $SSH_USER@$SSH_HOST "rm $WP_ROOT/create-tickets.php"
|
||||||
|
|
||||||
|
echo -e "\033[0;32mTicket creation completed!\033[0m"
|
||||||
79
wordpress-dev/bin/debug-dashboard-live.sh
Executable file
79
wordpress-dev/bin/debug-dashboard-live.sh
Executable file
|
|
@ -0,0 +1,79 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Debug dashboard live on server
|
||||||
|
|
||||||
|
# Get absolute path to this script's directory
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
|
||||||
|
# Navigate to wordpress-dev directory
|
||||||
|
cd "$(dirname "$SCRIPT_DIR")" || exit 1
|
||||||
|
|
||||||
|
# Load environment variables
|
||||||
|
ENV_FILE=".env"
|
||||||
|
if [ ! -f "$ENV_FILE" ]; then
|
||||||
|
echo "Error: .env file not found at: $ENV_FILE"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
source "$ENV_FILE"
|
||||||
|
|
||||||
|
echo "=== Debugging Dashboard Live ==="
|
||||||
|
echo "Remote host: $UPSKILL_STAGING_IP"
|
||||||
|
echo "==============================="
|
||||||
|
|
||||||
|
# Debug dashboard
|
||||||
|
sshpass -p "${UPSKILL_STAGING_PASS}" ssh -o StrictHostKeyChecking=no "${UPSKILL_STAGING_SSH_USER}@${UPSKILL_STAGING_IP}" <<'EOF'
|
||||||
|
cd /home/974670.cloudwaysapps.com/uberrxmprk/public_html
|
||||||
|
|
||||||
|
# Create debug script
|
||||||
|
cat > debug-dashboard.php << 'PHP'
|
||||||
|
<?php
|
||||||
|
require_once 'wp-load.php';
|
||||||
|
|
||||||
|
echo "=== DASHBOARD DEBUG ===\n\n";
|
||||||
|
|
||||||
|
// Check plugin file
|
||||||
|
$plugin_file = '/home/974670.cloudwaysapps.com/uberrxmprk/public_html/wp-content/plugins/hvac-community-events/includes/class-hvac-dashboard-data.php';
|
||||||
|
echo "Plugin file exists: " . (file_exists($plugin_file) ? 'Yes' : 'No') . "\n";
|
||||||
|
echo "Plugin file modified: " . date('Y-m-d H:i:s', filemtime($plugin_file)) . "\n\n";
|
||||||
|
|
||||||
|
// Test dashboard data directly
|
||||||
|
require_once $plugin_file;
|
||||||
|
$dashboard = new HVAC_Dashboard_Data(17);
|
||||||
|
|
||||||
|
echo "Direct method calls:\n";
|
||||||
|
echo "Total events: " . $dashboard->get_total_events_count() . "\n";
|
||||||
|
echo "Upcoming events: " . $dashboard->get_upcoming_events_count() . "\n";
|
||||||
|
echo "Past events: " . $dashboard->get_past_events_count() . "\n\n";
|
||||||
|
|
||||||
|
// Test a raw query
|
||||||
|
echo "Raw query test:\n";
|
||||||
|
$args = array(
|
||||||
|
'post_type' => 'tribe_events',
|
||||||
|
'author' => 17,
|
||||||
|
'posts_per_page' => -1,
|
||||||
|
'post_status' => 'any'
|
||||||
|
);
|
||||||
|
$query = new WP_Query($args);
|
||||||
|
echo "Found: " . $query->found_posts . "\n";
|
||||||
|
echo "SQL: " . $query->request . "\n\n";
|
||||||
|
|
||||||
|
// Check cache
|
||||||
|
echo "Cache status:\n";
|
||||||
|
$cache_group = 'counts';
|
||||||
|
$cache_key = 'hvac_events_17';
|
||||||
|
$cached = wp_cache_get($cache_key, $cache_group);
|
||||||
|
echo "Cached value: " . var_export($cached, true) . "\n";
|
||||||
|
|
||||||
|
// Clear cache and try again
|
||||||
|
wp_cache_flush();
|
||||||
|
echo "\nAfter cache flush:\n";
|
||||||
|
echo "Total events: " . $dashboard->get_total_events_count() . "\n";
|
||||||
|
|
||||||
|
PHP
|
||||||
|
|
||||||
|
php debug-dashboard.php
|
||||||
|
rm debug-dashboard.php
|
||||||
|
EOF
|
||||||
|
|
||||||
|
echo "Debug completed!"
|
||||||
106
wordpress-dev/bin/debug-dashboard-template.sh
Executable file
106
wordpress-dev/bin/debug-dashboard-template.sh
Executable file
|
|
@ -0,0 +1,106 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Exit on error
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Source environment variables
|
||||||
|
source .env
|
||||||
|
|
||||||
|
echo "Debugging dashboard template data..."
|
||||||
|
|
||||||
|
# Create a debug version of the dashboard template
|
||||||
|
sshpass -p "$UPSKILL_STAGING_PASS" ssh -o StrictHostKeyChecking=no "$UPSKILL_STAGING_SSH_USER@$UPSKILL_STAGING_IP" "cd $UPSKILL_STAGING_PATH && cat > wp-content/plugins/hvac-community-events/templates/template-hvac-dashboard-debug.php << 'EOF'
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Debug version of dashboard template
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Exit if accessed directly.
|
||||||
|
if ( ! defined( 'ABSPATH' ) ) {
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ensure user is logged in and has the correct role
|
||||||
|
if ( ! is_user_logged_in() || ! current_user_can( 'view_hvac_dashboard' ) ) {
|
||||||
|
wp_safe_redirect( home_url( '/community-login/' ) );
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the current user ID
|
||||||
|
\$user_id = get_current_user_id();
|
||||||
|
|
||||||
|
// Include and instantiate the dashboard data class
|
||||||
|
require_once HVAC_CE_PLUGIN_DIR . 'includes/class-hvac-dashboard-data.php';
|
||||||
|
\$dashboard_data = new HVAC_Dashboard_Data( \$user_id );
|
||||||
|
|
||||||
|
// Fetch data
|
||||||
|
\$total_events = \$dashboard_data->get_total_events_count();
|
||||||
|
\$upcoming_events = \$dashboard_data->get_upcoming_events_count();
|
||||||
|
\$past_events = \$dashboard_data->get_past_events_count();
|
||||||
|
\$total_sold = \$dashboard_data->get_total_tickets_sold();
|
||||||
|
\$total_revenue = \$dashboard_data->get_total_revenue();
|
||||||
|
\$revenue_target = \$dashboard_data->get_annual_revenue_target();
|
||||||
|
|
||||||
|
// Debug output
|
||||||
|
echo '<pre style=\"background: #f5f5f5; padding: 20px; margin: 20px;\">';
|
||||||
|
echo 'User ID: ' . \$user_id . \"\\n\";
|
||||||
|
echo 'Total Events: ' . \$total_events . \"\\n\";
|
||||||
|
echo 'Upcoming Events: ' . \$upcoming_events . \"\\n\";
|
||||||
|
echo 'Past Events: ' . \$past_events . \"\\n\";
|
||||||
|
echo 'Total Sold: ' . \$total_sold . \"\\n\";
|
||||||
|
echo 'Total Revenue: ' . \$total_revenue . \"\\n\";
|
||||||
|
echo 'Revenue Target: ' . \$revenue_target . \"\\n\\n\";
|
||||||
|
|
||||||
|
// Direct database query test
|
||||||
|
global \$wpdb;
|
||||||
|
\$direct_count = \$wpdb->get_var(\$wpdb->prepare(
|
||||||
|
\"SELECT COUNT(ID) FROM wp_posts WHERE post_type = %s AND post_author = %d AND post_status IN ('publish', 'future', 'draft', 'pending', 'private')\",
|
||||||
|
'tribe_events',
|
||||||
|
\$user_id
|
||||||
|
));
|
||||||
|
echo 'Direct Count: ' . \$direct_count . \"\\n\\n\";
|
||||||
|
|
||||||
|
// Get actual events with details
|
||||||
|
\$events_query = new WP_Query(array(
|
||||||
|
'post_type' => 'tribe_events',
|
||||||
|
'post_author' => \$user_id,
|
||||||
|
'post_status' => array('publish', 'future', 'draft', 'pending', 'private'),
|
||||||
|
'posts_per_page' => -1
|
||||||
|
));
|
||||||
|
|
||||||
|
echo 'WP_Query found posts: ' . \$events_query->found_posts . \"\\n\";
|
||||||
|
echo 'Events:\\n';
|
||||||
|
foreach (\$events_query->posts as \$event) {
|
||||||
|
echo ' - ID: ' . \$event->ID . ', Title: ' . \$event->post_title . ', Status: ' . \$event->post_status . \"\\n\";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Get the SQL query
|
||||||
|
echo \"\\nGenerated SQL:\\n\";
|
||||||
|
echo \$events_query->request . \"\\n\";
|
||||||
|
|
||||||
|
echo '</pre>';
|
||||||
|
|
||||||
|
// Include the original template
|
||||||
|
include HVAC_CE_PLUGIN_DIR . 'templates/template-hvac-dashboard.php';
|
||||||
|
EOF"
|
||||||
|
|
||||||
|
# Create a page that uses this debug template
|
||||||
|
echo -e "\nCreating debug page..."
|
||||||
|
sshpass -p "$UPSKILL_STAGING_PASS" ssh -o StrictHostKeyChecking=no "$UPSKILL_STAGING_SSH_USER@$UPSKILL_STAGING_IP" "cd $UPSKILL_STAGING_PATH && wp post create --post_type=page --post_title='Dashboard Debug' --post_name='dashboard-debug' --post_status=publish --post_content='Debug Dashboard Page'"
|
||||||
|
|
||||||
|
# Update the template loading to use debug version temporarily
|
||||||
|
sshpass -p "$UPSKILL_STAGING_PASS" ssh -o StrictHostKeyChecking=no "$UPSKILL_STAGING_SSH_USER@$UPSKILL_STAGING_IP" "cd $UPSKILL_STAGING_PATH && cat > wp-content/plugins/hvac-community-events/includes/debug-template-loader.php << 'EOF'
|
||||||
|
<?php
|
||||||
|
// Temporary debug template loader
|
||||||
|
add_filter('template_include', function(\$template) {
|
||||||
|
if (is_page('dashboard-debug')) {
|
||||||
|
return HVAC_CE_PLUGIN_DIR . 'templates/template-hvac-dashboard-debug.php';
|
||||||
|
}
|
||||||
|
return \$template;
|
||||||
|
}, 99);
|
||||||
|
EOF"
|
||||||
|
|
||||||
|
# Include the debug loader in the main plugin file
|
||||||
|
sshpass -p "$UPSKILL_STAGING_PASS" ssh -o StrictHostKeyChecking=no "$UPSKILL_STAGING_SSH_USER@$UPSKILL_STAGING_IP" "cd $UPSKILL_STAGING_PATH && echo \"require_once HVAC_CE_PLUGIN_DIR . 'includes/debug-template-loader.php';\" >> wp-content/plugins/hvac-community-events/hvac-community-events.php"
|
||||||
|
|
||||||
|
echo -e "\nDebug page created. Visit: https://wordpress-974670-5399585.cloudwaysapps.com/dashboard-debug/"
|
||||||
60
wordpress-dev/bin/debug-events.sh
Executable file
60
wordpress-dev/bin/debug-events.sh
Executable file
|
|
@ -0,0 +1,60 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Debug events on staging server
|
||||||
|
|
||||||
|
# Get absolute path to this script's directory
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
|
||||||
|
# Navigate to wordpress-dev directory
|
||||||
|
cd "$(dirname "$SCRIPT_DIR")" || exit 1
|
||||||
|
|
||||||
|
# Load environment variables
|
||||||
|
ENV_FILE=".env"
|
||||||
|
if [ ! -f "$ENV_FILE" ]; then
|
||||||
|
echo "Error: .env file not found at: $ENV_FILE"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
source "$ENV_FILE"
|
||||||
|
|
||||||
|
# Colors for output
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
RED='\033[0;31m'
|
||||||
|
YELLOW='\033[1;33m'
|
||||||
|
NC='\033[0m'
|
||||||
|
|
||||||
|
echo "=== Debugging Events on Staging Server ==="
|
||||||
|
echo "Remote host: $UPSKILL_STAGING_IP"
|
||||||
|
echo "Remote user: $UPSKILL_STAGING_SSH_USER"
|
||||||
|
echo "==============================="
|
||||||
|
|
||||||
|
# Debug events
|
||||||
|
sshpass -p "${UPSKILL_STAGING_PASS}" ssh -o StrictHostKeyChecking=no "${UPSKILL_STAGING_SSH_USER}@${UPSKILL_STAGING_IP}" <<'EOF'
|
||||||
|
cd /home/974670.cloudwaysapps.com/uberrxmprk/public_html
|
||||||
|
|
||||||
|
echo "Test trainer user ID:"
|
||||||
|
wp user get test_trainer --field=ID --allow-root
|
||||||
|
|
||||||
|
echo -e "\nAll events (showing post author):"
|
||||||
|
wp post list --post_type=tribe_events --fields=ID,post_title,post_author --allow-root
|
||||||
|
|
||||||
|
echo -e "\nEvents by test_trainer (using author query):"
|
||||||
|
wp post list --post_type=tribe_events --author=17 --fields=ID,post_title --allow-root
|
||||||
|
|
||||||
|
echo -e "\nDetailed info for event 5482:"
|
||||||
|
wp post get 5482 --fields=ID,post_title,post_author,post_status --allow-root
|
||||||
|
|
||||||
|
echo -e "\nOrganizer metadata for event 5482:"
|
||||||
|
wp post meta get 5482 _EventOrganizerID --allow-root
|
||||||
|
|
||||||
|
echo -e "\nAll metadata for event 5482:"
|
||||||
|
wp post meta list 5482 --format=table --allow-root | grep -E "_Event|_tribe"
|
||||||
|
|
||||||
|
echo -e "\nEvents with any author (testing query):"
|
||||||
|
wp post list --post_type=tribe_events --posts_per_page=10 --fields=ID,post_author,post_title --allow-root
|
||||||
|
|
||||||
|
echo -e "\nWorking directory events:"
|
||||||
|
wp db query "SELECT ID, post_title, post_author FROM wp_posts WHERE post_type='tribe_events' AND ID IN (5482,5483,5484,5485,5486);" --allow-root
|
||||||
|
EOF
|
||||||
|
|
||||||
|
echo -e "\n${GREEN}Debug completed!${NC}"
|
||||||
93
wordpress-dev/bin/debug-filters.sh
Executable file
93
wordpress-dev/bin/debug-filters.sh
Executable file
|
|
@ -0,0 +1,93 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Debug WordPress filters affecting queries
|
||||||
|
|
||||||
|
# Get absolute path to this script's directory
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
|
||||||
|
# Navigate to wordpress-dev directory
|
||||||
|
cd "$(dirname "$SCRIPT_DIR")" || exit 1
|
||||||
|
|
||||||
|
# Load environment variables
|
||||||
|
ENV_FILE=".env"
|
||||||
|
if [ ! -f "$ENV_FILE" ]; then
|
||||||
|
echo "Error: .env file not found at: $ENV_FILE"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
source "$ENV_FILE"
|
||||||
|
|
||||||
|
echo "=== Debugging Query Filters ==="
|
||||||
|
echo "Remote host: $UPSKILL_STAGING_IP"
|
||||||
|
echo "==============================="
|
||||||
|
|
||||||
|
# Test query filters
|
||||||
|
sshpass -p "${UPSKILL_STAGING_PASS}" ssh -o StrictHostKeyChecking=no "${UPSKILL_STAGING_SSH_USER}@${UPSKILL_STAGING_IP}" <<'EOF'
|
||||||
|
cd /home/974670.cloudwaysapps.com/uberrxmprk/public_html
|
||||||
|
|
||||||
|
# Create PHP test script
|
||||||
|
cat > debug-filters.php << 'PHP'
|
||||||
|
<?php
|
||||||
|
require_once 'wp-load.php';
|
||||||
|
|
||||||
|
// Remove all query filters temporarily
|
||||||
|
remove_all_filters('pre_get_posts');
|
||||||
|
remove_all_filters('posts_clauses');
|
||||||
|
remove_all_filters('posts_where');
|
||||||
|
remove_all_filters('posts_join');
|
||||||
|
|
||||||
|
// Try simple query
|
||||||
|
echo "Test 1: Simple query after removing filters\n";
|
||||||
|
$args = array(
|
||||||
|
'post_type' => 'tribe_events',
|
||||||
|
'author' => 17,
|
||||||
|
'post_status' => 'any',
|
||||||
|
'posts_per_page' => 5,
|
||||||
|
'suppress_filters' => false
|
||||||
|
);
|
||||||
|
$query = new WP_Query($args);
|
||||||
|
echo "Found posts: " . $query->found_posts . "\n";
|
||||||
|
echo "SQL: " . $query->request . "\n\n";
|
||||||
|
|
||||||
|
// Try with suppress_filters
|
||||||
|
echo "Test 2: With suppress_filters = true\n";
|
||||||
|
$args['suppress_filters'] = true;
|
||||||
|
$query2 = new WP_Query($args);
|
||||||
|
echo "Found posts: " . $query2->found_posts . "\n";
|
||||||
|
echo "SQL: " . $query2->request . "\n\n";
|
||||||
|
|
||||||
|
// Check if Community Events is filtering queries
|
||||||
|
echo "Test 3: Check active plugins\n";
|
||||||
|
$active_plugins = get_option('active_plugins');
|
||||||
|
foreach ($active_plugins as $plugin) {
|
||||||
|
if (strpos($plugin, 'community') !== false || strpos($plugin, 'events') !== false) {
|
||||||
|
echo "Active: " . $plugin . "\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check specific event
|
||||||
|
echo "\nTest 4: Get specific event\n";
|
||||||
|
$event = get_post(5482);
|
||||||
|
if ($event) {
|
||||||
|
echo "Event 5482 exists\n";
|
||||||
|
echo "Author: " . $event->post_author . "\n";
|
||||||
|
echo "Type: " . $event->post_type . "\n";
|
||||||
|
echo "Status: " . $event->post_status . "\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check capabilities
|
||||||
|
echo "\nTest 5: User capabilities\n";
|
||||||
|
$user = get_user_by('ID', 17);
|
||||||
|
if ($user) {
|
||||||
|
echo "User login: " . $user->user_login . "\n";
|
||||||
|
echo "Roles: " . implode(', ', $user->roles) . "\n";
|
||||||
|
echo "Can read private posts: " . ($user->has_cap('read_private_posts') ? 'Yes' : 'No') . "\n";
|
||||||
|
echo "Can edit posts: " . ($user->has_cap('edit_posts') ? 'Yes' : 'No') . "\n";
|
||||||
|
}
|
||||||
|
PHP
|
||||||
|
|
||||||
|
php debug-filters.php
|
||||||
|
rm debug-filters.php
|
||||||
|
EOF
|
||||||
|
|
||||||
|
echo "Debug completed!"
|
||||||
85
wordpress-dev/bin/debug-template.sh
Executable file
85
wordpress-dev/bin/debug-template.sh
Executable file
|
|
@ -0,0 +1,85 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Debug template rendering
|
||||||
|
|
||||||
|
# Get absolute path to this script's directory
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
|
||||||
|
# Navigate to wordpress-dev directory
|
||||||
|
cd "$(dirname "$SCRIPT_DIR")" || exit 1
|
||||||
|
|
||||||
|
# Load environment variables
|
||||||
|
ENV_FILE=".env"
|
||||||
|
if [ ! -f "$ENV_FILE" ]; then
|
||||||
|
echo "Error: .env file not found at: $ENV_FILE"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
source "$ENV_FILE"
|
||||||
|
|
||||||
|
echo "=== Debugging Template Rendering ==="
|
||||||
|
echo "Remote host: $UPSKILL_STAGING_IP"
|
||||||
|
echo "==============================="
|
||||||
|
|
||||||
|
# Debug template
|
||||||
|
sshpass -p "${UPSKILL_STAGING_PASS}" ssh -o StrictHostKeyChecking=no "${UPSKILL_STAGING_SSH_USER}@${UPSKILL_STAGING_IP}" <<'EOF'
|
||||||
|
cd /home/974670.cloudwaysapps.com/uberrxmprk/public_html
|
||||||
|
|
||||||
|
# Create debug script
|
||||||
|
cat > debug-template.php << 'PHP'
|
||||||
|
<?php
|
||||||
|
// Set up WordPress environment
|
||||||
|
require_once 'wp-load.php';
|
||||||
|
|
||||||
|
// Force login as test_trainer
|
||||||
|
$user = get_user_by('login', 'test_trainer');
|
||||||
|
wp_set_current_user($user->ID);
|
||||||
|
wp_set_auth_cookie($user->ID);
|
||||||
|
|
||||||
|
echo "=== TEMPLATE DEBUG ===\n\n";
|
||||||
|
|
||||||
|
// Check current user
|
||||||
|
echo "Current user: " . get_current_user_id() . "\n";
|
||||||
|
echo "Can view dashboard: " . (current_user_can('view_hvac_dashboard') ? 'Yes' : 'No') . "\n\n";
|
||||||
|
|
||||||
|
// Load dashboard data
|
||||||
|
require_once '/home/974670.cloudwaysapps.com/uberrxmprk/public_html/wp-content/plugins/hvac-community-events/includes/class-hvac-dashboard-data.php';
|
||||||
|
$dashboard_data = new HVAC_Dashboard_Data(get_current_user_id());
|
||||||
|
|
||||||
|
// Get data
|
||||||
|
$total_events = $dashboard_data->get_total_events_count();
|
||||||
|
$upcoming_events = $dashboard_data->get_upcoming_events_count();
|
||||||
|
$past_events = $dashboard_data->get_past_events_count();
|
||||||
|
$total_sold = $dashboard_data->get_total_tickets_sold();
|
||||||
|
$total_revenue = $dashboard_data->get_total_revenue();
|
||||||
|
|
||||||
|
echo "Dashboard data:\n";
|
||||||
|
echo "Total events: $total_events\n";
|
||||||
|
echo "Upcoming events: $upcoming_events\n";
|
||||||
|
echo "Past events: $past_events\n";
|
||||||
|
echo "Total sold: $total_sold\n";
|
||||||
|
echo "Total revenue: $total_revenue\n\n";
|
||||||
|
|
||||||
|
// Check if variables are being overridden
|
||||||
|
echo "Checking global scope:\n";
|
||||||
|
$GLOBALS['total_events'] = isset($GLOBALS['total_events']) ? $GLOBALS['total_events'] : 'not set';
|
||||||
|
echo "Global total_events: " . $GLOBALS['total_events'] . "\n\n";
|
||||||
|
|
||||||
|
// Test template directly
|
||||||
|
echo "Testing template include:\n";
|
||||||
|
global $total_events_test;
|
||||||
|
$total_events_test = $total_events;
|
||||||
|
echo "Set test variable to: $total_events_test\n";
|
||||||
|
|
||||||
|
// Check theme template redirect
|
||||||
|
echo "\nChecking template redirect:\n";
|
||||||
|
$template = locate_template('template-hvac-dashboard.php');
|
||||||
|
echo "Theme template found: " . ($template ? $template : 'No') . "\n";
|
||||||
|
|
||||||
|
PHP
|
||||||
|
|
||||||
|
php debug-template.php
|
||||||
|
rm debug-template.php
|
||||||
|
EOF
|
||||||
|
|
||||||
|
echo "Debug completed!"
|
||||||
301
wordpress-dev/bin/deploy-dashboard-fix-v2.sh
Executable file
301
wordpress-dev/bin/deploy-dashboard-fix-v2.sh
Executable file
|
|
@ -0,0 +1,301 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Exit on error
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Source environment variables
|
||||||
|
source .env
|
||||||
|
|
||||||
|
echo "Deploying dashboard fix to staging..."
|
||||||
|
|
||||||
|
# Create backup and upload fix directly via SSH
|
||||||
|
echo "Creating fix on staging server..."
|
||||||
|
sshpass -p "$UPSKILL_STAGING_PASS" ssh -o StrictHostKeyChecking=no "$UPSKILL_STAGING_SSH_USER@$UPSKILL_STAGING_IP" "cd $UPSKILL_STAGING_PATH && cat > wp-content/plugins/hvac-community-events/includes/class-hvac-dashboard-data-fixed.php << 'EOF'
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* HVAC Community Events Dashboard Data Handler - Fixed Version
|
||||||
|
*
|
||||||
|
* Consistently queries by post_author for trainer's events
|
||||||
|
*
|
||||||
|
* @package HVAC_Community_Events
|
||||||
|
* @subpackage Includes
|
||||||
|
* @since 1.1.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
if ( ! defined( 'ABSPATH' ) ) {
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class HVAC_Dashboard_Data
|
||||||
|
*/
|
||||||
|
class HVAC_Dashboard_Data {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The ID of the trainer user.
|
||||||
|
*
|
||||||
|
* @var int
|
||||||
|
*/
|
||||||
|
private int \$user_id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor.
|
||||||
|
*
|
||||||
|
* @param int \$user_id The ID of the trainer user.
|
||||||
|
*/
|
||||||
|
public function __construct( int \$user_id ) {
|
||||||
|
\$this->user_id = \$user_id;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the total number of events created by the trainer.
|
||||||
|
*
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function get_total_events_count() : int {
|
||||||
|
\$args = array(
|
||||||
|
'post_type' => Tribe__Events__Main::POSTTYPE,
|
||||||
|
'author' => \$this->user_id,
|
||||||
|
'post_status' => array( 'publish', 'future', 'draft', 'pending', 'private' ),
|
||||||
|
'posts_per_page' => -1,
|
||||||
|
'fields' => 'ids',
|
||||||
|
);
|
||||||
|
\$query = new WP_Query( \$args );
|
||||||
|
return (int) \$query->found_posts;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the number of upcoming events for the trainer.
|
||||||
|
*
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function get_upcoming_events_count() : int {
|
||||||
|
\$today = current_time( 'mysql' );
|
||||||
|
\$args = array(
|
||||||
|
'post_type' => Tribe__Events__Main::POSTTYPE,
|
||||||
|
'author' => \$this->user_id, // Use author consistently
|
||||||
|
'post_status' => array( 'publish', 'future' ),
|
||||||
|
'posts_per_page' => -1,
|
||||||
|
'fields' => 'ids',
|
||||||
|
'meta_query' => array(
|
||||||
|
array(
|
||||||
|
'key' => '_EventStartDate',
|
||||||
|
'value' => \$today,
|
||||||
|
'compare' => '>=',
|
||||||
|
'type' => 'DATETIME',
|
||||||
|
),
|
||||||
|
),
|
||||||
|
'orderby' => 'meta_value',
|
||||||
|
'meta_key' => '_EventStartDate',
|
||||||
|
'order' => 'ASC',
|
||||||
|
);
|
||||||
|
\$query = new WP_Query( \$args );
|
||||||
|
return (int) \$query->found_posts;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the number of past events for the trainer.
|
||||||
|
*
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function get_past_events_count() : int {
|
||||||
|
\$today = current_time( 'mysql' );
|
||||||
|
\$args = array(
|
||||||
|
'post_type' => Tribe__Events__Main::POSTTYPE,
|
||||||
|
'author' => \$this->user_id, // Use author consistently
|
||||||
|
'post_status' => array( 'publish', 'private' ),
|
||||||
|
'posts_per_page' => -1,
|
||||||
|
'fields' => 'ids',
|
||||||
|
'meta_query' => array(
|
||||||
|
array(
|
||||||
|
'key' => '_EventEndDate',
|
||||||
|
'value' => \$today,
|
||||||
|
'compare' => '<',
|
||||||
|
'type' => 'DATETIME',
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
\$query = new WP_Query( \$args );
|
||||||
|
return (int) \$query->found_posts;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the total number of tickets sold across all the trainer's events.
|
||||||
|
*
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function get_total_tickets_sold() : int {
|
||||||
|
\$total_tickets = 0;
|
||||||
|
\$args = array(
|
||||||
|
'post_type' => Tribe__Events__Main::POSTTYPE,
|
||||||
|
'author' => \$this->user_id, // Use author consistently
|
||||||
|
'post_status' => array( 'publish', 'future', 'draft', 'pending', 'private' ),
|
||||||
|
'posts_per_page' => -1,
|
||||||
|
'fields' => 'ids',
|
||||||
|
);
|
||||||
|
\$event_ids = get_posts( \$args );
|
||||||
|
|
||||||
|
if ( ! empty( \$event_ids ) ) {
|
||||||
|
foreach ( \$event_ids as \$event_id ) {
|
||||||
|
\$sold = get_post_meta( \$event_id, '_tribe_tickets_sold', true );
|
||||||
|
if ( is_numeric( \$sold ) ) {
|
||||||
|
\$total_tickets += (int) \$sold;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return \$total_tickets;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the total revenue generated across all the trainer's events.
|
||||||
|
*
|
||||||
|
* @return float
|
||||||
|
*/
|
||||||
|
public function get_total_revenue() : float {
|
||||||
|
\$total_revenue = 0.0;
|
||||||
|
\$args = array(
|
||||||
|
'post_type' => Tribe__Events__Main::POSTTYPE,
|
||||||
|
'author' => \$this->user_id, // Use author consistently
|
||||||
|
'post_status' => array( 'publish', 'future', 'draft', 'pending', 'private' ),
|
||||||
|
'posts_per_page' => -1,
|
||||||
|
'fields' => 'ids',
|
||||||
|
);
|
||||||
|
\$event_ids = get_posts( \$args );
|
||||||
|
|
||||||
|
if ( ! empty( \$event_ids ) ) {
|
||||||
|
foreach ( \$event_ids as \$event_id ) {
|
||||||
|
\$revenue = get_post_meta( \$event_id, '_tribe_revenue_total', true );
|
||||||
|
if ( is_numeric( \$revenue ) ) {
|
||||||
|
\$total_revenue += (float) \$revenue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return \$total_revenue;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the annual revenue target set by the trainer.
|
||||||
|
*
|
||||||
|
* @return float|null Returns the target as a float, or null if not set.
|
||||||
|
*/
|
||||||
|
public function get_annual_revenue_target() : ?float {
|
||||||
|
\$target = get_user_meta( \$this->user_id, 'annual_revenue_target', true );
|
||||||
|
return ! empty( \$target ) && is_numeric( \$target ) ? (float) \$target : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the data needed for the events table on the dashboard.
|
||||||
|
*
|
||||||
|
* @param string \$filter_status The status to filter events by.
|
||||||
|
* @return array An array of event data arrays.
|
||||||
|
*/
|
||||||
|
public function get_events_table_data( string \$filter_status = 'all' ) : array {
|
||||||
|
\$events_data = [];
|
||||||
|
\$valid_statuses = array( 'publish', 'future', 'draft', 'pending', 'private' );
|
||||||
|
\$post_status = ( 'all' === \$filter_status || ! in_array( \$filter_status, \$valid_statuses, true ) )
|
||||||
|
? \$valid_statuses
|
||||||
|
: array( \$filter_status );
|
||||||
|
|
||||||
|
\$args = array(
|
||||||
|
'post_type' => Tribe__Events__Main::POSTTYPE,
|
||||||
|
'author' => \$this->user_id, // Use author consistently
|
||||||
|
'post_status' => \$post_status,
|
||||||
|
'posts_per_page' => -1,
|
||||||
|
'orderby' => 'meta_value',
|
||||||
|
'meta_key' => '_EventStartDate',
|
||||||
|
'order' => 'DESC',
|
||||||
|
);
|
||||||
|
|
||||||
|
\$query = new WP_Query( \$args );
|
||||||
|
|
||||||
|
if ( \$query->have_posts() ) {
|
||||||
|
while ( \$query->have_posts() ) {
|
||||||
|
\$query->the_post();
|
||||||
|
\$event_id = get_the_ID();
|
||||||
|
|
||||||
|
// Get Capacity
|
||||||
|
\$total_capacity = 0;
|
||||||
|
if ( function_exists( 'tribe_get_tickets' ) ) {
|
||||||
|
\$tickets = tribe_get_tickets( \$event_id );
|
||||||
|
if ( \$tickets ) {
|
||||||
|
foreach ( \$tickets as \$ticket ) {
|
||||||
|
\$capacity = \$ticket->capacity();
|
||||||
|
if ( \$capacity === -1 ) {
|
||||||
|
\$total_capacity = -1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if ( is_numeric( \$capacity ) ) {
|
||||||
|
\$total_capacity += \$capacity;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
\$sold = get_post_meta( \$event_id, '_tribe_tickets_sold', true );
|
||||||
|
\$revenue = get_post_meta( \$event_id, '_tribe_revenue_total', true );
|
||||||
|
|
||||||
|
\$events_data[] = array(
|
||||||
|
'id' => \$event_id,
|
||||||
|
'status' => get_post_status( \$event_id ),
|
||||||
|
'name' => get_the_title(),
|
||||||
|
'link' => get_permalink( \$event_id ),
|
||||||
|
'start_date_ts' => strtotime( get_post_meta( \$event_id, '_EventStartDate', true ) ),
|
||||||
|
'organizer_id' => (int) get_post_meta( \$event_id, '_EventOrganizerID', true ),
|
||||||
|
'capacity' => ( \$total_capacity === -1 ) ? 'Unlimited' : (int) \$total_capacity,
|
||||||
|
'sold' => is_numeric( \$sold ) ? (int) \$sold : 0,
|
||||||
|
'revenue' => is_numeric( \$revenue ) ? (float) \$revenue : 0.0,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
wp_reset_postdata();
|
||||||
|
}
|
||||||
|
|
||||||
|
return \$events_data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
EOF"
|
||||||
|
|
||||||
|
# Backup original
|
||||||
|
echo "Backing up original file..."
|
||||||
|
sshpass -p "$UPSKILL_STAGING_PASS" ssh -o StrictHostKeyChecking=no "$UPSKILL_STAGING_SSH_USER@$UPSKILL_STAGING_IP" "cd $UPSKILL_STAGING_PATH && cp wp-content/plugins/hvac-community-events/includes/class-hvac-dashboard-data.php wp-content/plugins/hvac-community-events/includes/class-hvac-dashboard-data.php.bak"
|
||||||
|
|
||||||
|
# Replace with fixed version
|
||||||
|
echo "Replacing with fixed version..."
|
||||||
|
sshpass -p "$UPSKILL_STAGING_PASS" ssh -o StrictHostKeyChecking=no "$UPSKILL_STAGING_SSH_USER@$UPSKILL_STAGING_IP" "cd $UPSKILL_STAGING_PATH && cp wp-content/plugins/hvac-community-events/includes/class-hvac-dashboard-data-fixed.php wp-content/plugins/hvac-community-events/includes/class-hvac-dashboard-data.php"
|
||||||
|
|
||||||
|
# Clear cache
|
||||||
|
echo "Clearing cache..."
|
||||||
|
sshpass -p "$UPSKILL_STAGING_PASS" ssh -o StrictHostKeyChecking=no "$UPSKILL_STAGING_SSH_USER@$UPSKILL_STAGING_IP" "cd $UPSKILL_STAGING_PATH && wp cache flush"
|
||||||
|
|
||||||
|
# Test the fix
|
||||||
|
echo -e "\nTesting the fix..."
|
||||||
|
sshpass -p "$UPSKILL_STAGING_PASS" ssh -o StrictHostKeyChecking=no "$UPSKILL_STAGING_SSH_USER@$UPSKILL_STAGING_IP" "cd $UPSKILL_STAGING_PATH && cat > test-dashboard-fix.php << 'EOF'
|
||||||
|
<?php
|
||||||
|
require_once('wp-load.php');
|
||||||
|
|
||||||
|
\$user_id = get_user_by('login', 'test_trainer')->ID;
|
||||||
|
echo \"User ID: \$user_id\\n\";
|
||||||
|
|
||||||
|
\$dashboard_data = new HVAC_Dashboard_Data(\$user_id);
|
||||||
|
|
||||||
|
echo \"Total Events: \" . \$dashboard_data->get_total_events_count() . \"\\n\";
|
||||||
|
echo \"Upcoming Events: \" . \$dashboard_data->get_upcoming_events_count() . \"\\n\";
|
||||||
|
echo \"Past Events: \" . \$dashboard_data->get_past_events_count() . \"\\n\";
|
||||||
|
echo \"Total Tickets: \" . \$dashboard_data->get_total_tickets_sold() . \"\\n\";
|
||||||
|
echo \"Total Revenue: \" . \$dashboard_data->get_total_revenue() . \"\\n\";
|
||||||
|
|
||||||
|
// Check event table data
|
||||||
|
\$events = \$dashboard_data->get_events_table_data();
|
||||||
|
echo \"\\nEvents in table: \" . count(\$events) . \"\\n\";
|
||||||
|
foreach (\$events as \$event) {
|
||||||
|
echo \" - \" . \$event['name'] . \" (\" . \$event['status'] . \")\\n\";
|
||||||
|
}
|
||||||
|
EOF"
|
||||||
|
|
||||||
|
sshpass -p "$UPSKILL_STAGING_PASS" ssh -o StrictHostKeyChecking=no "$UPSKILL_STAGING_SSH_USER@$UPSKILL_STAGING_IP" "cd $UPSKILL_STAGING_PATH && php test-dashboard-fix.php"
|
||||||
|
|
||||||
|
# Clean up test file
|
||||||
|
sshpass -p "$UPSKILL_STAGING_PASS" ssh -o StrictHostKeyChecking=no "$UPSKILL_STAGING_SSH_USER@$UPSKILL_STAGING_IP" "cd $UPSKILL_STAGING_PATH && rm test-dashboard-fix.php"
|
||||||
|
|
||||||
|
echo -e "\nDashboard fix deployed. You should now see the correct stats at: https://wordpress-974670-5399585.cloudwaysapps.com/hvac-dashboard/"
|
||||||
258
wordpress-dev/bin/deploy-dashboard-fix-v3.sh
Executable file
258
wordpress-dev/bin/deploy-dashboard-fix-v3.sh
Executable file
|
|
@ -0,0 +1,258 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Load environment variables
|
||||||
|
source .env
|
||||||
|
|
||||||
|
# SSH credentials for Cloudways
|
||||||
|
SSH_HOST="${UPSKILL_STAGING_IP}"
|
||||||
|
SSH_USER="${UPSKILL_STAGING_SSH_USER}"
|
||||||
|
SSH_PASS="${UPSKILL_STAGING_PASS}"
|
||||||
|
SSH_PORT="22"
|
||||||
|
REMOTE_PATH="${UPSKILL_STAGING_PATH}"
|
||||||
|
|
||||||
|
echo "Deploying dashboard fix to staging..."
|
||||||
|
echo "Using SSH: ${SSH_USER}@${SSH_HOST}:${SSH_PORT}"
|
||||||
|
|
||||||
|
# Create the fixed dashboard data class content
|
||||||
|
FIXED_CONTENT='<?php
|
||||||
|
/**
|
||||||
|
* Dashboard data handler (fixed version)
|
||||||
|
*/
|
||||||
|
class HVAC_Dashboard_Data {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The user ID to fetch data for
|
||||||
|
*
|
||||||
|
* @var int
|
||||||
|
*/
|
||||||
|
private $user_id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor
|
||||||
|
*
|
||||||
|
* @param int $user_id User ID to fetch data for
|
||||||
|
*/
|
||||||
|
public function __construct( $user_id = null ) {
|
||||||
|
$this->user_id = $user_id ?: get_current_user_id();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get total events count
|
||||||
|
*
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function get_total_events_count() : int {
|
||||||
|
$args = array(
|
||||||
|
"post_type" => Tribe__Events__Main::POSTTYPE,
|
||||||
|
"author" => $this->user_id,
|
||||||
|
"post_status" => array( "publish", "future" ),
|
||||||
|
"posts_per_page" => -1,
|
||||||
|
"fields" => "ids",
|
||||||
|
);
|
||||||
|
|
||||||
|
$query = new WP_Query( $args );
|
||||||
|
|
||||||
|
return (int) $query->found_posts;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get upcoming events count
|
||||||
|
*
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function get_upcoming_events_count() : int {
|
||||||
|
$today = current_time( "mysql" );
|
||||||
|
$args = array(
|
||||||
|
"post_type" => Tribe__Events__Main::POSTTYPE,
|
||||||
|
"author" => $this->user_id,
|
||||||
|
"post_status" => array( "publish", "future" ),
|
||||||
|
"posts_per_page" => -1,
|
||||||
|
"fields" => "ids",
|
||||||
|
"meta_query" => array(
|
||||||
|
array(
|
||||||
|
"key" => "_EventStartDate",
|
||||||
|
"value" => $today,
|
||||||
|
"compare" => ">=",
|
||||||
|
"type" => "DATETIME",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
$query = new WP_Query( $args );
|
||||||
|
|
||||||
|
return (int) $query->found_posts;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get past events count
|
||||||
|
*
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function get_past_events_count() : int {
|
||||||
|
$today = current_time( "mysql" );
|
||||||
|
$args = array(
|
||||||
|
"post_type" => Tribe__Events__Main::POSTTYPE,
|
||||||
|
"author" => $this->user_id,
|
||||||
|
"post_status" => array( "publish", "future" ),
|
||||||
|
"posts_per_page" => -1,
|
||||||
|
"fields" => "ids",
|
||||||
|
"meta_query" => array(
|
||||||
|
array(
|
||||||
|
"key" => "_EventEndDate",
|
||||||
|
"value" => $today,
|
||||||
|
"compare" => "<",
|
||||||
|
"type" => "DATETIME",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
$query = new WP_Query( $args );
|
||||||
|
|
||||||
|
return (int) $query->found_posts;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get total tickets sold
|
||||||
|
*
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public function get_total_tickets_sold() : int {
|
||||||
|
$events = $this->get_user_events();
|
||||||
|
$total = 0;
|
||||||
|
|
||||||
|
foreach ( $events as $event_id ) {
|
||||||
|
$tickets = Tribe__Tickets__Tickets::get_event_tickets( $event_id );
|
||||||
|
|
||||||
|
foreach ( $tickets as $ticket ) {
|
||||||
|
$total += absint( $ticket->qty_sold() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $total;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get total revenue
|
||||||
|
*
|
||||||
|
* @return float
|
||||||
|
*/
|
||||||
|
public function get_total_revenue() : float {
|
||||||
|
$events = $this->get_user_events();
|
||||||
|
$total = 0.0;
|
||||||
|
|
||||||
|
foreach ( $events as $event_id ) {
|
||||||
|
$tickets = Tribe__Tickets__Tickets::get_event_tickets( $event_id );
|
||||||
|
|
||||||
|
foreach ( $tickets as $ticket ) {
|
||||||
|
$total += floatval( $ticket->price ) * absint( $ticket->qty_sold() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $total;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get all event IDs for a user
|
||||||
|
*
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
private function get_user_events() : array {
|
||||||
|
$args = array(
|
||||||
|
"post_type" => Tribe__Events__Main::POSTTYPE,
|
||||||
|
"author" => $this->user_id,
|
||||||
|
"post_status" => array( "publish", "future" ),
|
||||||
|
"posts_per_page" => -1,
|
||||||
|
"fields" => "ids",
|
||||||
|
);
|
||||||
|
|
||||||
|
$query = new WP_Query( $args );
|
||||||
|
|
||||||
|
return $query->posts;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get upcoming events
|
||||||
|
*
|
||||||
|
* @param int $limit Number of events to return
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function get_upcoming_events( $limit = 5 ) : array {
|
||||||
|
$today = current_time( "mysql" );
|
||||||
|
$args = array(
|
||||||
|
"post_type" => Tribe__Events__Main::POSTTYPE,
|
||||||
|
"author" => $this->user_id,
|
||||||
|
"post_status" => array( "publish", "future" ),
|
||||||
|
"posts_per_page" => $limit,
|
||||||
|
"meta_key" => "_EventStartDate",
|
||||||
|
"orderby" => "meta_value",
|
||||||
|
"order" => "ASC",
|
||||||
|
"meta_query" => array(
|
||||||
|
array(
|
||||||
|
"key" => "_EventStartDate",
|
||||||
|
"value" => $today,
|
||||||
|
"compare" => ">=",
|
||||||
|
"type" => "DATETIME",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
$query = new WP_Query( $args );
|
||||||
|
|
||||||
|
return $query->posts;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>'
|
||||||
|
|
||||||
|
echo "Creating fixed file on staging server..."
|
||||||
|
|
||||||
|
# Use sshpass to connect and deploy
|
||||||
|
sshpass -p "${SSH_PASS}" ssh -o StrictHostKeyChecking=no "${SSH_USER}@${SSH_HOST}" -p ${SSH_PORT} << EOF
|
||||||
|
cd ${REMOTE_PATH}
|
||||||
|
|
||||||
|
# Create the fixed file
|
||||||
|
echo '${FIXED_CONTENT}' > wp-content/plugins/hvac-community-events/includes/class-hvac-dashboard-data-fixed.php
|
||||||
|
|
||||||
|
# Backup the original
|
||||||
|
cp wp-content/plugins/hvac-community-events/includes/class-hvac-dashboard-data.php \
|
||||||
|
wp-content/plugins/hvac-community-events/includes/class-hvac-dashboard-data.backup.php
|
||||||
|
|
||||||
|
# Replace with fixed version
|
||||||
|
cp wp-content/plugins/hvac-community-events/includes/class-hvac-dashboard-data-fixed.php \
|
||||||
|
wp-content/plugins/hvac-community-events/includes/class-hvac-dashboard-data.php
|
||||||
|
|
||||||
|
# Clear WordPress cache
|
||||||
|
wp cache flush --allow-root
|
||||||
|
|
||||||
|
echo "Dashboard fix deployed successfully"
|
||||||
|
EOF
|
||||||
|
|
||||||
|
echo "Testing the fix..."
|
||||||
|
sshpass -p "${SSH_PASS}" ssh -o StrictHostKeyChecking=no "${SSH_USER}@${SSH_HOST}" -p ${SSH_PORT} << 'EOF'
|
||||||
|
cd /home/974670.cloudwaysapps.com/uberrxmprk/public_html
|
||||||
|
|
||||||
|
wp eval '
|
||||||
|
$user_id = 17;
|
||||||
|
$dashboard_data = new HVAC_Dashboard_Data($user_id);
|
||||||
|
echo "User ID: " . $user_id . "\n";
|
||||||
|
echo "Total Events: " . $dashboard_data->get_total_events_count() . "\n";
|
||||||
|
echo "Upcoming Events: " . $dashboard_data->get_upcoming_events_count() . "\n";
|
||||||
|
echo "Past Events: " . $dashboard_data->get_past_events_count() . "\n";
|
||||||
|
echo "Total Tickets: " . $dashboard_data->get_total_tickets_sold() . "\n";
|
||||||
|
echo "Total Revenue: " . $dashboard_data->get_total_revenue() . "\n";
|
||||||
|
|
||||||
|
// Check the database directly
|
||||||
|
global $wpdb;
|
||||||
|
$events = $wpdb->get_results($wpdb->prepare(
|
||||||
|
"SELECT ID, post_title, post_status FROM $wpdb->posts
|
||||||
|
WHERE post_type = %s AND post_author = %d",
|
||||||
|
"tribe_events", $user_id
|
||||||
|
));
|
||||||
|
|
||||||
|
echo "\nEvents in table: " . count($events) . "\n";
|
||||||
|
foreach ($events as $event) {
|
||||||
|
echo " - " . $event->post_title . " (" . $event->post_status . ")\n";
|
||||||
|
}
|
||||||
|
' --allow-root
|
||||||
|
EOF
|
||||||
|
|
||||||
|
echo "Dashboard fix deployed. You should now see the correct stats at: ${UPSKILL_STAGING_URL}hvac-dashboard/"
|
||||||
50
wordpress-dev/bin/deploy-dashboard-fix.sh
Executable file
50
wordpress-dev/bin/deploy-dashboard-fix.sh
Executable file
|
|
@ -0,0 +1,50 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Exit on error
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# Source environment variables
|
||||||
|
source .env
|
||||||
|
|
||||||
|
echo "Deploying dashboard fix to staging..."
|
||||||
|
|
||||||
|
# Backup original dashboard data class
|
||||||
|
echo "Backing up original file..."
|
||||||
|
sshpass -p "$UPSKILL_STAGING_PASS" ssh -o StrictHostKeyChecking=no "$UPSKILL_STAGING_SSH_USER@$UPSKILL_STAGING_IP" "cd $UPSKILL_STAGING_PATH && cp wp-content/plugins/hvac-community-events/includes/class-hvac-dashboard-data.php wp-content/plugins/hvac-community-events/includes/class-hvac-dashboard-data.php.bak"
|
||||||
|
|
||||||
|
# Upload the fixed version
|
||||||
|
echo "Uploading fixed dashboard data class..."
|
||||||
|
sshpass -p "$UPSKILL_STAGING_PASS" scp -o StrictHostKeyChecking=no wordpress/wp-content/plugins/hvac-community-events/includes/class-hvac-dashboard-data-fixed.php "$UPSKILL_STAGING_SSH_USER@$UPSKILL_STAGING_IP:$UPSKILL_STAGING_PATH/wp-content/plugins/hvac-community-events/includes/class-hvac-dashboard-data-fixed.php"
|
||||||
|
|
||||||
|
# Overwrite the original with the fixed version
|
||||||
|
echo "Replacing original dashboard data class..."
|
||||||
|
sshpass -p "$UPSKILL_STAGING_PASS" ssh -o StrictHostKeyChecking=no "$UPSKILL_STAGING_SSH_USER@$UPSKILL_STAGING_IP" "cd $UPSKILL_STAGING_PATH && cp wp-content/plugins/hvac-community-events/includes/class-hvac-dashboard-data-fixed.php wp-content/plugins/hvac-community-events/includes/class-hvac-dashboard-data.php"
|
||||||
|
|
||||||
|
# Clear cache
|
||||||
|
echo "Clearing cache..."
|
||||||
|
sshpass -p "$UPSKILL_STAGING_PASS" ssh -o StrictHostKeyChecking=no "$UPSKILL_STAGING_SSH_USER@$UPSKILL_STAGING_IP" "cd $UPSKILL_STAGING_PATH && wp cache flush"
|
||||||
|
|
||||||
|
# Test the fix
|
||||||
|
echo -e "\nTesting the fix..."
|
||||||
|
sshpass -p "$UPSKILL_STAGING_PASS" ssh -o StrictHostKeyChecking=no "$UPSKILL_STAGING_SSH_USER@$UPSKILL_STAGING_IP" "cd $UPSKILL_STAGING_PATH && cat > test-dashboard-fix.php << 'EOF'
|
||||||
|
<?php
|
||||||
|
require_once('wp-load.php');
|
||||||
|
|
||||||
|
\$user_id = get_user_by('login', 'test_trainer')->ID;
|
||||||
|
echo \"User ID: \$user_id\\n\";
|
||||||
|
|
||||||
|
\$dashboard_data = new HVAC_Dashboard_Data(\$user_id);
|
||||||
|
|
||||||
|
echo \"Total Events: \" . \$dashboard_data->get_total_events_count() . \"\\n\";
|
||||||
|
echo \"Upcoming Events: \" . \$dashboard_data->get_upcoming_events_count() . \"\\n\";
|
||||||
|
echo \"Past Events: \" . \$dashboard_data->get_past_events_count() . \"\\n\";
|
||||||
|
echo \"Total Tickets: \" . \$dashboard_data->get_total_tickets_sold() . \"\\n\";
|
||||||
|
echo \"Total Revenue: \" . \$dashboard_data->get_total_revenue() . \"\\n\";
|
||||||
|
EOF"
|
||||||
|
|
||||||
|
sshpass -p "$UPSKILL_STAGING_PASS" ssh -o StrictHostKeyChecking=no "$UPSKILL_STAGING_SSH_USER@$UPSKILL_STAGING_IP" "cd $UPSKILL_STAGING_PATH && php test-dashboard-fix.php"
|
||||||
|
|
||||||
|
# Clean up test file
|
||||||
|
sshpass -p "$UPSKILL_STAGING_PASS" ssh -o StrictHostKeyChecking=no "$UPSKILL_STAGING_SSH_USER@$UPSKILL_STAGING_IP" "cd $UPSKILL_STAGING_PATH && rm test-dashboard-fix.php"
|
||||||
|
|
||||||
|
echo -e "\nDashboard fix deployed. You should now see the correct stats at: https://wordpress-974670-5399585.cloudwaysapps.com/hvac-dashboard/"
|
||||||
88
wordpress-dev/bin/fix-event-dates-mixed.sh
Executable file
88
wordpress-dev/bin/fix-event-dates-mixed.sh
Executable file
|
|
@ -0,0 +1,88 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Fix event dates with a mix of past and future dates
|
||||||
|
|
||||||
|
# Get absolute path to this script's directory
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
|
||||||
|
# Navigate to wordpress-dev directory
|
||||||
|
cd "$(dirname "$SCRIPT_DIR")" || exit 1
|
||||||
|
|
||||||
|
# Load environment variables
|
||||||
|
ENV_FILE=".env"
|
||||||
|
if [ ! -f "$ENV_FILE" ]; then
|
||||||
|
echo "Error: .env file not found at: $ENV_FILE"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
source "$ENV_FILE"
|
||||||
|
|
||||||
|
echo "=== Fixing Event Dates (Mixed Past/Future) ==="
|
||||||
|
echo "Remote host: $UPSKILL_STAGING_IP"
|
||||||
|
echo "==============================="
|
||||||
|
|
||||||
|
# Fix event dates
|
||||||
|
sshpass -p "${UPSKILL_STAGING_PASS}" ssh -o StrictHostKeyChecking=no "${UPSKILL_STAGING_SSH_USER}@${UPSKILL_STAGING_IP}" <<'EOF'
|
||||||
|
cd /home/974670.cloudwaysapps.com/uberrxmprk/public_html
|
||||||
|
|
||||||
|
echo "Updating event dates with mix of past and future..."
|
||||||
|
|
||||||
|
# Event 5482: Past event (2 months ago)
|
||||||
|
wp post meta update 5482 _EventStartDate "2025-03-15 09:00:00" --allow-root
|
||||||
|
wp post meta update 5482 _EventEndDate "2025-03-15 17:00:00" --allow-root
|
||||||
|
echo "Event 5482: Set to past (March 2025)"
|
||||||
|
|
||||||
|
# Event 5483: Past event (1 month ago)
|
||||||
|
wp post meta update 5483 _EventStartDate "2025-04-15 10:00:00" --allow-root
|
||||||
|
wp post meta update 5483 _EventEndDate "2025-04-15 18:00:00" --allow-root
|
||||||
|
echo "Event 5483: Set to past (April 2025)"
|
||||||
|
|
||||||
|
# Event 5484: Future event (1 month from now)
|
||||||
|
wp post meta update 5484 _EventStartDate "2025-06-15 09:00:00" --allow-root
|
||||||
|
wp post meta update 5484 _EventEndDate "2025-06-15 16:00:00" --allow-root
|
||||||
|
echo "Event 5484: Set to future (June 2025)"
|
||||||
|
|
||||||
|
# Event 5485: Future event (2 months from now)
|
||||||
|
wp post meta update 5485 _EventStartDate "2025-07-20 13:00:00" --allow-root
|
||||||
|
wp post meta update 5485 _EventEndDate "2025-07-20 17:00:00" --allow-root
|
||||||
|
echo "Event 5485: Set to future (July 2025)"
|
||||||
|
|
||||||
|
# Event 5486: Future event (3 months from now)
|
||||||
|
wp post meta update 5486 _EventStartDate "2025-08-25 08:00:00" --allow-root
|
||||||
|
wp post meta update 5486 _EventEndDate "2025-08-25 17:00:00" --allow-root
|
||||||
|
echo "Event 5486: Set to future (August 2025)"
|
||||||
|
|
||||||
|
echo -e "\nEvent dates updated!"
|
||||||
|
|
||||||
|
# Verify the updates
|
||||||
|
echo -e "\nVerifying updated dates:"
|
||||||
|
for EVENT_ID in 5482 5483 5484 5485 5486; do
|
||||||
|
TITLE=$(wp post get $EVENT_ID --field=post_title --allow-root)
|
||||||
|
START_DATE=$(wp post meta get $EVENT_ID _EventStartDate --allow-root)
|
||||||
|
echo "Event $EVENT_ID ($TITLE): $START_DATE"
|
||||||
|
done
|
||||||
|
|
||||||
|
# Test query for all events
|
||||||
|
echo -e "\nAll events by test_trainer:"
|
||||||
|
wp post list --post_type=tribe_events --author=17 --post_status=any --fields=ID,post_title --allow-root
|
||||||
|
|
||||||
|
# Test past events query
|
||||||
|
echo -e "\nPast events (should be 2):"
|
||||||
|
wp db query "SELECT COUNT(*) as count FROM wp_posts p
|
||||||
|
JOIN wp_postmeta m ON p.ID = m.post_id
|
||||||
|
WHERE p.post_type='tribe_events'
|
||||||
|
AND p.post_author=17
|
||||||
|
AND m.meta_key='_EventEndDate'
|
||||||
|
AND m.meta_value < NOW()" --allow-root
|
||||||
|
|
||||||
|
# Test future events query
|
||||||
|
echo -e "\nFuture events (should be 3):"
|
||||||
|
wp db query "SELECT COUNT(*) as count FROM wp_posts p
|
||||||
|
JOIN wp_postmeta m ON p.ID = m.post_id
|
||||||
|
WHERE p.post_type='tribe_events'
|
||||||
|
AND p.post_author=17
|
||||||
|
AND m.meta_key='_EventStartDate'
|
||||||
|
AND m.meta_value > NOW()" --allow-root
|
||||||
|
EOF
|
||||||
|
|
||||||
|
echo "Fix completed!"
|
||||||
65
wordpress-dev/bin/fix-event-dates.sh
Executable file
65
wordpress-dev/bin/fix-event-dates.sh
Executable file
|
|
@ -0,0 +1,65 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Fix event dates to be in the future
|
||||||
|
|
||||||
|
# Get absolute path to this script's directory
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
|
||||||
|
# Navigate to wordpress-dev directory
|
||||||
|
cd "$(dirname "$SCRIPT_DIR")" || exit 1
|
||||||
|
|
||||||
|
# Load environment variables
|
||||||
|
ENV_FILE=".env"
|
||||||
|
if [ ! -f "$ENV_FILE" ]; then
|
||||||
|
echo "Error: .env file not found at: $ENV_FILE"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
source "$ENV_FILE"
|
||||||
|
|
||||||
|
echo "=== Fixing Event Dates ==="
|
||||||
|
echo "Remote host: $UPSKILL_STAGING_IP"
|
||||||
|
echo "==============================="
|
||||||
|
|
||||||
|
# Fix event dates
|
||||||
|
sshpass -p "${UPSKILL_STAGING_PASS}" ssh -o StrictHostKeyChecking=no "${UPSKILL_STAGING_SSH_USER}@${UPSKILL_STAGING_IP}" <<'EOF'
|
||||||
|
cd /home/974670.cloudwaysapps.com/uberrxmprk/public_html
|
||||||
|
|
||||||
|
# Update event dates to be in the future
|
||||||
|
echo "Updating event dates to future dates..."
|
||||||
|
|
||||||
|
# Event 5482: 1 month from now
|
||||||
|
wp post meta update 5482 _EventStartDate "2025-06-20 09:00:00" --allow-root
|
||||||
|
wp post meta update 5482 _EventEndDate "2025-06-20 17:00:00" --allow-root
|
||||||
|
|
||||||
|
# Event 5483: 2 months from now
|
||||||
|
wp post meta update 5483 _EventStartDate "2025-07-15 10:00:00" --allow-root
|
||||||
|
wp post meta update 5483 _EventEndDate "2025-07-15 18:00:00" --allow-root
|
||||||
|
|
||||||
|
# Event 5484: 3 months from now
|
||||||
|
wp post meta update 5484 _EventStartDate "2025-08-10 09:00:00" --allow-root
|
||||||
|
wp post meta update 5484 _EventEndDate "2025-08-10 16:00:00" --allow-root
|
||||||
|
|
||||||
|
# Event 5485: 4 months from now
|
||||||
|
wp post meta update 5485 _EventStartDate "2025-09-05 13:00:00" --allow-root
|
||||||
|
wp post meta update 5485 _EventEndDate "2025-09-05 17:00:00" --allow-root
|
||||||
|
|
||||||
|
# Event 5486: 5 months from now
|
||||||
|
wp post meta update 5486 _EventStartDate "2025-10-20 08:00:00" --allow-root
|
||||||
|
wp post meta update 5486 _EventEndDate "2025-10-20 17:00:00" --allow-root
|
||||||
|
|
||||||
|
echo "Event dates updated!"
|
||||||
|
|
||||||
|
# Verify the updates
|
||||||
|
echo -e "\nVerifying updated dates:"
|
||||||
|
for EVENT_ID in 5482 5483 5484 5485 5486; do
|
||||||
|
echo -n "Event $EVENT_ID: "
|
||||||
|
wp post meta get $EVENT_ID _EventStartDate --allow-root
|
||||||
|
done
|
||||||
|
|
||||||
|
# Test query again
|
||||||
|
echo -e "\nTesting query with future dates:"
|
||||||
|
wp post list --post_type=tribe_events --author=17 --fields=ID,post_title,post_status --allow-root
|
||||||
|
EOF
|
||||||
|
|
||||||
|
echo "Fix completed!"
|
||||||
144
wordpress-dev/bin/fix-event-organizer.sh
Executable file
144
wordpress-dev/bin/fix-event-organizer.sh
Executable file
|
|
@ -0,0 +1,144 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Get absolute path to this script's directory
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
|
||||||
|
# Navigate to wordpress-dev directory
|
||||||
|
cd "$(dirname "$SCRIPT_DIR")" || exit 1
|
||||||
|
|
||||||
|
# Load environment variables
|
||||||
|
ENV_FILE=".env"
|
||||||
|
if [ ! -f "$ENV_FILE" ]; then
|
||||||
|
echo "Error: .env file not found at: $ENV_FILE"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
source "$ENV_FILE"
|
||||||
|
|
||||||
|
# Colors for output
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
RED='\033[0;31m'
|
||||||
|
YELLOW='\033[1;33m'
|
||||||
|
NC='\033[0m'
|
||||||
|
|
||||||
|
echo "=== Fixing Event Organizer IDs on Staging Server ==="
|
||||||
|
echo "Remote host: $UPSKILL_STAGING_IP"
|
||||||
|
echo "Remote user: $UPSKILL_STAGING_SSH_USER"
|
||||||
|
echo "==============================="
|
||||||
|
|
||||||
|
# Create PHP script to fix the organizer IDs
|
||||||
|
cat << 'EOF' > fix-organizers.php
|
||||||
|
<?php
|
||||||
|
// Load WordPress
|
||||||
|
require_once dirname(dirname(__FILE__)) . '/public_html/wp-load.php';
|
||||||
|
|
||||||
|
// Get test_trainer user ID
|
||||||
|
$trainer_user = get_user_by('login', 'test_trainer');
|
||||||
|
if (!$trainer_user) {
|
||||||
|
die("Error: test_trainer user not found\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
$trainer_id = $trainer_user->ID;
|
||||||
|
echo "test_trainer user ID: $trainer_id\n\n";
|
||||||
|
|
||||||
|
// Get all events authored by test_trainer
|
||||||
|
$args = array(
|
||||||
|
'post_type' => 'tribe_events',
|
||||||
|
'author' => $trainer_id,
|
||||||
|
'post_status' => 'any',
|
||||||
|
'posts_per_page' => -1,
|
||||||
|
'fields' => 'ids'
|
||||||
|
);
|
||||||
|
|
||||||
|
$event_ids = get_posts($args);
|
||||||
|
|
||||||
|
if (empty($event_ids)) {
|
||||||
|
// Try to find events by ID range
|
||||||
|
echo "No events found by author. Checking recent events...\n";
|
||||||
|
$args['author'] = 0;
|
||||||
|
$args['meta_query'] = array(
|
||||||
|
array(
|
||||||
|
'key' => 'post_ID',
|
||||||
|
'value' => array(5482, 5486),
|
||||||
|
'compare' => 'BETWEEN',
|
||||||
|
'type' => 'NUMERIC'
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
// Actually, let's just get events in the ID range we created
|
||||||
|
$event_ids = array(5482, 5483, 5484, 5485, 5486);
|
||||||
|
|
||||||
|
foreach ($event_ids as $event_id) {
|
||||||
|
if (get_post($event_id)) {
|
||||||
|
echo "Processing event ID: $event_id\n";
|
||||||
|
|
||||||
|
// Set the organizer ID to the trainer's user ID
|
||||||
|
update_post_meta($event_id, '_EventOrganizerID', $trainer_id);
|
||||||
|
|
||||||
|
// Also create an organizer post if it doesn't exist
|
||||||
|
$organizer_exists = get_posts(array(
|
||||||
|
'post_type' => 'tribe_organizer',
|
||||||
|
'posts_per_page' => 1,
|
||||||
|
'meta_key' => '_OrganizerUserID',
|
||||||
|
'meta_value' => $trainer_id
|
||||||
|
));
|
||||||
|
|
||||||
|
if (empty($organizer_exists)) {
|
||||||
|
// Create organizer post
|
||||||
|
$user_info = get_userdata($trainer_id);
|
||||||
|
$organizer_id = wp_insert_post(array(
|
||||||
|
'post_type' => 'tribe_organizer',
|
||||||
|
'post_status' => 'publish',
|
||||||
|
'post_title' => $user_info->display_name . ' (Trainer)',
|
||||||
|
'meta_input' => array(
|
||||||
|
'_OrganizerPhone' => '',
|
||||||
|
'_OrganizerWebsite' => '',
|
||||||
|
'_OrganizerEmail' => $user_info->user_email,
|
||||||
|
'_OrganizerUserID' => $trainer_id
|
||||||
|
)
|
||||||
|
));
|
||||||
|
|
||||||
|
if (!is_wp_error($organizer_id)) {
|
||||||
|
echo "Created organizer ID: $organizer_id\n";
|
||||||
|
// Update the event with the organizer ID
|
||||||
|
update_post_meta($event_id, '_EventOrganizerID', $organizer_id);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Use existing organizer
|
||||||
|
$existing_organizer = $organizer_exists[0];
|
||||||
|
update_post_meta($event_id, '_EventOrganizerID', $existing_organizer->ID);
|
||||||
|
echo "Using existing organizer ID: {$existing_organizer->ID}\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "Updated event $event_id with organizer\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
echo "Found " . count($event_ids) . " events by test_trainer\n";
|
||||||
|
|
||||||
|
foreach ($event_ids as $event_id) {
|
||||||
|
echo "Processing event ID: $event_id\n";
|
||||||
|
update_post_meta($event_id, '_EventOrganizerID', $trainer_id);
|
||||||
|
echo "Updated event $event_id with organizer ID: $trainer_id\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "\nOrganizer fixing completed!\n";
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Copy script to server
|
||||||
|
echo -e "\n${YELLOW}Copying script to server...${NC}"
|
||||||
|
sshpass -p "${UPSKILL_STAGING_PASS}" scp fix-organizers.php "${UPSKILL_STAGING_SSH_USER}@${UPSKILL_STAGING_IP}:${UPSKILL_STAGING_PATH}/"
|
||||||
|
|
||||||
|
# Execute the script
|
||||||
|
echo -e "\n${YELLOW}Running organizer fix script...${NC}"
|
||||||
|
sshpass -p "${UPSKILL_STAGING_PASS}" ssh -o StrictHostKeyChecking=no "${UPSKILL_STAGING_SSH_USER}@${UPSKILL_STAGING_IP}" \
|
||||||
|
"cd ${UPSKILL_STAGING_PATH} && /usr/bin/php fix-organizers.php"
|
||||||
|
|
||||||
|
# Clean up
|
||||||
|
echo -e "\n${YELLOW}Cleaning up...${NC}"
|
||||||
|
rm fix-organizers.php
|
||||||
|
sshpass -p "${UPSKILL_STAGING_PASS}" ssh -o StrictHostKeyChecking=no "${UPSKILL_STAGING_SSH_USER}@${UPSKILL_STAGING_IP}" \
|
||||||
|
"rm ${UPSKILL_STAGING_PATH}/fix-organizers.php"
|
||||||
|
|
||||||
|
echo -e "\n${GREEN}Organizer fix completed!${NC}"
|
||||||
99
wordpress-dev/bin/fix-occurrences.sh
Executable file
99
wordpress-dev/bin/fix-occurrences.sh
Executable file
|
|
@ -0,0 +1,99 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Fix event occurrences
|
||||||
|
|
||||||
|
# Get absolute path to this script's directory
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
|
||||||
|
# Navigate to wordpress-dev directory
|
||||||
|
cd "$(dirname "$SCRIPT_DIR")" || exit 1
|
||||||
|
|
||||||
|
# Load environment variables
|
||||||
|
ENV_FILE=".env"
|
||||||
|
if [ ! -f "$ENV_FILE" ]; then
|
||||||
|
echo "Error: .env file not found at: $ENV_FILE"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
source "$ENV_FILE"
|
||||||
|
|
||||||
|
echo "=== Fixing Event Occurrences ==="
|
||||||
|
echo "Remote host: $UPSKILL_STAGING_IP"
|
||||||
|
echo "==============================="
|
||||||
|
|
||||||
|
# Fix occurrences
|
||||||
|
sshpass -p "${UPSKILL_STAGING_PASS}" ssh -o StrictHostKeyChecking=no "${UPSKILL_STAGING_SSH_USER}@${UPSKILL_STAGING_IP}" <<'EOF'
|
||||||
|
cd /home/974670.cloudwaysapps.com/uberrxmprk/public_html
|
||||||
|
|
||||||
|
# Create PHP script to fix occurrences
|
||||||
|
cat > fix-occurrences.php << 'PHP'
|
||||||
|
<?php
|
||||||
|
require_once 'wp-load.php';
|
||||||
|
|
||||||
|
echo "Creating occurrences for our events...\n";
|
||||||
|
|
||||||
|
// For each of our events
|
||||||
|
$event_ids = array(5482, 5483, 5484, 5485, 5486);
|
||||||
|
|
||||||
|
foreach ($event_ids as $event_id) {
|
||||||
|
echo "Processing event $event_id...\n";
|
||||||
|
|
||||||
|
// Get event data
|
||||||
|
$start = get_post_meta($event_id, '_EventStartDate', true);
|
||||||
|
$end = get_post_meta($event_id, '_EventEndDate', true);
|
||||||
|
|
||||||
|
if ($start && $end) {
|
||||||
|
// Check if occurrence already exists
|
||||||
|
global $wpdb;
|
||||||
|
$existing = $wpdb->get_var($wpdb->prepare(
|
||||||
|
"SELECT occurrence_id FROM {$wpdb->prefix}tec_occurrences WHERE post_id = %d",
|
||||||
|
$event_id
|
||||||
|
));
|
||||||
|
|
||||||
|
if (!$existing) {
|
||||||
|
// Create occurrence
|
||||||
|
$wpdb->insert(
|
||||||
|
$wpdb->prefix . 'tec_occurrences',
|
||||||
|
array(
|
||||||
|
'post_id' => $event_id,
|
||||||
|
'start_date' => $start,
|
||||||
|
'start_date_utc' => $start,
|
||||||
|
'end_date' => $end,
|
||||||
|
'end_date_utc' => $end,
|
||||||
|
'duration' => strtotime($end) - strtotime($start),
|
||||||
|
'hash' => md5($event_id . $start . $end)
|
||||||
|
),
|
||||||
|
array('%d', '%s', '%s', '%s', '%s', '%d', '%s')
|
||||||
|
);
|
||||||
|
echo "Created occurrence for event $event_id\n";
|
||||||
|
} else {
|
||||||
|
echo "Occurrence already exists for event $event_id\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "\nTesting query again...\n";
|
||||||
|
$args = array(
|
||||||
|
'post_type' => 'tribe_events',
|
||||||
|
'author' => 17,
|
||||||
|
'posts_per_page' => -1,
|
||||||
|
'post_status' => 'any'
|
||||||
|
);
|
||||||
|
$query = new WP_Query($args);
|
||||||
|
echo "Found events: " . $query->found_posts . "\n";
|
||||||
|
|
||||||
|
// Test dashboard data
|
||||||
|
echo "\nTesting dashboard data...\n";
|
||||||
|
require_once '/home/974670.cloudwaysapps.com/uberrxmprk/public_html/wp-content/plugins/hvac-community-events/includes/class-hvac-dashboard-data.php';
|
||||||
|
$dashboard = new HVAC_Dashboard_Data(17);
|
||||||
|
echo "Total events: " . $dashboard->get_total_events_count() . "\n";
|
||||||
|
echo "Upcoming events: " . $dashboard->get_upcoming_events_count() . "\n";
|
||||||
|
echo "Past events: " . $dashboard->get_past_events_count() . "\n";
|
||||||
|
|
||||||
|
PHP
|
||||||
|
|
||||||
|
php fix-occurrences.php
|
||||||
|
rm fix-occurrences.php
|
||||||
|
EOF
|
||||||
|
|
||||||
|
echo "Fix completed!"
|
||||||
68
wordpress-dev/bin/fix-test-events.sh
Executable file
68
wordpress-dev/bin/fix-test-events.sh
Executable file
|
|
@ -0,0 +1,68 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Get absolute path to this script's directory
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
|
||||||
|
# Navigate to wordpress-dev directory
|
||||||
|
cd "$(dirname "$SCRIPT_DIR")" || exit 1
|
||||||
|
|
||||||
|
# Load environment variables
|
||||||
|
ENV_FILE=".env"
|
||||||
|
if [ ! -f "$ENV_FILE" ]; then
|
||||||
|
echo "Error: .env file not found at: $ENV_FILE"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
source "$ENV_FILE"
|
||||||
|
|
||||||
|
# Colors for output
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
RED='\033[0;31m'
|
||||||
|
YELLOW='\033[1;33m'
|
||||||
|
NC='\033[0m'
|
||||||
|
|
||||||
|
echo "=== Fixing Test Events on Staging Server ==="
|
||||||
|
echo "Remote host: $UPSKILL_STAGING_IP"
|
||||||
|
echo "Remote user: $UPSKILL_STAGING_SSH_USER"
|
||||||
|
echo "==============================="
|
||||||
|
|
||||||
|
# Check the recently created events
|
||||||
|
echo -e "\n${YELLOW}Finding recently created events...${NC}"
|
||||||
|
sshpass -p "${UPSKILL_STAGING_PASS}" ssh -o StrictHostKeyChecking=no "${UPSKILL_STAGING_SSH_USER}@${UPSKILL_STAGING_IP}" \
|
||||||
|
"cd ${UPSKILL_STAGING_PATH} && wp post list --post_type=tribe_events --orderby=ID --order=DESC --fields=ID,post_title,post_author --number=10 --format=table --allow-root"
|
||||||
|
|
||||||
|
# Update the events to be owned by test_trainer
|
||||||
|
echo -e "\n${YELLOW}Updating events to be owned by test_trainer...${NC}"
|
||||||
|
sshpass -p "${UPSKILL_STAGING_PASS}" ssh -o StrictHostKeyChecking=no "${UPSKILL_STAGING_SSH_USER}@${UPSKILL_STAGING_IP}" << 'EOF'
|
||||||
|
cd /home/974670.cloudwaysapps.com/uberrxmprk/public_html
|
||||||
|
|
||||||
|
# Get trainer user ID
|
||||||
|
TRAINER_ID=$(wp user get test_trainer --field=ID --allow-root)
|
||||||
|
echo "Trainer ID: $TRAINER_ID"
|
||||||
|
|
||||||
|
# Find our test events by title and update their author
|
||||||
|
EVENT_TITLES=(
|
||||||
|
"HVAC System Maintenance Workshop"
|
||||||
|
"Advanced HVAC Diagnostics Training"
|
||||||
|
"HVAC Installation Best Practices"
|
||||||
|
"Commercial HVAC Systems Overview"
|
||||||
|
"HVAC Energy Efficiency Certification"
|
||||||
|
)
|
||||||
|
|
||||||
|
for TITLE in "${EVENT_TITLES[@]}"; do
|
||||||
|
echo "Updating event: $TITLE"
|
||||||
|
EVENT_ID=$(wp post list --post_type=tribe_events --title="$TITLE" --field=ID --allow-root)
|
||||||
|
if [ -n "$EVENT_ID" ]; then
|
||||||
|
wp post update $EVENT_ID --post_author=$TRAINER_ID --allow-root
|
||||||
|
echo "Updated event ID $EVENT_ID"
|
||||||
|
else
|
||||||
|
echo "Event not found: $TITLE"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Verify the updates
|
||||||
|
echo -e "\nVerifying updates..."
|
||||||
|
wp post list --post_type=tribe_events --author=$TRAINER_ID --fields=ID,post_title,post_author --format=table --allow-root
|
||||||
|
EOF
|
||||||
|
|
||||||
|
echo -e "\n${GREEN}Test events fixed!${NC}"
|
||||||
79
wordpress-dev/bin/test-query.sh
Executable file
79
wordpress-dev/bin/test-query.sh
Executable file
|
|
@ -0,0 +1,79 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Test event queries on staging
|
||||||
|
|
||||||
|
# Get absolute path to this script's directory
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
|
||||||
|
# Navigate to wordpress-dev directory
|
||||||
|
cd "$(dirname "$SCRIPT_DIR")" || exit 1
|
||||||
|
|
||||||
|
# Load environment variables
|
||||||
|
ENV_FILE=".env"
|
||||||
|
if [ ! -f "$ENV_FILE" ]; then
|
||||||
|
echo "Error: .env file not found at: $ENV_FILE"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
source "$ENV_FILE"
|
||||||
|
|
||||||
|
echo "=== Testing Event Queries ==="
|
||||||
|
echo "Remote host: $UPSKILL_STAGING_IP"
|
||||||
|
echo "==============================="
|
||||||
|
|
||||||
|
# Test query
|
||||||
|
sshpass -p "${UPSKILL_STAGING_PASS}" ssh -o StrictHostKeyChecking=no "${UPSKILL_STAGING_SSH_USER}@${UPSKILL_STAGING_IP}" <<'EOF'
|
||||||
|
cd /home/974670.cloudwaysapps.com/uberrxmprk/public_html
|
||||||
|
|
||||||
|
# Create PHP test script
|
||||||
|
cat > test-query.php << 'PHP'
|
||||||
|
<?php
|
||||||
|
require_once 'wp-load.php';
|
||||||
|
|
||||||
|
// Check post type constant
|
||||||
|
echo "Post type constant: " . Tribe__Events__Main::POSTTYPE . "\n";
|
||||||
|
|
||||||
|
// Test 1: Direct query with WP_Query
|
||||||
|
echo "\nTest 1: WP_Query with author=17\n";
|
||||||
|
$args = array(
|
||||||
|
'post_type' => Tribe__Events__Main::POSTTYPE,
|
||||||
|
'author' => 17,
|
||||||
|
'post_status' => 'any',
|
||||||
|
'posts_per_page' => -1,
|
||||||
|
'fields' => 'ids'
|
||||||
|
);
|
||||||
|
$query = new WP_Query($args);
|
||||||
|
echo "Found posts: " . $query->found_posts . "\n";
|
||||||
|
var_dump($query->posts);
|
||||||
|
|
||||||
|
// Test 2: get_posts
|
||||||
|
echo "\nTest 2: get_posts with author=17\n";
|
||||||
|
$events = get_posts($args);
|
||||||
|
echo "Found events: " . count($events) . "\n";
|
||||||
|
|
||||||
|
// Test 3: Direct DB query
|
||||||
|
echo "\nTest 3: Direct DB query\n";
|
||||||
|
global $wpdb;
|
||||||
|
$results = $wpdb->get_results("SELECT ID, post_title, post_author FROM {$wpdb->posts} WHERE post_type='tribe_events' AND post_author=17");
|
||||||
|
echo "Found in DB: " . count($results) . "\n";
|
||||||
|
foreach ($results as $r) {
|
||||||
|
echo "ID: {$r->ID}, Title: {$r->post_title}\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Test 4: Check plugin active
|
||||||
|
echo "\nTest 4: Plugin status\n";
|
||||||
|
echo "TEC Active: " . (class_exists('Tribe__Events__Main') ? 'Yes' : 'No') . "\n";
|
||||||
|
echo "Post type registered: " . (post_type_exists('tribe_events') ? 'Yes' : 'No') . "\n";
|
||||||
|
|
||||||
|
// Test 5: Clear cache and try again
|
||||||
|
echo "\nTest 5: Clearing cache\n";
|
||||||
|
wp_cache_flush();
|
||||||
|
$query2 = new WP_Query($args);
|
||||||
|
echo "After cache clear - Found posts: " . $query2->found_posts . "\n";
|
||||||
|
PHP
|
||||||
|
|
||||||
|
php test-query.php
|
||||||
|
rm test-query.php
|
||||||
|
EOF
|
||||||
|
|
||||||
|
echo "Test completed!"
|
||||||
|
|
@ -15,13 +15,15 @@
|
||||||
if (!defined('ABSPATH')) {
|
if (!defined('ABSPATH')) {
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
// error_log('[HVAC DEBUG] Main plugin file hvac-community-events.php loaded.'); // REMOVED DEBUG LOG
|
|
||||||
|
|
||||||
// Define plugin constants
|
// Define plugin constants
|
||||||
define('HVAC_CE_VERSION', '1.0.0');
|
define('HVAC_CE_VERSION', '1.0.0');
|
||||||
define('HVAC_CE_PLUGIN_DIR', plugin_dir_path(__FILE__));
|
define('HVAC_CE_PLUGIN_DIR', plugin_dir_path(__FILE__));
|
||||||
define('HVAC_CE_PLUGIN_URL', plugin_dir_url(__FILE__));
|
define('HVAC_CE_PLUGIN_URL', plugin_dir_url(__FILE__));
|
||||||
|
|
||||||
|
// Include the logger class early
|
||||||
|
require_once HVAC_CE_PLUGIN_DIR . 'includes/class-hvac-logger.php';
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create required pages and roles upon plugin activation.
|
* Create required pages and roles upon plugin activation.
|
||||||
|
|
@ -30,7 +32,7 @@ function hvac_ce_create_required_pages() {
|
||||||
|
|
||||||
// Ensure the roles class is available
|
// Ensure the roles class is available
|
||||||
require_once HVAC_CE_PLUGIN_DIR . 'includes/class-hvac-roles.php';
|
require_once HVAC_CE_PLUGIN_DIR . 'includes/class-hvac-roles.php';
|
||||||
error_log('[HVAC DEBUG] hvac_ce_create_required_pages: Starting page creation process.');
|
HVAC_Logger::info('Starting page creation process', 'Activation');
|
||||||
$required_pages = [
|
$required_pages = [
|
||||||
'community-login' => [
|
'community-login' => [
|
||||||
'title' => 'Community Login',
|
'title' => 'Community Login',
|
||||||
|
|
@ -68,7 +70,7 @@ function hvac_ce_create_required_pages() {
|
||||||
$existing_page = get_page_by_path($slug, OBJECT, 'page');
|
$existing_page = get_page_by_path($slug, OBJECT, 'page');
|
||||||
|
|
||||||
if (!$existing_page) {
|
if (!$existing_page) {
|
||||||
error_log("HVAC CE: Page with slug '{$slug}' not found. Attempting to create."); // Add logging: page missing
|
HVAC_Logger::info("Page with slug '{$slug}' not found. Attempting to create.", 'Activation');
|
||||||
// Page does not exist, create it
|
// Page does not exist, create it
|
||||||
$post_data = [
|
$post_data = [
|
||||||
'post_title' => $page_data['title'],
|
'post_title' => $page_data['title'],
|
||||||
|
|
@ -84,9 +86,9 @@ function hvac_ce_create_required_pages() {
|
||||||
|
|
||||||
// Log the result of wp_insert_post
|
// Log the result of wp_insert_post
|
||||||
if (is_wp_error($page_id)) {
|
if (is_wp_error($page_id)) {
|
||||||
error_log("[HVAC DEBUG] hvac_ce_create_required_pages: Error creating page '{$slug}': " . $page_id->get_error_message());
|
HVAC_Logger::error("Error creating page '{$slug}': " . $page_id->get_error_message(), 'Activation');
|
||||||
} else {
|
} else {
|
||||||
error_log("[HVAC DEBUG] hvac_ce_create_required_pages: Successfully created page '{$slug}' with ID: {$page_id}.");
|
HVAC_Logger::info("Successfully created page '{$slug}' with ID: {$page_id}.", 'Activation');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Store the created page ID - Rewritten to avoid tool issue with &&
|
// Store the created page ID - Rewritten to avoid tool issue with &&
|
||||||
|
|
@ -113,11 +115,11 @@ function hvac_ce_create_required_pages() {
|
||||||
$roles_manager = new HVAC_Roles();
|
$roles_manager = new HVAC_Roles();
|
||||||
$result = $roles_manager->create_trainer_role();
|
$result = $roles_manager->create_trainer_role();
|
||||||
if ($result) {
|
if ($result) {
|
||||||
error_log('[HVAC DEBUG] hvac_ce_create_required_pages: Successfully created hvac_trainer role.');
|
HVAC_Logger::info('Successfully created hvac_trainer role.', 'Activation');
|
||||||
} else {
|
} else {
|
||||||
error_log('[HVAC DEBUG] hvac_ce_create_required_pages: Failed to create hvac_trainer role.');
|
HVAC_Logger::error('Failed to create hvac_trainer role.', 'Activation');
|
||||||
}
|
}
|
||||||
error_log('[HVAC DEBUG] hvac_ce_create_required_pages: Completed page creation and role setup process.');
|
HVAC_Logger::info('Completed page creation and role setup process', 'Activation');
|
||||||
|
|
||||||
} // <<-- Brace moved here
|
} // <<-- Brace moved here
|
||||||
register_activation_hook(__FILE__, 'hvac_ce_create_required_pages');
|
register_activation_hook(__FILE__, 'hvac_ce_create_required_pages');
|
||||||
|
|
@ -130,7 +132,7 @@ function hvac_ce_remove_roles() {
|
||||||
require_once HVAC_CE_PLUGIN_DIR . 'includes/class-hvac-roles.php';
|
require_once HVAC_CE_PLUGIN_DIR . 'includes/class-hvac-roles.php';
|
||||||
$roles_manager = new HVAC_Roles();
|
$roles_manager = new HVAC_Roles();
|
||||||
$roles_manager->remove_trainer_role();
|
$roles_manager->remove_trainer_role();
|
||||||
error_log('HVAC CE: Deactivation hook fired, attempted to remove hvac_trainer role.');
|
HVAC_Logger::info('Deactivation hook fired, attempted to remove hvac_trainer role.', 'Deactivation');
|
||||||
}
|
}
|
||||||
register_deactivation_hook(__FILE__, 'hvac_ce_remove_roles');
|
register_deactivation_hook(__FILE__, 'hvac_ce_remove_roles');
|
||||||
|
|
||||||
|
|
@ -177,10 +179,9 @@ require_once HVAC_CE_PLUGIN_DIR . 'includes/class-hvac-community-events.php';
|
||||||
|
|
||||||
// Initialize the plugin
|
// Initialize the plugin
|
||||||
function hvac_community_events_init() {
|
function hvac_community_events_init() {
|
||||||
// error_log('[HVAC DEBUG] hvac_community_events_init function called (plugins_loaded hook).'); // REMOVED DEBUG LOG
|
HVAC_Logger::info('Initializing HVAC Community Events plugin', 'Core');
|
||||||
return HVAC_Community_Events::instance();
|
return HVAC_Community_Events::instance();
|
||||||
}
|
}
|
||||||
// error_log('[HVAC DEBUG] About to add plugins_loaded action hook.'); // REMOVED DEBUG LOG
|
|
||||||
add_action('plugins_loaded', 'hvac_community_events_init');
|
add_action('plugins_loaded', 'hvac_community_events_init');
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -27,13 +27,13 @@ class HVAC_Community_Events {
|
||||||
* Constructor
|
* Constructor
|
||||||
*/
|
*/
|
||||||
public function __construct() {
|
public function __construct() {
|
||||||
error_log('[HVAC DEBUG] HVAC_Community_Events: Constructor started.');
|
HVAC_Logger::info('HVAC_Community_Events constructor started', 'Core');
|
||||||
$this->define_constants();
|
$this->define_constants();
|
||||||
error_log('[HVAC DEBUG] HVAC_Community_Events: define_constants completed.');
|
HVAC_Logger::info('Constants defined', 'Core');
|
||||||
$this->includes();
|
$this->includes();
|
||||||
error_log('[HVAC DEBUG] HVAC_Community_Events: includes completed.');
|
HVAC_Logger::info('Includes completed', 'Core');
|
||||||
$this->init_hooks();
|
$this->init_hooks();
|
||||||
error_log('[HVAC DEBUG] HVAC_Community_Events: init_hooks completed.');
|
HVAC_Logger::info('Hooks initialized', 'Core');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -47,7 +47,7 @@ class HVAC_Community_Events {
|
||||||
* Include required files
|
* Include required files
|
||||||
*/
|
*/
|
||||||
private function includes() {
|
private function includes() {
|
||||||
error_log('[HVAC DEBUG] HVAC_Community_Events: includes method started.');
|
HVAC_Logger::info('Loading required files', 'Core');
|
||||||
$files_to_include = [
|
$files_to_include = [
|
||||||
'class-hvac-roles.php',
|
'class-hvac-roles.php',
|
||||||
'class-hvac-registration.php',
|
'class-hvac-registration.php',
|
||||||
|
|
@ -60,12 +60,12 @@ class HVAC_Community_Events {
|
||||||
$path = HVAC_CE_PLUGIN_DIR . 'includes/' . $file;
|
$path = HVAC_CE_PLUGIN_DIR . 'includes/' . $file;
|
||||||
if (file_exists($path)) {
|
if (file_exists($path)) {
|
||||||
require_once $path;
|
require_once $path;
|
||||||
error_log("[HVAC DEBUG] HVAC_Community_Events: Included file {$file}.");
|
HVAC_Logger::info("Included file: {$file}", 'Core');
|
||||||
} else {
|
} else {
|
||||||
error_log("[HVAC DEBUG] HVAC_Community_Events: Failed to include file {$file}. File not found.");
|
HVAC_Logger::error("Failed to include file: {$file} - File not found", 'Core');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
error_log('[HVAC DEBUG] HVAC_Community_Events: includes method completed.');
|
HVAC_Logger::info('All required files loaded', 'Core');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -109,13 +109,13 @@ class HVAC_Community_Events {
|
||||||
* Initialize plugin actions attached to 'init' hook
|
* Initialize plugin actions attached to 'init' hook
|
||||||
*/
|
*/
|
||||||
public function init() {
|
public function init() {
|
||||||
error_log('[HVAC DEBUG] HVAC_Community_Events: init method started.');
|
HVAC_Logger::info('Init method started', 'Core');
|
||||||
// Initialize handlers
|
// Initialize handlers
|
||||||
new \HVAC_Community_Events\Community\Login_Handler();
|
new \HVAC_Community_Events\Community\Login_Handler();
|
||||||
error_log('[HVAC DEBUG] HVAC_Community_Events: Initialized Login_Handler.');
|
HVAC_Logger::info('Login_Handler initialized', 'Core');
|
||||||
new HVAC_Registration();
|
new HVAC_Registration();
|
||||||
error_log('[HVAC DEBUG] HVAC_Community_Events: Initialized HVAC_Registration.');
|
HVAC_Logger::info('HVAC_Registration initialized', 'Core');
|
||||||
error_log('[HVAC DEBUG] HVAC_Community_Events: init method completed.');
|
HVAC_Logger::info('Init method completed', 'Core');
|
||||||
|
|
||||||
// Prevent trainers from accessing wp-admin
|
// Prevent trainers from accessing wp-admin
|
||||||
add_action('admin_init', array($this, 'redirect_trainers_from_admin'));
|
add_action('admin_init', array($this, 'redirect_trainers_from_admin'));
|
||||||
|
|
|
||||||
|
|
@ -46,15 +46,10 @@ class HVAC_Dashboard_Data {
|
||||||
public function get_total_events_count() : int {
|
public function get_total_events_count() : int {
|
||||||
$args = array(
|
$args = array(
|
||||||
'post_type' => Tribe__Events__Main::POSTTYPE,
|
'post_type' => Tribe__Events__Main::POSTTYPE,
|
||||||
// 'author' => $this->user_id, // Query by organizer instead
|
'author' => $this->user_id, // Query by post author, not organizer
|
||||||
'post_status' => array( 'publish', 'future', 'draft', 'pending', 'private' ),
|
'post_status' => array( 'publish', 'future', 'draft', 'pending', 'private' ),
|
||||||
'posts_per_page' => -1,
|
'posts_per_page' => -1,
|
||||||
'fields' => 'ids', // Only need the count
|
'fields' => 'ids', // Only need the count
|
||||||
// Restore organizer query
|
|
||||||
'meta_key' => '_EventOrganizerID',
|
|
||||||
'meta_value' => $this->user_id,
|
|
||||||
'meta_compare' => '=', // Explicitly set compare
|
|
||||||
'meta_type' => 'NUMERIC', // Specify numeric comparison
|
|
||||||
);
|
);
|
||||||
$query = new WP_Query( $args );
|
$query = new WP_Query( $args );
|
||||||
return (int) $query->found_posts;
|
return (int) $query->found_posts;
|
||||||
|
|
@ -222,17 +217,9 @@ class HVAC_Dashboard_Data {
|
||||||
|
|
||||||
$args = array(
|
$args = array(
|
||||||
'post_type' => Tribe__Events__Main::POSTTYPE,
|
'post_type' => Tribe__Events__Main::POSTTYPE,
|
||||||
// 'author' => $this->user_id, // Query by organizer instead
|
'author' => $this->user_id, // Query by post author
|
||||||
'post_status' => $post_status,
|
'post_status' => $post_status,
|
||||||
'posts_per_page' => -1,
|
'posts_per_page' => -1,
|
||||||
'meta_query' => array( // Use meta_query for organizer filtering
|
|
||||||
array(
|
|
||||||
'key' => '_EventOrganizerID',
|
|
||||||
'value' => $this->user_id,
|
|
||||||
'compare' => '=',
|
|
||||||
'type' => 'NUMERIC', // Specify numeric comparison
|
|
||||||
),
|
|
||||||
),
|
|
||||||
'orderby' => 'meta_value', // Order by start date
|
'orderby' => 'meta_value', // Order by start date
|
||||||
'meta_key' => '_EventStartDate', // Specify the meta key for ordering
|
'meta_key' => '_EventStartDate', // Specify the meta key for ordering
|
||||||
'order' => 'DESC', // Show most recent first
|
'order' => 'DESC', // Show most recent first
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue