upskill-event-manager/wordpress-dev/bin/verify-tec-plugins.sh

178 lines
No EOL
6 KiB
Bash
Executable file

#!/bin/bash
# Script to verify The Events Calendar and Community Events plugin activation status
# Usage: ./verify-tec-plugins.sh [staging_url] [wp_cli_path]
# Load environment variables from .env if present
if [ -f "$SCRIPT_DIR/../.env" ]; then
set -o allexport
source "$SCRIPT_DIR/../.env"
set +o allexport
fi
# Ensure wp-cli is installed and available locally (for local use only)
if [ -f "$SCRIPT_DIR/install-and-verify-wp-cli.sh" ]; then
bash "$SCRIPT_DIR/install-and-verify-wp-cli.sh"
fi
# Default values
STAGING_URL=${1:-"https://wordpress-974670-5399585.cloudwaysapps.com"}
# Use MASTER credentials for Cloudways VPS
WP_CLI_REMOTE_PATH="${UPSKILL_STAGING_PATH:-/home/974670.cloudwaysapps.com/uberrxmprk/public_html}/wp-content/plugins/hvac-community-events"
WP_CLI_REMOTE="cd $WP_CLI_REMOTE_PATH && wp"
SSH_USER="${UPSKILL_STAGING_MASTER_SSH_USER:-master_kczkabufnc}"
SSH_IP="${UPSKILL_STAGING_IP:-146.190.76.204}"
SSHPASS="${UPSKILL_STAGING_MASTER_SSH_PASS:-tmvKuJQ8QptF}"
# Debug: Print resolved SSH variables
echo "DEBUG: Using SSH_USER=$SSH_USER, SSH_IP=$SSH_IP, WP_CLI_REMOTE_PATH=$WP_CLI_REMOTE_PATH"
# Helper to run wp-cli remotely with sshpass
run_wp_remote() {
local cmd="$1"
sshpass -p "$SSHPASS" ssh -o StrictHostKeyChecking=no "$SSH_USER@$SSH_IP" "$WP_CLI_REMOTE $cmd --url=$STAGING_URL --allow-root"
}
# Colors for output
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[0;33m'
NC='\033[0m' # No Color
echo "=== The Events Calendar Plugin Verification ==="
echo "Checking plugin activation status on: $STAGING_URL"
echo ""
# Required plugins to check
declare -a REQUIRED_PLUGINS=(
"the-events-calendar"
"events-calendar-pro"
"the-events-calendar-community-events"
"event-tickets"
"event-tickets-plus"
)
# Function to check if a plugin is active
check_plugin() {
local plugin=$1
local plugin_name=$2
echo -n "Checking $plugin_name... "
# Use WP-CLI to check if plugin is active
# This assumes WP-CLI is configured to work with the staging site
RESULT=$(run_wp_remote "plugin is-active $plugin")
if [[ $? -eq 0 ]]; then
echo -e "${GREEN}ACTIVE${NC}"
return 0
else
echo -e "${RED}NOT ACTIVE${NC}"
return 1
fi
}
# Function to get plugin details
get_plugin_details() {
local plugin=$1
echo "Getting details for $plugin..."
run_wp_remote "plugin get $plugin --format=json" 2>/dev/null || echo "{}"
}
# Track overall status
OVERALL_STATUS=0
# Check each required plugin
echo "=== Required Plugins ==="
check_plugin "the-events-calendar" "The Events Calendar" || OVERALL_STATUS=1
check_plugin "events-calendar-pro" "Events Calendar PRO" || OVERALL_STATUS=1
check_plugin "the-events-calendar-community-events" "Community Events" || OVERALL_STATUS=1
check_plugin "event-tickets" "Event Tickets" || OVERALL_STATUS=1
check_plugin "event-tickets-plus" "Event Tickets Plus" || OVERALL_STATUS=1
echo ""
echo "=== Plugin Details ==="
# Get and display detailed information about each plugin
for plugin in "${REQUIRED_PLUGINS[@]}"; do
DETAILS=$(get_plugin_details $plugin)
# Extract version and status using grep and cut
VERSION=$(echo $DETAILS | grep -o '"version":"[^"]*"' | cut -d'"' -f4)
STATUS=$(echo $DETAILS | grep -o '"status":"[^"]*"' | cut -d'"' -f4)
if [[ -z "$VERSION" ]]; then
echo -e "${plugin}: ${RED}Not installed${NC}"
else
if [[ "$STATUS" == "active" ]]; then
echo -e "${plugin}: ${GREEN}v${VERSION} (Active)${NC}"
else
echo -e "${plugin}: ${YELLOW}v${VERSION} (Inactive)${NC}"
OVERALL_STATUS=1
fi
fi
done
echo ""
echo "=== Checking Plugin Dependencies ==="
# Check if The Events Calendar is active before Community Events
check_plugin "the-events-calendar" "The Events Calendar" > /dev/null
TEC_ACTIVE=$?
check_plugin "the-events-calendar-community-events" "Community Events" > /dev/null
CE_ACTIVE=$?
if [[ $TEC_ACTIVE -eq 0 && $CE_ACTIVE -eq 0 ]]; then
echo -e "${GREEN}✓ Community Events and its required dependency (The Events Calendar) are both active.${NC}"
elif [[ $TEC_ACTIVE -eq 1 && $CE_ACTIVE -eq 0 ]]; then
echo -e "${RED}✗ Community Events is active but its required dependency (The Events Calendar) is not active!${NC}"
OVERALL_STATUS=1
fi
# Check if Event Tickets is active before Event Tickets Plus
check_plugin "event-tickets" "Event Tickets" > /dev/null
ET_ACTIVE=$?
check_plugin "event-tickets-plus" "Event Tickets Plus" > /dev/null
ETP_ACTIVE=$?
if [[ $ET_ACTIVE -eq 0 && $ETP_ACTIVE -eq 0 ]]; then
echo -e "${GREEN}✓ Event Tickets Plus and its required dependency (Event Tickets) are both active.${NC}"
elif [[ $ET_ACTIVE -eq 1 && $ETP_ACTIVE -eq 0 ]]; then
echo -e "${RED}✗ Event Tickets Plus is active but its required dependency (Event Tickets) is not active!${NC}"
OVERALL_STATUS=1
fi
echo ""
echo "=== Checking Plugin Shortcodes ==="
# Check if shortcodes are registered by looking at the rendered HTML
echo "Checking Community Events shortcodes..."
MANAGE_EVENT_HTML=$(run_wp_remote "eval 'echo do_shortcode(\"[tribe_community_events]\");'")
if [[ $MANAGE_EVENT_HTML == *"tribe-community-events"* ]]; then
echo -e "${GREEN}✓ [tribe_community_events] shortcode is working${NC}"
else
echo -e "${RED}✗ [tribe_community_events] shortcode is not rendering properly${NC}"
OVERALL_STATUS=1
fi
MY_EVENTS_HTML=$(run_wp_remote "eval 'echo do_shortcode(\"[tribe_community_events view=\\\"list\\\"]\");'")
if [[ $MY_EVENTS_HTML == *"tribe-community-events-list"* ]]; then
echo -e "${GREEN}✓ [tribe_community_events view=\"list\"] shortcode is working${NC}"
else
echo -e "${RED}✗ [tribe_community_events view=\"list\"] shortcode is not rendering properly${NC}"
OVERALL_STATUS=1
fi
echo ""
echo "=== Summary ==="
if [[ $OVERALL_STATUS -eq 0 ]]; then
echo -e "${GREEN}All required plugins are active and properly configured.${NC}"
exit 0
else
echo -e "${RED}Some plugins are missing or not properly configured. See details above.${NC}"
exit 1
fi