#!/bin/bash

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

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

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

app=$YNH_APP_INSTANCE_NAME

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 [ "$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 !"
fi
