- 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
258 lines
No EOL
7.4 KiB
Bash
Executable file
258 lines
No EOL
7.4 KiB
Bash
Executable file
#!/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/" |