upskill-event-manager/scripts/validate-templates.sh
bengizmo f0edd05369 feat: Implement trainer approval workflow with status management
- Add trainer status system (pending, approved, active, inactive, disabled)
- Create access control system based on trainer status
- Refactor Master Dashboard with enhanced trainer table
  - Add status column and filtering
  - Implement search and pagination
  - Add bulk status update functionality
- Create status pages for pending and disabled trainers
- Implement approval workflow with email notifications
- Add email template management to settings page
- Include comprehensive test suite (unit, integration, E2E)

This allows Master Trainers to manage trainer accounts, approve new registrations,
and control access based on account status. Trainers must be approved before
accessing dashboard features.

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-28 12:38:34 -03:00

114 lines
No EOL
3.1 KiB
Bash
Executable file

#!/bin/bash
# Template Validation Script
# Prevents templates from going live without proper structure
# set -e # Disabled to allow script to continue on errors
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
TEMPLATES_DIR="$PROJECT_DIR/templates"
# Colors
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'
echo -e "${BLUE}=== WordPress Template Validation ===${NC}"
echo "Scanning: $TEMPLATES_DIR"
echo ""
total_files=0
passed_files=0
failed_files=0
# Function to validate a single template
validate_template() {
local file=$1
local filename=$(basename "$file")
local issues=()
echo -n "Validating $filename: "
# Check 1: Has get_header() call
if ! grep -q "get_header()" "$file"; then
issues+=("Missing get_header() call")
fi
# Check 2: Has get_footer() call
if ! grep -q "get_footer()" "$file"; then
issues+=("Missing get_footer() call")
fi
# Check 3: Has ABSPATH security check
if ! grep -q "ABSPATH" "$file"; then
issues+=("Missing ABSPATH security check")
fi
# Check 4: Uses proper WordPress container structure
if ! grep -q "content-area\|site-main" "$file"; then
issues+=("Missing proper WordPress container structure")
fi
# Check 5: Check for inline AJAX (should use wp_ajax hooks)
if grep -q "wp_ajax\|DOING_AJAX" "$file" && ! grep -q "wp_ajax_" "$file"; then
issues+=("Uses inline AJAX instead of proper wp_ajax hooks")
fi
# Check 6: Has proper template header
if ! grep -q "Template Name:" "$file"; then
issues+=("Missing Template Name header")
fi
if [ ${#issues[@]} -eq 0 ]; then
echo -e "${GREEN}✅ PASSED${NC}"
((passed_files++))
else
echo -e "${RED}❌ FAILED${NC}"
((failed_files++))
for issue in "${issues[@]}"; do
echo -e " ${RED}$issue${NC}"
done
fi
((total_files++))
}
# Find and validate all template files
if [ -d "$TEMPLATES_DIR" ]; then
# Find all PHP files first, then filter
while IFS= read -r file; do
filename=$(basename "$file")
# Skip non-template files
if [[ "$filename" == template-* ]] || [[ "$filename" == page-* ]] || [[ "$filename" == single-* ]]; then
validate_template "$file"
fi
done < <(find "$TEMPLATES_DIR" -name "*.php" -type f)
else
echo -e "${RED}Templates directory not found: $TEMPLATES_DIR${NC}"
exit 1
fi
echo ""
echo -e "${BLUE}=== Validation Summary ===${NC}"
echo "Total templates: $total_files"
echo -e "Passed: ${GREEN}$passed_files${NC}"
echo -e "Failed: ${RED}$failed_files${NC}"
if [ $failed_files -gt 0 ]; then
echo ""
echo -e "${RED}🚨 VALIDATION FAILED!${NC}"
echo "Fix the issues above before deploying templates."
echo "See TEMPLATE_VALIDATION_GUIDE.md for requirements."
exit 1
elif [ $total_files -eq 0 ]; then
echo ""
echo -e "${YELLOW}⚠️ No templates found to validate${NC}"
exit 0
else
echo ""
echo -e "${GREEN}🎉 ALL TEMPLATES PASSED VALIDATION!${NC}"
exit 0
fi