#!/bin/sh
NORMAL=''
RED=''
GREEN=''

msglog() {
	case "${1}" in
                green)
                        TEXT_COLOR="${GREEN}"
                        ;;
                red)
                        TEXT_COLOR="${RED}"
                        ;;
                normal)
                        TEXT_COLOR="${NORMAL}"
                        ;;
        esac
	DATE=$(date '+%Y %b %d %H:%M:%S')
	echo ${DATE} ${TEXT_COLOR}${2}${NORMAL}
}

waiting_for_db() {
while ! mariadb-show -h db -uroot -p${MYSQL_ROOT_PASSWORD} 2>&1 | grep "^| ${MYSQL_DATABASE}" > /dev/null 2>&1 ; do
	msglog red "Waiting for mysql database initilization..."
	sleep 5
done
}

start_apache() {
	rm -r /run/*
	mkdir -p /run/apache2

	msglog green "Starting Apache..."
	exec /usr/sbin/httpd -D FOREGROUND
}

/etc/service/php

mkdir -p /var/www/glpi
if [ ! -e "/etc/glpi/config_db.php" ] ; then
	waiting_for_db
	msglog red "Initialazing ${GLPI_TARBALL}..."
	cd /root
	cp -r /root/glpi_template/etc/. /etc/glpi/.
	cp -r /root/glpi_template/files/. /var/lib/glpi/.
	mariadb --host=db --user=root --password=${MYSQL_ROOT_PASSWORD} << EOF
use mysql;
GRANT SELECT ON time_zone_name TO '${MYSQL_USER}'@'%';
EOF
	cd /var/www/glpi
	php82 bin/console db:install --config-dir=${GLPI_CONFIG_DIR} -L fr_FR -H db -d ${MYSQL_DATABASE} -u ${MYSQL_USER} -p ${MYSQL_PASSWORD} -n
	rm install/install.php
	for i in  /var/www/glpi /etc/glpi /var/lib/glpi /var/log/glpi ; do
		find $i ! -user apache -exec chown apache:apache {} \; || true
	done
	echo "${GLPI_VERSION}" > /etc/glpi/glpi_actual_version
	echo "${FIELDS_VERSION}" > /etc/glpi/fields_actual_version
	echo "${DATAINJECTION_VERSION}" > /etc/glpi/datainjection_actual_version
	echo "${GLPIINVENTORY_VERSION}" > /etc/glpi/glpiinventory_actual_version
	php bin/console database:enable_timezones
	msglog green "Initialazing complete..."
else
	msglog green "GLPI is already initialized"
	GLPI_ACTUAL_VERSION=$(test -e /etc/glpi/glpi_actual_version && cat /etc/glpi/glpi_actual_version)
	FIELDS_ACTUAL_VERSION=$(test -e /etc/glpi/fields_actual_version && cat /etc/glpi/fields_actual_version)
	DATAINJECTION_ACTUAL_VERSION=$(test -e /etc/glpi/datainjection_actual_version && cat /etc/glpi/datainjection_actual_version)
	GLPIINVENTORY_ACTUAL_VERSION=$(test -e /etc/glpi/glpiinventory_actual_version && cat /etc/glpi/glpiinventory_actual_version)
	if [ "${GLPI_ACTUAL_VERSION}" = "${GLPI_VERSION}" -a "${FIELDS_ACTUAL_VERSION}" = "${FIELDS_VERSION}" -a "${DATAINJECTION_ACTUAL_VERSION}" = "${DATAINJECTION_VERSION}" -a "${GLPIINVENTORY_ACTUAL_VERSION}" = "${GLPIINVENTORY_VERSION}" ] ; then
		for i in  /var/www/glpi /etc/glpi /var/lib/glpi /var/log/glpi ; do
			find $i ! -user apache -exec chown apache:apache {} \; || true
		done
		[ -e "/var/www/glpi/install/install.php" ] && rm /var/www/glpi/install/install.php
		msglog green "GLPI already up2date"
		start_apache
	fi
	msglog red "Updating GLPI from ${GLPI_ACTUAL_VERSION} to ${GLPI_VERSION}"
	waiting_for_db
	cd /var/www/glpi
	php82 bin/console glpi:maintenance:enable -n
	php82 bin/console glpi:plugin:deactivate --all # -n
	rm /var/www/glpi/install/install.php
	php82 bin/console database:update --config-dir=${GLPI_CONFIG_DIR} -n && \
	       ( echo "${GLPI_VERSION}" > /etc/glpi/glpi_actual_version ; \
	       echo "${FIELDS_VERSION}" > /etc/glpi/fields_actual_version ; \
	       echo "${DATAINJECTION_VERSION}" > /etc/glpi/datainjection_actual_version  ; \
	       echo "${GLPIINVENTORY_VERSION}" > /etc/glpi/glpiinventory_actual_version )
	php82 bin/console glpi:maintenance:disable -n
	for i in  /var/www/glpi /etc/glpi /var/lib/glpi /var/log/glpi ; do
		find $i ! -user apache -exec chown apache:apache {} \; || true
	done
fi
start_apache
