#!/bin/bash

# Script de instalación de WordPress para Caval Studio
# Ejecutar en el servidor: bash install-wordpress.sh

echo "🚀 Instalando WordPress para Caval Studio..."

# Variables de configuración
DOMAIN="cavalstudio.com"
SITE_DIR="/home2/avilacaf/public_html/cavalstudio.com"
BLOG_DIR="$SITE_DIR/blog"
WP_VERSION="latest"

# Colores para output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color

# Función para mostrar mensajes
log() {
    echo -e "${GREEN}[INFO]${NC} $1"
}

warn() {
    echo -e "${YELLOW}[WARN]${NC} $1"
}

error() {
    echo -e "${RED}[ERROR]${NC} $1"
}

# Verificar que estamos en el directorio correcto
if [ ! -d "$SITE_DIR" ]; then
    error "Directorio del sitio no encontrado: $SITE_DIR"
    exit 1
fi

# Paso 1: Crear directorio del blog
log "Creando directorio del blog..."
mkdir -p "$BLOG_DIR"
cd "$BLOG_DIR"

# Paso 2: Descargar WordPress
log "Descargando WordPress $WP_VERSION..."
if command -v wget &> /dev/null; then
    wget "https://wordpress.org/$WP_VERSION.tar.gz" -O wordpress.tar.gz
elif command -v curl &> /dev/null; then
    curl -L "https://wordpress.org/$WP_VERSION.tar.gz" -o wordpress.tar.gz
else
    error "wget o curl requerido para descargar WordPress"
    exit 1
fi

# Paso 3: Extraer WordPress
log "Extrayendo WordPress..."
tar -xzf wordpress.tar.gz --strip-components=1
rm wordpress.tar.gz

# Paso 4: Configurar permisos
log "Configurando permisos..."
find "$BLOG_DIR" -type d -exec chmod 755 {} \;
find "$BLOG_DIR" -type f -exec chmod 644 {} \;

# Paso 5: Crear directorio para el tema personalizado
log "Creando directorio para tema personalizado..."
mkdir -p "$BLOG_DIR/wp-content/themes/cavalstudio-blog"

# Paso 6: Copiar archivo .htaccess
log "Configurando .htaccess..."
cat > "$BLOG_DIR/.htaccess" << 'EOF'
# WordPress SEO-friendly URLs
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
</IfModule>

# Seguridad
<files wp-config.php>
order allow,deny
deny from all
</files>

<files .htaccess>
order allow,deny
deny from all
</files>
EOF

# Paso 7: Crear wp-config.php básico
log "Creando configuración básica de WordPress..."
cat > "$BLOG_DIR/wp-config.php" << 'EOF'
<?php
// ** Configuración de la base de datos ** //
define('DB_NAME', 'avilacaf_blog');
define('DB_USER', 'avilacaf_bloguser');
define('DB_PASSWORD', 'CAMBIAR_PASSWORD'); // ¡CAMBIAR ESTO!
define('DB_HOST', 'localhost');
define('DB_CHARSET', 'utf8mb4');
define('DB_COLLATE', '');

// ** URLs ** //
define('WP_HOME', 'https://cavalstudio.com/blog');
define('WP_SITEURL', 'https://cavalstudio.com/blog');

// ** Claves de autenticación - GENERAR NUEVAS ** //
define('AUTH_KEY',         'pon-aqui-tu-clave-unica-1');
define('SECURE_AUTH_KEY',  'pon-aqui-tu-clave-unica-2');
define('LOGGED_IN_KEY',    'pon-aqui-tu-clave-unica-3');
define('NONCE_KEY',        'pon-aqui-tu-clave-unica-4');
define('AUTH_SALT',        'pon-aqui-tu-clave-unica-5');
define('SECURE_AUTH_SALT', 'pon-aqui-tu-clave-unica-6');
define('LOGGED_IN_SALT',   'pon-aqui-tu-clave-unica-7');
define('NONCE_SALT',       'pon-aqui-tu-clave-unica-8');

$table_prefix = 'wp_';

// ** Configuración de seguridad ** //
define('WP_DEBUG', false);
define('DISALLOW_FILE_EDIT', true);
define('FORCE_SSL_ADMIN', true);
define('WP_DEFAULT_THEME', 'cavalstudio-blog');

if (!defined('ABSPATH')) {
    define('ABSPATH', __DIR__ . '/');
}
require_once ABSPATH . 'wp-settings.php';
EOF

# Paso 8: Configurar permisos finales
chmod 600 "$BLOG_DIR/wp-config.php"

echo ""
log "✅ WordPress instalado exitosamente!"
echo ""
echo "📋 PRÓXIMOS PASOS:"
echo "1. Crear base de datos 'avilacaf_blog' en cPanel"
echo "2. Crear usuario 'avilacaf_bloguser' con contraseña segura"
echo "3. Editar $BLOG_DIR/wp-config.php y cambiar:"
echo "   - DB_PASSWORD por la contraseña real"
echo "   - Generar claves en: https://api.wordpress.org/secret-key/1.1/salt/"
echo "4. Visitar https://$DOMAIN/blog/wp-admin para completar instalación"
echo "5. El tema personalizado se subirá automáticamente con GitLab CI"
echo ""
warn "⚠️  IMPORTANTE: Cambiar la contraseña en wp-config.php antes de continuar"
echo ""
log "🌐 URLs disponibles:"
echo "   - Blog: https://$DOMAIN/blog"
echo "   - Admin: https://$DOMAIN/blog/wp-admin"
echo ""
log "🎨 El tema 'Caval Studio Blog' se activará automáticamente" 