upskill-event-manager/scripts/create-announcements-pages.sh
Ben 7e6cb2c9ce feat: Complete HVAC Trainer Announcements System implementation
## Features Implemented
-  Announcements management system for master trainers
-  Timeline view for regular trainers
-  Email notification system with batch processing
-  Google Drive resources integration
-  Security vulnerabilities fixed
-  Comprehensive testing suite (85% coverage)

## Security Fixes
- Fixed critical capability mapping bug
- Eliminated content disclosure vulnerability
- Added XSS prevention through output escaping
- Implemented email validation before sending
- Added caching with version-based invalidation

## Testing Coverage
- Unit tests: 2,600+ lines across 4 test files
- Integration tests: 450 lines (complete workflow)
- E2E tests: 700+ lines (Playwright)
- Total coverage: 85%+ achieved

## Components Created
- HVAC_Announcements_Manager: Core management
- HVAC_Announcements_Ajax: AJAX handlers (security fixed)
- HVAC_Announcements_Permissions: Access control
- HVAC_Announcements_Email: Email notifications
- HVAC_Announcements_CPT: Custom post type
- HVAC_Announcements_Display: Frontend display

## Templates Added
- page-master-manage-announcements.php
- page-trainer-announcements.php
- page-trainer-training-resources.php

## Deployment
- Successfully deployed to staging
- All security fixes applied
- Template files included

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-20 14:08:42 -03:00

142 lines
No EOL
5 KiB
Bash
Executable file

#!/bin/bash
# Create HVAC Announcements pages on staging server
echo "🚀 Creating HVAC Announcements pages on staging..."
# Create the PHP script content
cat > /tmp/create-pages.php << 'EOF'
<?php
require_once('/home/974670.cloudwaysapps.com/uberrxmprk/public_html/wp-load.php');
echo "Creating HVAC Announcements pages...\n";
// Find parent pages
$master_parent = get_page_by_path('master-trainer');
$trainer_parent = get_page_by_path('trainer');
if (!$master_parent) {
echo "❌ Error: master-trainer page not found\n";
exit(1);
}
if (!$trainer_parent) {
echo "❌ Error: trainer page not found\n";
exit(1);
}
echo "✅ Found parent pages:\n";
echo " - Master Trainer (ID: {$master_parent->ID})\n";
echo " - Trainer (ID: {$trainer_parent->ID})\n\n";
// Check if pages already exist
$existing_manage = get_page_by_path('master-trainer/manage-announcements');
$existing_view = get_page_by_path('trainer/announcements');
$existing_resources = get_page_by_path('trainer/training-resources');
if ($existing_manage) {
echo "⚠️ Manage Announcements page already exists (ID: {$existing_manage->ID})\n";
} else {
// Create Manage Announcements page
$manage_page = wp_insert_post(array(
'post_title' => 'Manage Announcements',
'post_name' => 'manage-announcements',
'post_content' => '[hvac_announcements_manager]',
'post_status' => 'publish',
'post_type' => 'page',
'post_parent' => $master_parent->ID,
));
if ($manage_page && !is_wp_error($manage_page)) {
update_post_meta($manage_page, '_wp_page_template', 'templates/page-master-manage-announcements.php');
echo "✅ Created: /master-trainer/manage-announcements/ (ID: $manage_page)\n";
} else {
echo "❌ Failed to create manage announcements page\n";
if (is_wp_error($manage_page)) {
echo " Error: " . $manage_page->get_error_message() . "\n";
}
}
}
if ($existing_view) {
echo "⚠️ Announcements page already exists (ID: {$existing_view->ID})\n";
} else {
// Create Announcements view page
$view_page = wp_insert_post(array(
'post_title' => 'Announcements',
'post_name' => 'announcements',
'post_content' => '[hvac_announcements_timeline]',
'post_status' => 'publish',
'post_type' => 'page',
'post_parent' => $trainer_parent->ID,
));
if ($view_page && !is_wp_error($view_page)) {
update_post_meta($view_page, '_wp_page_template', 'templates/page-trainer-announcements.php');
echo "✅ Created: /trainer/announcements/ (ID: $view_page)\n";
} else {
echo "❌ Failed to create announcements page\n";
if (is_wp_error($view_page)) {
echo " Error: " . $view_page->get_error_message() . "\n";
}
}
}
if ($existing_resources) {
echo "⚠️ Training Resources page already exists (ID: {$existing_resources->ID})\n";
} else {
// Create Training Resources page
$resources_page = wp_insert_post(array(
'post_title' => 'Training Resources',
'post_name' => 'training-resources',
'post_content' => '[hvac_google_drive_embed url="https://drive.google.com/drive/folders/1-G8gICMsih5E9YJ2FqaC5OqG0o4rwuSP"]',
'post_status' => 'publish',
'post_type' => 'page',
'post_parent' => $trainer_parent->ID,
));
if ($resources_page && !is_wp_error($resources_page)) {
update_post_meta($resources_page, '_wp_page_template', 'templates/page-trainer-resources.php');
echo "✅ Created: /trainer/training-resources/ (ID: $resources_page)\n";
} else {
echo "❌ Failed to create training resources page\n";
if (is_wp_error($resources_page)) {
echo " Error: " . $resources_page->get_error_message() . "\n";
}
}
}
// Flush rewrite rules and clear cache
flush_rewrite_rules();
if (function_exists('wp_cache_flush')) {
wp_cache_flush();
}
echo "\n🎉 HVAC Announcements pages setup complete!\n";
echo "\nPages should be available at:\n";
echo "- https://upskill-staging.measurequick.com/master-trainer/manage-announcements/\n";
echo "- https://upskill-staging.measurequick.com/trainer/announcements/\n";
echo "- https://upskill-staging.measurequick.com/trainer/training-resources/\n";
?>
EOF
# Get server details from existing deployment
SERVER_IP="146.190.76.204"
SERVER_USER="roodev"
SERVER_PATH="/home/974670.cloudwaysapps.com/uberrxmprk/public_html"
# Check if we can access the server (using the same method as deploy.sh)
echo "📡 Connecting to staging server..."
# Try to execute the PHP script
ssh -o ConnectTimeout=10 -o StrictHostKeyChecking=no ${SERVER_USER}@${SERVER_IP} "
echo '🔧 Executing page creation script on server...'
cd ${SERVER_PATH}
php /tmp/create-pages.php
" 2>/dev/null || {
echo "❌ SSH connection failed. You may need to run this manually on the staging server."
echo "📋 To run manually, copy this script to the staging server and execute:"
echo " php /path/to/create-pages.php"
exit 1
}
echo "✅ HVAC Announcements pages creation completed!"