#!/bin/bash

RED='\033[0;31m'
GREEN='\033[0;32m'
NOCOLOR='\033[0m'

DATE=$(date +%F-%H-%M)

set -e

echo -e "${RED}Installation von Shopware 6, Sprache: Deutsch, Während: Euro ${NOCOLOR}"
echo " "
echo -e "${RED}Bitte Datenbanknutzer, -passwort und -name eingeben:${NOCOLOR}"
read -p 'Datenbanknutzer: ' DBUSER
read -p 'Datenbankpasswort: ' DBPASS
read -p 'Datenbankname: ' DBNAME

if [ -z "$DBUSER" ] || [ -z "$DBPASS" ] || [ -z "$DBNAME" ]; then
echo -e "${RED}Informationen Datenbanknutzer, -passwort und -name notwendig${NOCOLOR}"
exit
fi

RESULT=$(/usr/local/pd-admin2/bin/mysql -u "$DBUSER" -p"$DBPASS" -e "use $DBNAME")
if [[ $RESULT -ne 0 ]]; then
echo -e "${RED}MySQL Daten fehlerhaft. Bitte prüfen und Skript erneut ausführen.${NOCOLOR}"
exit
fi

echo -e "${RED}Unter welcher Subdomain soll Shopware erreichbar sein? Bitte die Subdomain angeben${NOCOLOR} z.B shopware.example.net oder www.example.net"
read -p 'Subdomain: ' DOMAIN

if [ -z "$DOMAIN" ]; then
echo -e "${RED}Subdomain nicht angegeben${NOCOLOR}"
exit
fi


echo -e "\n"
echo -e "${RED}Bitte Webverzeichnis/Documentroot der Domain${NOCOLOR} z.B shopware.test20000.de ${RED}innerhalb des Home-Verzeichnis angeben. Bei dem Webverzeichnis/Documentroot handelt es sich um das in pd-admin konfigurierte Zielverzeichnis der Domain:${NOCOLOR}"
echo -e "\n"
read -p 'Webverzeichnis: ' DOCROOT
if [ ! -d ~/$DOCROOT ]; then

    echo -e "${RED}Webverzeichnis/Documentroot ${NOCOLOR}$DOCROOT ${RED}existiert nicht oder ein Zugriff ist nicht möglich. Bitte prüfen Sie Ihre Eingaben${NOCOLOR}"
    echo -e "\n"
    echo -e "${RED}Bitte Webverzeichnis/Documentroot der Domain angeben${NOCOLOR} z.B shopware.test20000.de ${RED}im Benutzerverzeichnis:${NOCOLOR}"
    set -e
    read -p 'Webverzeichnis: ' DOCROOT
    if [ ! -d ~/$DOCROOT ]; then
            echo -e "\n"
            echo -e "${RED}Verzeichnis${NOCOLOR} $DOCROOT ${RED}existiert nicht. Bitte legen Sie dies an."
            echo -e "\n"
            echo -e "${RED}Beende das Skript. Installation kann nicht fortgesetzt werden${NOCOLOR}"
            exit
    fi
fi

export PATH=~/bin:$PATH
export PHP_BINARY=$HOME/bin/php

[ -d ~/bin ] || mkdir ~/bin

cd ~/bin

if [ ! -e ./php ]; then

cat <<EOT> ./php
#!/bin/bash
export PHP_BINARY=$HOME/bin/php
exec /usr/local/pd-admin2/bin/php-8.1-cli -c $HOME/php.ini "\$@"
EOT

chmod +x $HOME/bin/php

fi

if [ ! -e ./composer ]; then

wget -O ./composer-setup.php https://getcomposer.org/installer

~/bin/php -d allow_url_fopen=1 ./composer-setup.php \
--filename=composer.phar

cat <<EOF > ./composer
#!/bin/bash
exec $HOME/bin/php $HOME/bin/composer.phar "\$@"
EOF

chmod +x ~/bin/composer
rm -f ./composer-setup.php

fi

cd ~

[ -d ~/tmp ] || mkdir ~/tmp

if [ ! -e ./php.ini ]; then

cat <<EOT > ./php.ini
memory_limit = 4096M
sys_temp_dir = $HOME/tmp/

extension = soap.so
extension = intl.so
extension = sodium.so

extension = apcu.so
apc.enabled=1
apc.shm_size=128M
apc.num_files_hint=24000
apc.ttl=7200
apc.enable_cli=1
apc.gc_ttl=3600
apc.entries_hint=4096
apc.slam_defense=1
apc.serializer=igbinary

zend_extension = opcache.so
opcache.memory_consumption=256
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=24000
opcache.validate_root = 1
opcache.jit_buffer_size=100M
EOT

fi

~/bin/composer create-project shopware/production shopware-$DATE

/usr/bin/sed -i 's/^DATABASE/#&/' ~/shopware-$DATE/.env
/usr/bin/sed -i 's/^APP_URL/#&/' ~/shopware-$DATE/.env
cat <<EOT >> ~/shopware-$DATE/.env
DATABASE_URL=mysql://$DBUSER:$DBPASS@localhost/$DBNAME
COMPOSER_HOME=$HOME/bin/composer
APP_URL=https://$DOMAIN
EOT

cd ~/shopware-$DATE

./bin/console system:install --basic-setup --shop-locale=de-DE --shop-currency=EUR

cd ~/
mv $DOCROOT $DOCROOT-backup-$DATE
ln -s ~/shopware-$DATE/public/ ~/$DOCROOT
echo -e "\n"
echo -e "${RED}Zugangsdaten für das Backend unter <https://$DOMAIN/admin> setzen. Bitte vergeben Sie nun ein Passwort für den Account admin${NOCOLOR}"
cd ~/shopware-$DATE
./bin/console user:change-password admin
echo -e "${GREEN}Installation abgeschlossen${NOCOLOR}"
exit
