#!/bin/bash
# WordPress Backup Script for rethinkaadhaar.in
# Creates a portable backup that can be deployed on any VPS with PHP + SQLite + Nginx
#
# Usage: ./wp-backup.sh [output_dir]
# Output: rethinkaadhaar-backup-YYYYMMDD.tar.gz

set -e

BACKUP_DIR="${1:-/home/.z/workspaces/con_aUSvgnX9Dr8kWIsz/rethinkaadhaar-migration/backups}"
WP_DIR="/home/.z/workspaces/con_aUSvgnX9Dr8kWIsz/wordpress"
TIMESTAMP=$(date +%Y%m%d-%H%M%S)
BACKUP_NAME="rethinkaadhaar-backup-${TIMESTAMP}"
WORK_DIR="${BACKUP_DIR}/${BACKUP_NAME}"

mkdir -p "$WORK_DIR/wordpress"
mkdir -p "$BACKUP_DIR"

echo "Creating backup: ${BACKUP_NAME}"

# 1. Copy WordPress files (excluding wp-content/plugins we don't need)
rsync -a --exclude='wp-config.php' \
    "$WP_DIR/" "$WORK_DIR/wordpress/"

# 2. Create VPS-ready wp-config.php (auto-detects SQLite)
cat > "$WORK_DIR/wordpress/wp-config.php" << 'PHPEOF'
<?php
// WordPress with SQLite (no MySQL needed)
define('DB_NAME', 'rethinkaadhaar');
define('DB_USER', 'root');
define('DB_PASSWORD', '');
define('DB_HOST', 'localhost');
define('DB_CHARSET', 'utf8mb4');

$table_prefix = 'wp_';
define('WP_DEBUG', false);

// SQLite support
define('DB_ENGINE', 'sqlite');

define('WP_HOME', 'https://' . $_SERVER['HTTP_HOST']);
define('WP_SITEURL', 'https://' . $_SERVER['HTTP_HOST']);

// Auto-generate salts on first VPS deploy via the install helper
// Or replace these with your own:
require_once ABSPATH . 'wp-settings.php';
PHPEOF

# 3. Create VPS deployment files
cat > "$WORK_DIR/deploy.sh" << 'DEPLOY'
#!/bin/bash
# Deploy rethinkaadhaar.in to VPS
# Prerequisites: PHP 8.x + php-fpm + php-sqlite3 + php-xml + php-mbstring + php-curl + php-gd + nginx
# Run as root on VPS: ./deploy.sh

set -e

WP_DIR="/var/www/rethinkaadhaar"
DOMAIN="rethinkaadhaar.in"

echo "Installing WordPress to ${WP_DIR}..."

# Copy files
mkdir -p "$WP_DIR"
cp -a wordpress/ "$WP_DIR/"
chown -R www-data:www-data "$WP_DIR"
chmod -R 755 "$WP_DIR"

# Generate salts
SALTS=$(curl -fsSL https://api.wordpress.org/secret-key/1.1/salt/)

# Create production wp-config.php with real salts
cat > "$WP_DIR/wp-config.php" << PHPEOF
<?php
define('DB_NAME', 'rethinkaadhaar');
define('DB_USER', 'root');
define('DB_PASSWORD', '');
define('DB_HOST', 'localhost');
define('DB_CHARSET', 'utf8mb4');

\$table_prefix = 'wp_';
define('WP_DEBUG', false);
define('DB_ENGINE', 'sqlite');
define('WP_HOME', 'https://${DOMAIN}');
define('WP_SITEURL', 'https://${DOMAIN}');

${SALTS}

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

# Nginx config
cat > /etc/nginx/sites-available/rethinkaadhaar << 'NGEOF'
server {
    listen 80;
    server_name ${DOMAIN} www.${DOMAIN};
    root ${WP_DIR};
    index index.php index.html;
    client_max_body_size 64M;

    location / {
        try_files \$uri \$uri/ /index.php?\$args;
    }
    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/run/php/php-fpm.sock;
        fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
        fastcgi_intercept_errors on;
    }
    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ {
        expires max; log_not_found off;
    }
    location ~ /\.ht { deny all; }
}
NGEOF

ln -sf /etc/nginx/sites-available/rethinkaadhaar /etc/nginx/sites-enabled/
rm -f /etc/nginx/sites-enabled/default
nginx -t && systemctl reload nginx

echo "Deployed! Visit https://${DOMAIN}/wp-admin to configure SSL and finalize."
echo "Admin login: check your existing admin user or run:"
echo "  php ${WP_DIR}/wp-cli.phar user list"
DEPLOY
chmod +x "$WORK_DIR/deploy.sh"

# 4. Create VPS setup script (install deps)
cat > "$WORK_DIR/vps-setup.sh" << 'SETUP'
#!/bin/bash
# Setup script for fresh Ubuntu/Debian VPS
# Run: sudo ./vps-setup.sh

set -e
export DEBIAN_FRONTEND=noninteractive

echo "Installing PHP, Nginx, SQLite..."
apt-get update -qq
apt-get install -y -qq nginx php-fpm php-sqlite3 php-xml php-mbstring php-curl php-gd php-zip php-intl php-imagick

echo "Installing wp-cli..."
curl -fsSL https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -o /usr/local/bin/wp
chmod +x /usr/local/bin/wp

echo "PHP-FPM socket path:"
php -r "echo ini_get('listen');"

echo ""
echo "VPS setup complete. Now run: ./deploy.sh"
SETUP
chmod +x "$WORK_DIR/vps-setup.sh"

# 5. Download wp-cli.phar for VPS
curl -fsSL "https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar" \
    -o "$WORK_DIR/wordpress/wp-cli.phar"
chmod +x "$WORK_DIR/wordpress/wp-cli.phar"

# 6. Package it all
cd "$BACKUP_DIR"
tar czf "${BACKUP_NAME}.tar.gz" "$BACKUP_NAME"
rm -rf "$WORK_DIR"

echo ""
echo "Backup created: ${BACKUP_DIR}/${BACKUP_NAME}.tar.gz"
echo "Size: $(du -h ${BACKUP_DIR}/${BACKUP_NAME}.tar.gz | cut -f1)"
echo ""
echo "To deploy on a fresh VPS:"
echo "  1. Upload tar.gz to VPS"
echo "  2. tar xzf rethinkaadhaar-backup-*.tar.gz"
echo "  3. cd rethinkaadhaar-backup-*"
echo "  4. sudo ./vps-setup.sh"
echo "  5. sudo ./deploy.sh"
echo "  6. Configure Cloudflare DNS -> VPS IP"
echo "  7. Set up SSL (certbot or Cloudflare)"
