upskill-event-manager/wordpress-dev/bin/deploy-dashboard-fix-v3.sh
bengizmo 5d45ed594d 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
2025-05-19 06:55:34 -03:00

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/"