- Fixed dashboard data class to use consistent post_author queries instead of mixed _EventOrganizerID meta queries - This resolves the issue where dashboard showed 18 events but 0 tickets/revenue - Added WordPress API credentials to environment (.env) - Created comprehensive API debugging utilities (wp-api-debug.sh, wp-api-fix.sh, api-only-debug.sh) - Enhanced test and deployment suite with WordPress REST API capabilities - Root cause: get_total_tickets_sold() and get_total_revenue() were using _EventOrganizerID while other methods used post_author 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
247 lines
No EOL
8.2 KiB
Bash
Executable file
247 lines
No EOL
8.2 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
# Exit on error
|
|
set -e
|
|
|
|
# Source environment variables
|
|
if [ -f ".env" ]; then
|
|
source .env
|
|
else
|
|
echo "Error: .env file not found. Please create it with the required variables."
|
|
exit 1
|
|
fi
|
|
|
|
echo "===== Fixing Login Issues via PHP ====="
|
|
|
|
# Create a PHP script to fix login issues
|
|
echo "Creating PHP script to fix login issues..."
|
|
sshpass -p "$UPSKILL_STAGING_PASS" ssh -o StrictHostKeyChecking=no "$UPSKILL_STAGING_SSH_USER@$UPSKILL_STAGING_IP" "cd $UPSKILL_STAGING_PATH && cat > fix-login-issues.php << 'EOF'
|
|
<?php
|
|
// Load WordPress
|
|
require_once('wp-load.php');
|
|
|
|
echo \"Fixing Login Issues...\n\";
|
|
|
|
// 1. Re-enable login failure handler
|
|
echo \"1. Re-enabling login failure handler...\n\";
|
|
\$login_handler_path = WP_CONTENT_DIR . '/plugins/hvac-community-events/includes/community/class-login-handler.php';
|
|
if (file_exists(\$login_handler_path)) {
|
|
\$content = file_get_contents(\$login_handler_path);
|
|
if (strpos(\$content, '// add_action(\'wp_login_failed\'') !== false) {
|
|
\$fixed_content = str_replace(
|
|
'// add_action(\'wp_login_failed\', array($this, \'handle_login_failure\'));',
|
|
'add_action(\'wp_login_failed\', array($this, \'handle_login_failure\'));',
|
|
\$content
|
|
);
|
|
if (file_put_contents(\$login_handler_path, \$fixed_content)) {
|
|
echo \"Login failure handler re-enabled\n\";
|
|
} else {
|
|
echo \"Failed to update login handler file\n\";
|
|
}
|
|
} else {
|
|
echo \"Login failure handler already enabled\n\";
|
|
}
|
|
} else {
|
|
echo \"Login handler file not found\n\";
|
|
}
|
|
|
|
// 2. Create mu-plugin to disable caching
|
|
echo \"2. Creating mu-plugin to disable caching...\n\";
|
|
\$mu_plugin_dir = WP_CONTENT_DIR . '/mu-plugins';
|
|
if (!is_dir(\$mu_plugin_dir)) {
|
|
mkdir(\$mu_plugin_dir, 0755);
|
|
}
|
|
|
|
\$nocache_plugin_path = \$mu_plugin_dir . '/hvac-nocache.php';
|
|
\$nocache_plugin_content = '<?php
|
|
/**
|
|
* Plugin Name: HVAC No-Cache for Login
|
|
* Description: Prevents caching on login and dashboard pages
|
|
* Version: 1.0
|
|
*/
|
|
|
|
function hvac_disable_cache() {
|
|
// Check if we are on a login-related page
|
|
\$uri = isset(\$_SERVER[\"REQUEST_URI\"]) ? \$_SERVER[\"REQUEST_URI\"] : \"\";
|
|
\$disable_cache = false;
|
|
|
|
// Pages that should never be cached
|
|
\$no_cache_pages = array(
|
|
\"community-login\",
|
|
\"wp-login.php\",
|
|
\"hvac-dashboard\",
|
|
\"certificate-reports\",
|
|
\"generate-certificates\",
|
|
\"event-summary\"
|
|
);
|
|
|
|
foreach (\$no_cache_pages as \$page) {
|
|
if (strpos(\$uri, \$page) !== false) {
|
|
\$disable_cache = true;
|
|
break;
|
|
}
|
|
}
|
|
|
|
// Also disable cache for logged-in users or authentication attempts
|
|
if (is_user_logged_in() || isset(\$_POST[\"log\"]) || isset(\$_GET[\"login\"])) {
|
|
\$disable_cache = true;
|
|
}
|
|
|
|
if (\$disable_cache) {
|
|
// Define WordPress constant
|
|
if (!defined(\"DONOTCACHEPAGE\")) {
|
|
define(\"DONOTCACHEPAGE\", true);
|
|
}
|
|
|
|
// Set no-cache headers
|
|
header(\"Cache-Control: no-store, no-cache, must-revalidate, max-age=0\");
|
|
header(\"Pragma: no-cache\");
|
|
}
|
|
}
|
|
add_action(\"init\", \"hvac_disable_cache\", 0);
|
|
|
|
// Disable Breeze caching for logged-in users
|
|
function hvac_disable_breeze_cache() {
|
|
if (is_user_logged_in()) {
|
|
add_filter(\"breeze_skip_cache\", \"__return_true\");
|
|
}
|
|
}
|
|
add_action(\"init\", \"hvac_disable_breeze_cache\");
|
|
';
|
|
|
|
if (file_put_contents(\$nocache_plugin_path, \$nocache_plugin_content)) {
|
|
echo \"No-cache plugin created successfully\n\";
|
|
} else {
|
|
echo \"Failed to create no-cache plugin\n\";
|
|
}
|
|
|
|
// 3. Fix test_trainer user
|
|
echo \"3. Verifying test_trainer user...\n\";
|
|
\$user = get_user_by('login', 'test_trainer');
|
|
if (\$user) {
|
|
// Reset password just to be sure
|
|
wp_set_password('test_password', \$user->ID);
|
|
echo \"Password reset for test_trainer\n\";
|
|
|
|
// Clear user sessions
|
|
\$sessions = WP_Session_Tokens::get_instance(\$user->ID);
|
|
\$sessions->destroy_all();
|
|
echo \"All sessions cleared for test_trainer\n\";
|
|
|
|
// Verify role
|
|
\$user_meta = get_userdata(\$user->ID);
|
|
if (!\$user_meta->roles || !in_array('hvac_trainer', \$user_meta->roles)) {
|
|
\$user->add_role('hvac_trainer');
|
|
echo \"Added hvac_trainer role\n\";
|
|
} else {
|
|
echo \"User already has hvac_trainer role\n\";
|
|
}
|
|
|
|
// Make sure user has the right capabilities
|
|
if (!user_can(\$user->ID, 'view_hvac_dashboard')) {
|
|
\$role = get_role('hvac_trainer');
|
|
if (\$role) {
|
|
\$role->add_cap('view_hvac_dashboard', true);
|
|
echo \"Added view_hvac_dashboard capability to hvac_trainer role\n\";
|
|
}
|
|
} else {
|
|
echo \"User already has view_hvac_dashboard capability\n\";
|
|
}
|
|
} else {
|
|
echo \"test_trainer user not found\n\";
|
|
}
|
|
|
|
// 4. Clear Breeze cache
|
|
echo \"4. Clearing Breeze cache...\n\";
|
|
if (function_exists('breeze_cache_flush')) {
|
|
breeze_cache_flush();
|
|
echo \"Cache cleared via function\n\";
|
|
} else {
|
|
// Try manually clearing cache directories
|
|
\$cache_dirs = array(
|
|
WP_CONTENT_DIR . '/cache/breeze',
|
|
WP_CONTENT_DIR . '/uploads/breeze/css',
|
|
WP_CONTENT_DIR . '/uploads/breeze/js'
|
|
);
|
|
|
|
\$cleared = false;
|
|
foreach (\$cache_dirs as \$dir) {
|
|
if (is_dir(\$dir)) {
|
|
\$files = glob(\$dir . '/*');
|
|
if (\$files) {
|
|
foreach (\$files as \$file) {
|
|
if (is_file(\$file)) {
|
|
@unlink(\$file);
|
|
}
|
|
}
|
|
}
|
|
echo \"Cleared cache directory: \$dir\n\";
|
|
\$cleared = true;
|
|
}
|
|
}
|
|
|
|
if (!\$cleared) {
|
|
echo \"No cache directories found to clear\n\";
|
|
}
|
|
}
|
|
|
|
// 5. Check Breeze settings
|
|
echo \"5. Checking Breeze settings...\n\";
|
|
\$breeze_basic = get_option('breeze_basic_settings');
|
|
if (\$breeze_basic && is_array(\$breeze_basic)) {
|
|
// Make sure cache is disabled for logged-in users
|
|
\$breeze_advanced = get_option('breeze_advanced_settings');
|
|
if (\$breeze_advanced && is_array(\$breeze_advanced)) {
|
|
if (!isset(\$breeze_advanced['breeze-disable-admin']) || \$breeze_advanced['breeze-disable-admin'] != '1') {
|
|
\$breeze_advanced['breeze-disable-admin'] = '1';
|
|
update_option('breeze_advanced_settings', \$breeze_advanced);
|
|
echo \"Updated Breeze to disable cache for logged-in users\n\";
|
|
} else {
|
|
echo \"Breeze already disables cache for logged-in users\n\";
|
|
}
|
|
}
|
|
|
|
// Add login pages to no-cache list
|
|
\$no_cache_pages = isset(\$breeze_basic['no-cache-pages']) ? \$breeze_basic['no-cache-pages'] : '';
|
|
\$pages_to_add = array('/community-login/', '/wp-login.php', '/hvac-dashboard/');
|
|
\$updated = false;
|
|
|
|
foreach (\$pages_to_add as \$page) {
|
|
if (strpos(\$no_cache_pages, \$page) === false) {
|
|
\$no_cache_pages .= (!empty(\$no_cache_pages) ? ', ' : '') . \$page;
|
|
\$updated = true;
|
|
}
|
|
}
|
|
|
|
if (\$updated) {
|
|
\$breeze_basic['no-cache-pages'] = \$no_cache_pages;
|
|
update_option('breeze_basic_settings', \$breeze_basic);
|
|
echo \"Added login pages to Breeze no-cache list\n\";
|
|
} else {
|
|
echo \"Login pages already in Breeze no-cache list\n\";
|
|
}
|
|
} else {
|
|
echo \"Breeze settings not found\n\";
|
|
}
|
|
|
|
echo \"\nLogin Issues Fixed\n\";
|
|
echo \"You should now be able to log in with test_trainer / test_password\n\";
|
|
|
|
// Return login URLs for testing
|
|
\$login_url = site_url('/community-login/');
|
|
\$dashboard_url = site_url('/hvac-dashboard/');
|
|
echo \"\nTest URLs:\n\";
|
|
echo \"Login: \$login_url\n\";
|
|
echo \"Dashboard: \$dashboard_url\n\";
|
|
EOF"
|
|
|
|
# Execute the PHP script
|
|
echo "Executing login fix script..."
|
|
sshpass -p "$UPSKILL_STAGING_PASS" ssh -o StrictHostKeyChecking=no "$UPSKILL_STAGING_SSH_USER@$UPSKILL_STAGING_IP" "cd $UPSKILL_STAGING_PATH && php fix-login-issues.php"
|
|
|
|
# Clean up
|
|
sshpass -p "$UPSKILL_STAGING_PASS" ssh -o StrictHostKeyChecking=no "$UPSKILL_STAGING_SSH_USER@$UPSKILL_STAGING_IP" "cd $UPSKILL_STAGING_PATH && rm fix-login-issues.php"
|
|
|
|
echo -e "\n===== Login Fixes Applied ====="
|
|
echo "The login issues for the test_trainer user should now be resolved."
|
|
echo "Please try logging in with username 'test_trainer' and password 'test_password'." |