#!/bin/bash

#=================================================
# GENERIC START
#=================================================
# IMPORT GENERIC HELPERS
#=================================================

source _common.sh
source /usr/share/yunohost/helpers

#=================================================
# LOAD SETTINGS
#=================================================

app=$YNH_APP_INSTANCE_NAME
trustedversion="4.0.3-1+stretch"
domain=$(ynh_app_setting_get $app domain)
path_url=$(ynh_app_setting_get $app path)
admin=$(ynh_app_setting_get $app admin)
is_public=$(ynh_app_setting_get $app is_public)
final_path=$(ynh_app_setting_get $app final_path)
language=$(ynh_app_setting_get $app language)
db_name=$(ynh_app_setting_get $app db_name)

#=================================================
# ENSURE DOWNWARD COMPATIBILITY
#=================================================

# Fix is_public as a boolean value
if [ "$is_public" = "Yes" ]; then
	ynh_app_setting_set $app is_public 1
	is_public=1
elif [ "$is_public" = "No" ]; then
	ynh_app_setting_set $app is_public 0
	is_public=0
fi

# If db_name doesn't exist, create it
if [ -z $db_name ]; then
	db_name=$(ynh_sanitize_dbid $app)
	ynh_app_setting_set $app db_name $db_name
fi

# If final_path doesn't exist, create it
if [ -z $final_path ]; then
	final_path=/var/www/$app
	ynh_app_setting_set $app final_path $final_path
fi

#=================================================
# CHECK THE PATH
#=================================================

# Normalize the URL path syntax
path_url=$(ynh_normalize_url_path $path_url)

#=================================================
# STANDARD UPGRADE STEPS
#=================================================

ynh_package_update

zabbixServerInstalledVersion=$(apt-cache policy zabbix-server-mysql | grep -Po "Installed: \K(.*)")
zabbixServerCandidateVersion=$(apt-cache policy zabbix-server-mysql | grep -Po "Candidate: \K(.*)")

zabbixFrontendInstalledVersion=$(apt-cache policy zabbix-frontend-php | grep -Po "Installed: \K(.*)")
zabbixFrontendCandidateVersion=$(apt-cache policy zabbix-frontend-php | grep -Po "Candidate: \K(.*)")

zabbixagentInstalledVersion=$(apt-cache policy zabbix-agent | grep -Po "Installed: \K(.*)")
zabbixagentCandidateVersion=$(apt-cache policy zabbix-agent | grep -Po "Candidate: \K(.*)")

if [ "$trustedversion" == "$zabbixServerCandidateVersion" ]
then

	if [ "$zabbixServerInstalledVersion" != "$zabbixServerCandidateVersion" -o "$zabbixFrontendInstalledVersion" != "$zabbixFrontendCandidateVersion" -o "$zabbixagentInstalledVersion" != "$zabbixagentCandidateVersion" ] 
	then
	    #=================================================
	    # BACKUP BEFORE UPGRADE THEN ACTIVE TRAP
	    #=================================================
	    
	    # Backup the current version of the app
	    ynh_backup_before_upgrade
	    ynh_clean_setup () {
		# restore it if the upgrade fails
		ynh_restore_upgradebackup
	    }
	    # Exit if an error occurs during the execution of the script
	    ynh_abort_if_errors
	    
	    cp -rp /etc/zabbix /tmp/
	    cp -p /usr/share/zabbix/conf/zabbix.conf.php /tmp/
	    
	    DEBIAN_FRONTEND=noninteractive apt-mark unhold zabbix-server-mysql zabbix-frontend-php
	    DEBIAN_FRONTEND=noninteractive apt-get -y download zabbix-frontend-php
	    ar x *.deb
	    tar xzf control.tar.gz
	    sed -i 's/apache2 | httpd, //' control
	    tar --ignore-failed-read -cvzf control.tar.gz {post,pre}{inst,rm} md5sums control
	    ar rcs zabbix-frontend-php+stretch_all-noapache2.deb debian-binary control.tar.gz data.tar.xz
	    dpkg -i zabbix-frontend-php+stretch_all-noapache2.deb
	    rm -fr zabbix-*.deb
	    apt-get -y --only-upgrade install zabbix-server-mysql zabbix-agent
	    DEBIAN_FRONTEND=noninteractive apt-mark hold zabbix-server-mysql zabbix-frontend-php
	    
	    rm /usr/share/zabbix/conf/zabbix.conf.php
	    cp -rpf /tmp/zabbix /etc/
	    cp -pf /tmp/zabbix.conf.php /usr/share/zabbix/conf/
	    
	    rm -fr /tmp/zabbix*
    
	    systemctl reload nginx
	else
		ynh_print_info "Nothing to update ! (Already up to date)"
	fi
else
	ynh_print_info "Nothing to update ! (Trusted version)"
fi
