#!/usr/bin/env bash
#
# Atualiza URLs do WordPress legado em /old após mover public_html → public_html/old
#
# IMPORTANTE:
#   - Correr como utilizador do site (ex.: su - diarioesp), NÃO root, ou corrigir dono: chown -R diarioesp:diarioesp old/
#   - Executar DENTRO da pasta do WordPress legado: cd /home/diarioesp/public_html/old
#   - Requer WP-CLI (whm: often /usr/local/bin/wp ou instalável)
#
# Uso:
#   chmod +x update-legacy-wp-urls.sh
#   ./update-legacy-wp-urls.sh
#
# Variáveis opcionais:
#   OLDSITE=https://diarioesp.com.br NEWSITE=https://diarioesp.com.br/old ./update-legacy-wp-urls.sh

set -euo pipefail

OLDSITE="${OLDSITE:-https://diarioesp.com.br}"
NEWSITE="${NEWSITE:-https://diarioesp.com.br/old}"

if [[ ! -f "wp-config.php" ]]; then
  echo "Erro: wp-config.php não encontrado. Entre na pasta do WordPress (ex.: cd .../public_html/old)"
  exit 1
fi

if ! command -v wp >/dev/null 2>&1; then
  echo "WP-CLI não está no PATH. Instale ou use: /usr/local/bin/wp"
  echo "Alternativa: siga server/LEGACY_WP_URLS.md (phpMyAdmin + plugin Better Search Replace)."
  exit 1
fi

echo "Origem:  $OLDSITE"
echo "Destino: $NEWSITE"
echo
read -r -p "Isto altera a base de dados WordPress. Fez backup SQL? Continuar? [s/N] " ok
[[ "${ok,,}" == "s" ]] || exit 0

# 1) Opções principais (site público em /old)
wp option update siteurl "$NEWSITE"
wp option update home "$NEWSITE"

# 2) Caminhos longos primeiro (evita substituir prefixos dentro de URLs já com /old)
wp search-replace "${OLDSITE}/wp-content" "${NEWSITE}/wp-content" --all-tables
wp search-replace "http://diarioesp.com.br/wp-content" "${NEWSITE}/wp-content" --all-tables 2>/dev/null || true
wp search-replace "https://www.diarioesp.com.br/wp-content" "${NEWSITE}/wp-content" --all-tables 2>/dev/null || true
wp search-replace "http://www.diarioesp.com.br/wp-content" "${NEWSITE}/wp-content" --all-tables 2>/dev/null || true

wp search-replace "${OLDSITE}/wp-includes" "${NEWSITE}/wp-includes" --all-tables 2>/dev/null || true
wp search-replace "${OLDSITE}/wp-admin" "${NEWSITE}/wp-admin" --all-tables 2>/dev/null || true

# 3) Resto das ocorrências do domínio antigo (HTTP e HTTPS sem www)
echo
echo "Dry-run da substituição geral de domínio..."
wp search-replace "$OLDSITE" "$NEWSITE" --all-tables --dry-run

read -r -p "Aplicar substituição geral (sem --dry-run)? [s/N] " go
if [[ "${go,,}" == "s" ]]; then
  wp search-replace "$OLDSITE" "$NEWSITE" --all-tables
  wp search-replace "http://diarioesp.com.br" "$NEWSITE" --all-tables 2>/dev/null || true
  wp search-replace "https://www.diarioesp.com.br" "$NEWSITE" --all-tables 2>/dev/null || true
  wp search-replace "http://www.diarioesp.com.br" "$NEWSITE" --all-tables 2>/dev/null || true
fi

echo
echo "Feito. Teste: $NEWSITE/wp-admin/"
echo "Se algo ficou com /old/old, restaure o backup SQL e contacte suporte ou use plugin Better Search Replace com cuidado."
