#!/bin/sh
#set "-x"
set "1>&2"
# phpmyFamily postinstall script
# required parameters: dbname, dbuser, dbpasswd, 
# admin_passwd, admin_name
#
#
# 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
#set "-x"
#set "1>&2"

check_standard_parameters()
{
        if [ "X${vhost_path}" = "X" ]; then
                echo "postinstall: no vhost_path parameter specified for application"
                exit 1
        fi
        if [ "X${domain_name}" = "X" ]; then
                echo "postinstall: no domain_name parameter specified for application"
                exit 1
        fi
        if [ "X${install_prefix}" = "X" ]; then
                echo "postinstall: no install_prefix parameter specified for application"
                exit 1
        fi
        if [ "X${ssl_target_directory}" = "X" ]; then
                echo "postinstall: no ssl_target_directory parameter specified for application"
                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 ; do 
		check_parameter "$pname"
	done

}




edit_conf_file()
{ 
	local p_dbpasswd=`modify_param_for_php "$dbpasswd"`
	regexp1="s/_dbname_/${dbname}/g"
	regexp2="s/_dbuser_/${dbuser}/g"
	regexp3="s/_dppasswd_/${p_dbpasswd}/g"
	regexp4="s|_absurl_|${application_url}|g"
	regexp5="s/_adminemail_/${admin_email}/g"
	regexp6="s/_trackemail_/no-reply\@${domain_name}/g"
	regexp7="s|_desc_|${description}|g"

	sed -e "${regexp1}" -e "${regexp2}" -e "${regexp3}" -e "${regexp4}" -e "${regexp5}" -e "${regexp6}" -e "${regexp7}" $1 > $1.copy
	mv -f $1.copy $1 
};

edit_sql_file()
{ 
	local p_admin_email=`modify_param_for_sql "$admin_email"`
	local p_admin_passwd=`modify_param_for_sql "$admin_passwd"`
  regexp1="s/_admin_name_/${admin_name}/g"
  regexp2="s/_admin_passwd_/${p_admin_passwd}/g"
  regexp3="s/_admin_email_/${p_admin_email}/g"
  
  sed -e "${regexp1}" -e "${regexp2}" -e "${regexp3}" $1 > $1.copy  
  mv -f $1.copy $1 
};


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

read_conf()
{
	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
}
modify_param_for_php()
{
    local cmd='
        s/\\/\\\\\\\\/g;
        s/\$/\\\\\$/g;
        s/\"/\\\\\"/g;';
    local pparam=`echo $1|perl -p -e "$cmd"`
    echo $pparam;
}
modify_param_for_sql()
{
    local cmd='
        s/\\/\\\\\\\\/g;
        s/\$/\\\$/g;
        s/\"/\\\"/g;';
    local pparam=`echo $1|perl -p -e "$cmd" -e "s/'/\\\\\\\\\\\\\\\\\\\\\\\\'/g"`
    echo $pparam;

}
	


cmd='my ($k,$v);
    if (/^([^=]+)=(.+)$/){
        $v=$2;
        chomp $v;
        $k=$1;
        $v =~ s/\\/\\\\/g;
        $v =~ s/\"/\\\"/g;
        $v =~ s/\$/\\\$/g;
        print "${k}=\"${v}\"\n";
    }'
var=`cat|perl -n  -e "$cmd"`
eval $var


# now we have full set of parameters, stored in variables

read_conf
#check_standard_parameters
parse_standard_parameters

root_d="${vhost_path}/${documents_directory}/${install_prefix}"
application_url="${proto}://${domain_name}/${install_prefix}/"

sql_file=${root_d}/mysql.sql
edit_sql_file ${sql_file}

config_file=${root_d}/inc/config.inc.php
edit_conf_file ${config_file}


${MYSQL_BIN_D}/mysql -u"${dbuser}" -p"${dbpasswd}" ${dbname} < ${sql_file}

rm -f ${sql_file}
rm -f -r "${root_d}/admin"
chmod 777 "${root_d}/images" "${root_d}/docs"

exit 0
