#!/bin/bash

# Variables
WP_DIR="/home4/regieoc/public_html/coiffeur-crazyhair-reunion.com"  # Chemin vers votre installation WordPress
CHECKSUM_FILE="$WP_DIR/wp_core_checksums.md5"  # Fichier des sommes de contrôle de WordPress
TEMP_DIR="/tmp/wp_core_restore"  # Dossier temporaire pour stocker les fichiers extraits
WP_VERSION="latest"  # Version de WordPress à télécharger
WP_CONFIG_FILE="$WP_DIR/wp-config.php"  # Fichier wp-config.php
BACKUP_CONFIG_FILE="$WP_DIR/wp-config.php.bak"  # Sauvegarde wp-config.php
ROBOTS_FILE="$WP_DIR/robots.txt"  # Fichier robots.txt
BACKUP_ROBOTS_FILE="$WP_DIR/robots.txt.bak"  # Sauvegarde robots.txt

# Vérification si le fichier des sommes de contrôle existe
if [ ! -f "$CHECKSUM_FILE" ]; then
    echo "Erreur : Le fichier des sommes de contrôle est manquant."
    exit 1
fi

# Étape 1 : Vérification de l'intégrité des fichiers WordPress
echo "Vérification de l'intégrité des fichiers WordPress..."

cd "$WP_DIR" || exit
# Vérifier les sommes de contrôle des fichiers WordPress
MODIFICATIONS=$(md5sum -c "$CHECKSUM_FILE" 2>/dev/null | grep 'FAILED')

# Si des modifications sont détectées, les afficher
if [ -n "$MODIFICATIONS" ]; then
    echo "Des modifications ont été détectées dans les fichiers WordPress :"
    echo "$MODIFICATIONS"
else
    echo "Aucune modification détectée dans les fichiers WordPress."
fi

# Étape 2 : Recherche et suppression des fichiers et dossiers non attendus
echo "Recherche des fichiers et dossiers non attendus..."
EXPECTED_FILES=$(awk '{print $2}' "$CHECKSUM_FILE" | sed 's|^\./||')  # Extraire les fichiers attendus
ALL_FILES=$(find . -type f ! -path "./wp-content/*")
ALL_DIRS=$(find . -maxdepth 1 -type d ! -name '.' ! -name 'wp-content')

UNEXPECTED_FILES=""
UNEXPECTED_DIRS=""

# Comparer les fichiers trouvés avec ceux attendus
for file in $ALL_FILES; do
    FILE_NAME=$(basename "$file")
    if ! echo "$EXPECTED_FILES" | grep -q "$FILE_NAME"; then
        UNEXPECTED_FILES="$UNEXPECTED_FILES $file"
    fi
done

# Comparer les dossiers trouvés avec ceux attendus
for dir in $ALL_DIRS; do
    DIR_NAME=$(basename "$dir")
    if ! echo "$EXPECTED_FILES" | grep -q "$DIR_NAME"; then
        UNEXPECTED_DIRS="$UNEXPECTED_DIRS $dir"
    fi
done

# Supprimer les fichiers et dossiers non attendus
if [ -n "$UNEXPECTED_FILES" ]; then
    echo "Les fichiers suivants seront supprimés :"
    echo "$UNEXPECTED_FILES"
    for file in $UNEXPECTED_FILES; do
        rm -f "$file"
    done
else
    echo "Aucun fichier inattendu détecté."
fi

if [ -n "$UNEXPECTED_DIRS" ]; then
    echo "Les dossiers suivants seront supprimés :"
    echo "$UNEXPECTED_DIRS"
    for dir in $UNEXPECTED_DIRS; do
        rm -rf "$dir"
    done
else
    echo "Aucun dossier inattendu détecté."
fi

# Étape 3 : Suppression spécifique du dossier 'event' à la racine
EVENT_DIR="$WP_DIR/event"

if [ -d "$EVENT_DIR" ]; then
    echo "Le dossier 'event' est présent à la racine. Suppression en cours..."
    rm -rf "$EVENT_DIR"
else
    echo "Aucun dossier 'event' trouvé à la racine."
fi

# Étape 4 : Télécharger et restaurer la version WordPress la plus récente
echo "Téléchargement de la dernière version de WordPress..."
mkdir -p "$TEMP_DIR"
wget -q -O "$TEMP_DIR/wordpress.tar.gz" "https://wordpress.org/${WP_VERSION}.tar.gz"

# Vérification du téléchargement
if [ ! -f "$TEMP_DIR/wordpress.tar.gz" ]; then
    echo "Erreur de téléchargement de WordPress."
    exit 1
fi

# Extraire WordPress dans le dossier temporaire
echo "Extraction de WordPress..."
tar -xzf "$TEMP_DIR/wordpress.tar.gz" -C "$TEMP_DIR"

# Étape 5 : Remplacer les fichiers Core
echo "Remplacement des fichiers Core de WordPress..."
rsync -av --exclude='wp-content' "$TEMP_DIR/wordpress/" "$WP_DIR/"

# Étape 6 : Restaurer wp-config.php si nécessaire
if [ ! -f "$WP_CONFIG_FILE" ]; then
    echo "wp-config.php est manquant. Restauration à partir de la sauvegarde..."
    cp "$BACKUP_CONFIG_FILE" "$WP_CONFIG_FILE"
    echo "wp-config.php a été restauré avec succès."
elif ! cmp -s "$WP_CONFIG_FILE" "$BACKUP_CONFIG_FILE"; then
    echo "Des modifications ont été détectées dans wp-config.php. Restauration à partir de la sauvegarde..."
    cp "$BACKUP_CONFIG_FILE" "$WP_CONFIG_FILE"
    echo "wp-config.php a été restauré avec succès."
else
    echo "wp-config.php est inchangé."
fi

# Étape 7 : Restaurer robots.txt si nécessaire
if [ ! -f "$ROBOTS_FILE" ]; then
    echo "robots.txt est manquant. Restauration à partir de la sauvegarde..."
    cp "$BACKUP_ROBOTS_FILE" "$ROBOTS_FILE"
    echo "robots.txt a été restauré avec succès."
elif ! cmp -s "$ROBOTS_FILE" "$BACKUP_ROBOTS_FILE"; then
    echo "Des modifications ont été détectées dans robots.txt. Restauration à partir de la sauvegarde..."
    cp "$BACKUP_ROBOTS_FILE" "$ROBOTS_FILE"
    echo "robots.txt a été restauré avec succès."
else
    echo "robots.txt est inchangé."
fi

# Étape 8 : Nettoyage des fichiers temporaires
echo "Nettoyage des fichiers temporaires..."
rm -rf "$TEMP_DIR"

echo "Restauration complète de WordPress terminée."
