#!/bin/bash
set -e

# 1. MariaDB Dienst starten
chown -R mysql:mysql /var/lib/mysql

#Falls das Verzeichnis leer ist (erster Start mit neuem Volume), initialisieren:
if [ ! -d "/var/lib/mysql/mysql" ]; then
    echo "Initialisiere leeres MariaDB Datenverzeichnis..."
    mysql_install_db --user=mysql --datadir=/var/lib/mysql
fi

service mariadb start

if [ "$i" = 0 ]; then
    echo "FEHLER: MariaDB konnte nicht rechtzeitig gestartet werden."
    exit 1
fi

# 2. WordPress (DE) installieren & konfigurieren
if [ ! -f /var/www/html/wp-config.php ]; then
    echo "Installiere WordPress DE (ZIP)..."
    # Exakte URL zur ZIP-Datei
    wget https://de.wordpress.org/latest-de_DE.zip -O /tmp/wp.zip
    unzip /tmp/wp.zip -d /tmp/wordpress_extracted
    cp -r /tmp/wordpress_extracted/wordpress/* /var/www/html/
    rm -rf /tmp/wp.zip /tmp/wordpress_extracted

    echo "Konfiguriere wp-config.php..."
    cp /var/www/html/wp-config-sample.php /var/www/html/wp-config.php
    
    sed -i "s/database_name_here/wordpress/" /var/www/html/wp-config.php
    sed -i "s/username_here/root/" /var/www/html/wp-config.php
    sed -i "s/password_here/root/" /var/www/html/wp-config.php

    # Sicherheitsschlüssel (Salts) generieren
    # SALT=$(wget -qO- https://api.wordpress.org)
    SALT=$(wget -qO- https://api.wordpress.org/secret-key/1.1/salt/)
    printf '%s\n' "g/put your unique phrase here/d" a "$SALT" . w | ed -s /var/www/html/wp-config.php

    chown -R www-data:www-data /var/www/html
fi

# 3. phpMyAdmin 5.2.3 installieren (ZIP)
if [ ! -d /var/www/html/phpmyadmin ]; then
    echo "Installiere phpMyAdmin 5.2.3..."
    mkdir -p /var/www/html/phpmyadmin
    
    # Herunterladen als .zip (Endung passend zur Quelle)
    wget https://files.phpmyadmin.net/phpMyAdmin/5.2.3/phpMyAdmin-5.2.3-all-languages.zip -O /tmp/pma.zip
    
    # Entpacken mit unzip (dafür muss unzip im Dockerfile stehen)
    unzip /tmp/pma.zip -d /tmp/pma_extracted
    
    # Den Inhalt aus dem Unterordner in das Ziel /phpmyadmin verschieben
    mv /tmp/pma_extracted/phpMyAdmin-5.2.3-all-languages/* /var/www/html/phpmyadmin/
    
    # Aufräumen
    rm -rf /tmp/pma.zip /tmp/pma_extracted
    chown -R www-data:www-data /var/www/html/phpmyadmin
fi

# 4. PHP-Limits & Apache Config
PHP_INI=$(find /etc/php/ -name php.ini | grep apache2 | head -n 1)
# PHP-Limits erhöhen (z.B. auf 64MB)
if [ -f "$PHP_INI" ]; then
    echo "Passe PHP-Limits in $PHP_INI an..."
    sed -i "s/upload_max_filesize = .*/upload_max_filesize = 64M/" "$PHP_INI"
    sed -i "s/post_max_size = .*/post_max_size = 64M/" "$PHP_INI"
    sed -i "s/memory_limit = .*/memory_limit = 256M/" "$PHP_INI"
    sed -i "s/max_execution_time = .*/max_execution_time = 300/" "$PHP_INI"
fi

# Apache Permalinks erlauben
sed -i '/<Directory \/var\/www\/>/,/<\/Directory>/ s/AllowOverride None/AllowOverride All/' /etc/apache2/apache2.conf

# 5. Datenbank & User initialisieren (Robust gegen Restarts)
echo "Initialisiere Datenbank..."

# WARTEN: Bis MariaDB wirklich bereit ist (max 30 Sekunden)
echo "Warte auf MariaDB..."
for i in {30..0}; do
    if mariadb -u root -e "status" >/dev/null 2>&1 || mariadb -u root -proot -e "status" >/dev/null 2>&1; then
        break
    fi
    echo "MariaDB startet noch... ($i)"
    sleep 1
    if [ "$i" = 0 ]; then
        echo "FEHLER: MariaDB konnte nicht rechtzeitig gestartet werden."
        exit 1
    fi
done

# Prüfen, ob wir ohne Passwort (erster Start) reinkommen
if mariadb -u root -e "status" >/dev/null 2>&1; then
    echo "Erster Start: Setze Root-Passwort..."
    mariadb -e "CREATE DATABASE IF NOT EXISTS wordpress;"
    mariadb -e "ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';"
    mariadb -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;"
    mariadb -e "FLUSH PRIVILEGES;"
# Prüfen, ob wir mit dem Passwort 'root' reinkommen (Folgestarts)
elif mariadb -u root -proot -e "status" >/dev/null 2>&1; then
    echo "Folgestart: Login mit Passwort erfolgreich."
    mariadb -u root -proot -e "CREATE DATABASE IF NOT EXISTS wordpress;"
    mariadb -u root -proot -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;"
    mariadb -u root -proot -e "FLUSH PRIVILEGES;"
else
    echo "FEHLER: MariaDB Login fehlgeschlagen."
    exit 1
fi


# 6. Apache starten

echo "Setup abgeschlossen. Apache startet !"
apache2ctl -D FOREGROUND
