#!/bin/sh
# postrm script for dolibarr
#
# see: dh_installdeb(1)

#set -e
set +e

# summary of how this script can be called:
#        * <postrm> `remove'
#        * <postrm> `purge'
#        * <old-postrm> `upgrade' <new-version>
#        * <new-postrm> `failed-upgrade' <old-version>
#        * <new-postrm> `abort-install'
#        * <new-postrm> `abort-install' <old-version>
#        * <new-postrm> `abort-upgrade' <old-version>
#        * <disappearer's-postrm> `disappear' <r>overwrit>r> <new-version>
# for details, see /usr/share/doc/packaging-manual/



lighttpd_remove() {
	if [ -f /etc/lighttpd/conf-available/50-dolibarr.conf ] ; then
		echo "postrm Remove link for Lighttpd config file"
		rm -f /etc/lighttpd/conf-available/50-dolibarr.conf
		if which lighty-enable-mod >/dev/null 2>&1 ; then
			lighty-disable-mod dolibarr
		else
			echo "postrm Lighttpd not installed, skipping"
		fi
		# See bug #448682
		if [ -h /etc/lighttpd/conf-enabled/50-dolibarr.conf ] ; then
		    echo "postrm Manually deleting lighttpd/dolibarr configuration link"
		    rm /etc/lighttpd/conf-enabled/50-dolibarr.conf
		fi
	fi
}

apache_remove() {
	if [ -d /etc/$webserver/conf.d ] && [ -L /etc/$webserver/conf.d/dolibarr.conf ]; then
		echo "postrm Remove link for Apache config file"
		rm -f /etc/$webserver/conf.d/dolibarr.conf
	fi
}



if [ -f /usr/share/debconf/confmodule ]; then
    . /usr/share/debconf/confmodule
fi

db_version 2.0

echo Run the dolibarr postrm script


docdir='/var/lib/dolibarr/documents'
config="/etc/dolibarr/conf.php"
lockfile="$docdir/install.lock"



