#!/bin/sh

# phpAds postinstall script
# required parameters: dbname, dbuser, dbpasswd, 
# admin_name, admin_passwd
#
#
# here is also some standard parameters, that must be specified:
# vhost_path - full path to vhost root directory
# domain_name - name of domain
# install_prefix - path of application inside vhost directory
# ssl_target_directory - true, if application is in httpsdocs


read_params()
{
var=`cat | awk '{
	eqpos=index($0, "=");
	if (eqpos>1) {
		var=substr($0, 1, eqpos-1);
		val=substr($0, eqpos+1);

		tmp="[\x5c\x5c]";
		tmp2="\x5c\x5c\x5c\x5c";
		gsub(tmp,tmp2,val);


		tmp2="\x5c\x5c\x5c\x22";
		gsub("\"",tmp2,val);
		print var "=\"" val "\"";
	};
}'`

eval $var

# now we have full set of parameters, stored in variables
# read conf
:w

	if test -r /etc/psa/psa.conf; then
		while read var val; do
			case "$var" in
				[A-Z]*) eval "$var"='"$val"';;
			esac; 
		done </etc/psa/psa.conf
	else
		echo /etc/psa/psa.conf not found
		exit 1
	fi
}

check_parameter()
{
	local pname="$1"
	if eval "test -z \"\$$pname\"";then
		scrname="`basename "$0"`"
		echo "$scrname: no $pname parameter specified for application"
		exit 1
	fi
}

check_params()
{
	for pname in vhost_path domain_name install_prefix ssl_target_directory \
			dbuser dbpasswd dbname \
			admin_email admin_name admin_passwd \
			locale company_name admin_fullname; do 
		check_parameter "$pname"
	done

}


parse_params()
{
	if [ "X${ssl_target_directory}" = "Xtrue" ]; then
		proto="https:"
		documents_directory="httpsdocs"
	else
		proto="http:"
		documents_directory="httpdocs"
	fi
};



edit_config()
{ 
  regexp1="s/_dbname_/${dbname}/g"
  regexp2="s/_dbuser_/${dbuser}/g"
  regexp3="s/_dbpasswd_/${dbpasswd}/g"
  regexp4="s|_url_prefix_|${url_prefix}|g"
  
  sed -e "${regexp1}" -e "${regexp2}" -e "${regexp3}" -e "${regexp4}" $1 > $1.copy
  
  mv -f $1.copy $1 
};



edit_sql()
{
	regexp1="s/_admin_name_/${admin_name}/g"
	regexp2="s/_company_name_/${company_name}/g"
	regexp3="s/_admin_fullname_/${admin_fullname}/g"
	regexp4="s/_admin_email_/${admin_email}/g"
	regexp5="s/_admin_passwd_/${admin_passwd}/g"
	regexp6="s/_locale_/${locale}/g"
	
	sed -e "${regexp1}" -e "${regexp2}" -e "${regexp3}" -e "${regexp4}" -e "${regexp5}" -e "${regexp6}" $1 >$1.copy
mv -f $1.copy $1
	
};

mysql_query()
{
	query=$sql
	result=`echo "$query" | ${MYSQL_BIN_D}/mysql -u${dbuser} -p${dbpasswd} ${dbname} 2>/dev/null`
	
	if [ $? -ne 0 ]; then
		echo "$query"
		if [ -x /etc/init.d/mysqld ]; then
			mysqld_bin="/etc/init.d/mysqld restart"
		elif [ -x $PRODUCT_ROOT_D/mysql/bin/mysqld_multi ]; then
			mysqld_bin="$PRODUCT_ROOT_D/mysql/bin/mysqld_multi stop; $PRODUCT_ROOT_D/mysql/bin/mysqld_multi start"
		elif [ -x /etc/init.d/mysql ]; then
			mysqld_bin="/etc/init.d/mysql restart"	
		fi
		if [ "X$mysqld_bin" != "X" ]; then
			echo "===> Trying to restart MySQL server..."
			$mysqld_bin
			sleep 5
			echo "$query" | $mysql 2>/dev/null
			if [ $? -ne 0 ]; then
				echo "===> Error while registering module in Plesk: can't access database."
				echo "$query"
				exit 1
			fi
		fi
	fi
	return $result

}

read_params
check_params
parse_params

root_d="${vhost_path}/${documents_directory}/${install_prefix}"
url_prefix="${proto}//${domain_name}/${install_prefix}"
sql_file="${root_d}/mysqldb.sql"
config_file="${root_d}/config.inc.php"

edit_config ${config_file}
edit_sql ${sql_file}

sql=`cat ${sql_file}`
mysql_query
rm -f ${sql_file}

exit 0