case "$1" in

    # Call when we upgrade
	upgrade)
		echo "postrm upgrade"
	;;

    # Call when we uninstall
	remove)
		echo "postrm remove"
		rm -f $lockfile

		# Reconfigure web server
		db_get dolibarr/reconfigure-webserver

		webservers="$RET"

		# Restart web servers
		for webserver in $webservers; do
			webserver=${webserver%,}
			if [ "$webserver" = "lighttpd" ] ; then
				lighttpd_remove
			else
				apache_remove $webserver
			fi
			# Redirection of 3 is needed because Debconf uses it and it might 
			# be inherited by webserver. See bug #446324.
			if [ -f /etc/init.d/$webserver ] ; then
				if [ -x /usr/sbin/invoke-rc.d ]; then
					invoke-rc.d $webserver reload 3>/dev/null || true
				else
					/etc/init.d/$webserver reload 3>/dev/null || true
				fi
			fi
		done
	;;

    # Call when we uninstall and purge
	purge)
		echo "postrm purge"

		# Ask if we must delete database
		echo "postrm db_input dolibarr/postrm"
		db_input critical dolibarr/postrm || true
		db_go || true

		echo "postrm db_get dolibarr/postrm"
		# We disable set -e to avoid premature end of script if error
		set +e
		db_get dolibarr/postrm
		set -e
	
		if [ "$RET" = "true" ] ; then
			echo postrm Mysql database deletion
			# Get database configuration
			dbserver="localhost"
			dbuser="dolibarrdebian"
			dbname="dolibarrdebian"
			#db_get "dolibarr/db/name"
			#dbname="$RET"
			superuserlogin=''
			superuserpassword=''
			if [ -f /etc/mysql/debian.cnf ] ; then
				# Load superuser login and pass
				superuserlogin=$(grep --max-count=1 "user" /etc/mysql/debian.cnf | sed -e 's/^user[ =]*//g')
				superuserpassword=$(grep --max-count=1 "password" /etc/mysql/debian.cnf | sed -e 's/^password[ =]*//g')
			fi
			echo postrm Mysql superuser found to use is $superuserlogin
			dbadmin="$superuserlogin"
			dbadmpass="$superuserpassword"
			dbtype="mysql"
			
			# To delete a mysql user (disabled)
			# Needs:        $dbuser    - the user name to create (or replace).
			#               $dballow   - what hosts to allow (defaults to %).
			#               $dbname    - the database that user should have access to.
			#               $dbpass    - the password to use.
			#               $dbserver  - the server to connect to.
			#               $dbadmin   - the administrator name.
			#               $dbadmpass - the administrator password.
			#               which
			#               mysql
			#               /usr/share/wwwconfig-coomon/mysql.get
			#. /usr/share/wwwconfig-common/${dbtype}-dropuser.sh
			
			# To delete database
			# Needs:        $dbname    - the database that user should have access to.
			#               $dbserver  - the server to connect to.
			#               $dbadmin   - the administrator name.
			#               $dbadmpass - the administrator password.
			#               which
			#               mysql
			#               /usr/share/wwwconfig-common/mysql.get
			echo "postrm Delete database $dbname on server $dbserver using account $dbadmin"

			# Define mysqlcmd
			if [ -z "$dbserver" ] || [ "$dbserver" = "localhost" ]; then
				hostopt=""
			    dbserver=localhost
			else
			    case "$dbserver" in
				:*)
				    dbsocket=`echo $dbserver | sed -e 's/^://'`
				    hostopt="-S $dbsocket"
				    ;;
				*)
				    hostopt="-h $dbserver"
				    ;;
			    esac
			fi
			if [ -z "$dbadmpass" ] ; then
			    log="${log}No password used."
			    passopt=""
			else
			    passopt="--password='"`echo "$dbadmpass" | sed -e "s/'/'"'"'"'"'"'"'/g"`"'"
			fi
			mysqlcmd="mysql $hostopt $passopt -u $dbadmin"
			mysqlcmdnopass="mysql $hostopt -u $dbadmin"
			
		    # Now run the drop user
			if eval $mysqlcmd -f -e "\"DROP USER '$dbuser'@'localhost';\"" ; then
				echo postrm Database login $dbuser@localhost removed
			else
			    error="Unable to run $mysqlcmdnopass -f -e \"DROP USER '$dbuser'@'localhost';\""
				echo postrm $error
			fi
			if eval $mysqlcmd -f -e "\"DROP USER '$dbuser'@'%';\"" ; then
				echo postrm Database login $dbuser@% removed
			else
			    error="Unable to run $mysqlcmdnopass -f -e \"DROP USER '$dbuser'@'%';\""
				echo postrm $error
			fi

		    # Now run the drop commands
		    if eval $mysqlcmd -f -e "\"show databases;\"" | grep -e "^$dbname" > /dev/null 2>&1 ; then
				log="${log}Droping database $dbname."
				if eval $mysqlcmd -f -e "\"DROP DATABASE $dbname;\"" ; then
				    if eval $mysqlcmd -f -e "\"show databases;\"" | grep -e "^$dbname" > /dev/null 2>&1 ; then
					error="Database $dbname NOT successfully droped. You have to do it manually."
					echo postrm $error
				    else
					status=drop
				    fi
				else
				    error="Unable to run the drop database script."
					echo postrm $error
				fi
		    else
				status=nothing
				log="${log}Database $dbname already not exists."
		    fi

		    echo "postrm Remove directory $docdir"
		    rm -rf $docdir ; 
 
		else
			echo "postrm Delete of dolibarr database and uploaded files not wanted" 
		fi
	
		rm -rf /etc/dolibarr

		# We clean variable (we ignore errors because db_reset can fails if var was never set)
        set +e
		db_reset dolibarr/reconfigure-webserver
		db_reset dolibarr/postrm
        set -e

		#db_purge
	;;

	failed-upgrade|abort-install|abort-upgrade|disappear)
	;;

	*)
		echo "postrm called with unknown argument $1" >&2
		exit 0
	;;
esac

#DEBHELPER#

db_stop

exit 0
