#!/bin/ksh

#
# set up internal parameters
#

SHOPSITE_DIRECTORY=$1
SHOPSITE_URL=$2
SHOPPING_CART_DIRECTORY=$3
SHOPPING_CART_URL=$4
SHOPSITE_STORE_ID=$5
STORE_FRONT_URL=$6
DATA_DIRECTORY=$7
HTML_DIRECTORY=$8
SELLER_USER_ID=$9
SELLER_GROUP_ID=${10}
UNIX_WEB_USER_ID=${11}
UNIX_WEB_GROUP_ID=${12}
PATH_TO_TAR=${13}
SELLER_EMAIL=${14}
PATH_TO_SENDMAIL=${15}
SERVER_LOG_PATH=${16}
SERVER_LOG_NAME=${17}
USE_SECURE_SHOPSITE=${18}
SECURE_SHOPSITE_URL=${19}
USE_SECURE_SHOPPING_CART=${20}
SECURE_SHOPPING_CART_URL=${21}
STORE_CURRENCY=${22}
MERCHANT_LOCALE=${23}
BUYER_LOCALE=${24}
SHOPSITE_IMAGE_DIR=${25}
SHOPSITE_IMAGE_URL=${26}
STORE_LANG_PACK=${27}
SECURE_SHOPSITE_IMAGE_URL=${28}
DEBUG_LOG_DIRECTORY=${29}
DEBUG_LOG_FILE=${30}
LOG_DEBUG=${31}

FATAL_ERROR=1000

#
# Functions
#



#
# print debug string to appropriate location
#
# $1=debug string to be printed
#
print_debug()
{
  ./debug_handler.ksh "$0" "$SHOPSITE_STORE_ID" "$1" "$DEBUG_LOG_DIRECTORY" "$DEBUG_LOG_FILE" "$LOG_DEBUG"
}



#
# Populate a directory from a tar file.
#
# populate_dir $1=directory $2=tar file name
#
populate_dir()
{
  INSTALL_DIRECTORY=$PWD
  cd $1

  if ! ($PATH_TO_TAR -xf $INSTALL_DIRECTORY/${2}.tar)
  then
      cd $INSTALL_DIRECTORY
      print_debug "Error: Could not untar the file: $INSTALL_DIRECTORY/$2.tar"
      print_debug "       Store installation aborted."
      print_debug
      ERROR=`./error_handler.ksh $FATAL_ERROR`
      printf "ERROR: $ERROR\n"
      exit 1
  else
      cd $INSTALL_DIRECTORY
      print_debug "Successfully populated the directory:"
      print_debug "$1"
      print_debug
  fi
}

#
# Create file links
#
# link_file $1=file to link to $2=symbolic link
#
link_file()
{
  if test -e ${2}
  then
      rm ${2}
  fi
  if ! (ln -s ${1} ${2})
  then
      print_debug "Error: Could not link file:"
      print_debug "       $2 to"
      print_debug "       $1"
      print_debug "       Store installation aborted."
      print_debug
      ERROR=`./error_handler.ksh $FATAL_ERROR`
      printf "ERROR: $ERROR\n"
      exit 1
  else
      print_debug "Successfully linked the file:"
      print_debug "$2 to"
      print_debug "$1"
      print_debug
  fi
}


##############################################
#########                            #########
#########  Actual code starts here.  #########
#########                            #########
##############################################
#
#
#


#  Untar data.tar into the data directory.
print_debug "populate_dir $DATA_DIRECTORY data"
populate_dir $DATA_DIRECTORY data

#  On a fresh install, delete "pagepalette2.dat"
#  which is used only for updating old ShopSite
#  stores (pre 4.1).
if test -e pagepalette2.dat
then
    rm -f pagepalette2.dat
fi

#  Copy ${SHOPSITE_STORE_ID}.auth to store.bak in the installation directory
cp -pr ./${SHOPSITE_STORE_ID}.auth ./store.bak

#  Move ${SHOPSITE_STORE_ID}.auth to ${SHOPSITE_STORE_ID}.auth in the data directory
mv -f ./${SHOPSITE_STORE_ID}.auth $DATA_DIRECTORY/${SHOPSITE_STORE_ID}.auth

#  Create links to SHOPSITE_STORE_ID.auth in the
#  ShopSite and shopping cart directories
print_debug "link_file $DATA_DIRECTORY/$SHOPSITE_STORE_ID.auth $SHOPSITE_DIRECTORY/$SHOPSITE_STORE_ID.auth"
link_file ${DATA_DIRECTORY}/${SHOPSITE_STORE_ID}.auth ${SHOPSITE_DIRECTORY}/${SHOPSITE_STORE_ID}.auth
print_debug "link_file $DATA_DIRECTORY/$SHOPSITE_STORE_ID.auth $SHOPPING_CART_DIRECTORY/$SHOPSITE_STORE_ID.auth"
link_file ${DATA_DIRECTORY}/${SHOPSITE_STORE_ID}.auth ${SHOPPING_CART_DIRECTORY}/${SHOPSITE_STORE_ID}.auth

print_debug "Modify ufooter.dat file in the data directory"
#  Modify ufooter.dat file in the data directory
touch $DATA_DIRECTORY/.tmp_ufooter_dat
#printf "<hr> <a href=\"http://www.shopsite.com\"> <img src=\"%s/media/powered.gif\" ALT=\"Shopsite\" width=100 height=50 border=0> </a>" "$STORE_FRONT_URL" > $DATA_DIRECTORY/.tmp_ufooter_dat
mv -f $DATA_DIRECTORY/.tmp_ufooter_dat $DATA_DIRECTORY/ufooter.dat

print_debug "Modify storelink.dat file in the data directory"
#  Modify storelink.dat file in the data directory
touch $DATA_DIRECTORY/.tmp_storelink_dat
printf "<a href=\"%s/index.html\"> <img src=\"%%s/return_to_store.gif\" border=0> </a>" "$STORE_FRONT_URL" > $DATA_DIRECTORY/.tmp_storelink_dat
mv -f $DATA_DIRECTORY/.tmp_storelink_dat $DATA_DIRECTORY/storelink.dat


# Setup the paydata.aa file in the DATA_DIRECTORY
#print_debug "Setting Currency token in the ${DATA_DIRECTORY}/paydata.aa file" 
#touch ${DATA_DIRECTORY}/paydata.aa.new
#while read -r field value
#do
#    if ! test "X$field" = "XCurrency:"
#    then
#        printf "%s %s\n" "$field" "$value" >> ${DATA_DIRECTORY}/paydata.aa.new
#    fi
#done < ${DATA_DIRECTORY}/paydata.aa
#printf "Currency: $\n" 
#  Copy the new file over the old file.
#mv -f ${DATA_DIRECTORY}/paydata.aa.new ${DATA_DIRECTORY}/paydata.aa

print_debug "Set regen file to \"all\" in the data directory"
#  Set regen file to "all"
touch $DATA_DIRECTORY/.tmp_update_dat
printf "Full Regen" > $DATA_DIRECTORY/.tmp_update_dat
mv -f $DATA_DIRECTORY/.tmp_update_dat $DATA_DIRECTORY/update.dat

print_debug "Set Server log path and Server log name"
print_debug "in stats/statconfig.aa in the data directory"
#  Append settings to $DATA_DIRECTORY/stats/statconfig.aa
#  Copy everything to a new file, except for the lines we want to append.
touch $DATA_DIRECTORY/stats/.statconfig.aa.new
while read -r field1 field2 field3 value
do
    if ! test "X$field1" = "XServer"
    then
        printf "%s %s %s %s\n" "$field1" "$field2" "$field3" "$value" >> $DATA_DIRECTORY/stats/.statconfig.aa.new
    elif ! test "X$field2" = "Xlog"
    then
        printf "%s %s %s %s\n" "$field1" "$field2" "$field3" "$value" >> $DATA_DIRECTORY/stats/.statconfig.aa.new
    elif ! test "X$field3" = "Xpath:" && ! test "X$field3" = "Xname:"
    then
        printf "%s %s %s %s\n" "$field1" "$field2" "$field3" "$value" >> $DATA_DIRECTORY/stats/.statconfig.aa.new
    fi
done < $DATA_DIRECTORY/stats/statconfig.aa
#  Append the lines we want to the $DATA_DIRECTORY/stats/statconfig.aa.new file.
printf "Server log path: %s\n" "$SERVER_LOG_PATH" >> $DATA_DIRECTORY/stats/.statconfig.aa.new
printf "Server log name: %s\n" "$SERVER_LOG_NAME" >> $DATA_DIRECTORY/stats/.statconfig.aa.new
#  Move the new file over the old file.
mv -f $DATA_DIRECTORY/stats/.statconfig.aa.new $DATA_DIRECTORY/stats/statconfig.aa

#  Untar html.tar into the HTML directory.
print_debug "populate_dir $HTML_DIRECTORY html"
populate_dir $HTML_DIRECTORY html

#  If index.html does not exist, then rename abcd1234.html
#  to index.html else remove abcd1234.html
print_debug
print_debug "Ensuring that there is an index.html file for the new store"
if  test -e "${HTML_DIRECTORY}/_abcd1234.html"
then
  if  test -e "${HTML_DIRECTORY}/index.html"   # don't copy over an index.html file
  then
    print_debug
    print_debug "index.html file already exists."
    print_debug
    rm ${HTML_DIRECTORY}/_abcd1234.html
  else
    print_debug
    print_debug "No index.html file exists."
    print_debug "Creating default index.html"
    print_debug
    mv -f ${HTML_DIRECTORY}/_abcd1234.html ${HTML_DIRECTORY}/index.html
    touch ${DATA_DIRECTORY}/wizard.aa
    printf "indexhtml_shopsite: Yes\n" >> ${DATA_DIRECTORY}/wizard.aa
    printf "Theme: 50\n" >> ${DATA_DIRECTORY}/wizard.aa
  fi
fi

if test "$USE_SECURE_SHOPSITE" = "YES"
then
    USE_SECURE_SHOPSITE=checked
fi
if test "$USE_SECURE_SHOPSITE" = "yes"
then
    USE_SECURE_SHOPSITE=checked
fi

if test "$USE_SECURE_SHOPPING_CART" = "YES"
then
    USE_SECURE_SHOPPING_CART=checked
fi
if test "$USE_SECURE_SHOPPING_CART" = "yes"
then
    USE_SECURE_SHOPPING_CART=checked
fi

##  Create [SHOPSITE_STORE_ID].aa in the ShopSite directory.
print_debug "Creating $SHOPSITE_STORE_ID.aa file in the ShopSite directory"
print_debug
printf "mystore: %s/index.html\n" "$STORE_FRONT_URL" > $SHOPSITE_DIRECTORY/$SHOPSITE_STORE_ID.aa
printf "outputurl: %s\n" "$STORE_FRONT_URL" >> $SHOPSITE_DIRECTORY/$SHOPSITE_STORE_ID.aa
printf "outputdir: %s\n" "$HTML_DIRECTORY" >> $SHOPSITE_DIRECTORY/$SHOPSITE_STORE_ID.aa
printf "datadir: %s\n" "$DATA_DIRECTORY" >> $SHOPSITE_DIRECTORY/$SHOPSITE_STORE_ID.aa
printf "bo_dir: %s\n" "$SHOPSITE_DIRECTORY" >> $SHOPSITE_DIRECTORY/$SHOPSITE_STORE_ID.aa
printf "bo_use_security: %s\n" "$USE_SECURE_SHOPSITE" >> $SHOPSITE_DIRECTORY/$SHOPSITE_STORE_ID.aa
printf "bo_reg_url: %s\n" "$SHOPSITE_URL" >> $SHOPSITE_DIRECTORY/$SHOPSITE_STORE_ID.aa
printf "bo_secure_url: %s\n" "$SECURE_SHOPSITE_URL" >> $SHOPSITE_DIRECTORY/$SHOPSITE_STORE_ID.aa
printf "sb_dir: %s\n" "$SHOPPING_CART_DIRECTORY" >> $SHOPSITE_DIRECTORY/$SHOPSITE_STORE_ID.aa
printf "sb_prompt_orderinst: %s\n" "checked" >> $SHOPSITE_DIRECTORY/$SHOPSITE_STORE_ID.aa
printf "sb_reg_url: %s\n" "$SHOPPING_CART_URL" >> $SHOPSITE_DIRECTORY/$SHOPSITE_STORE_ID.aa
printf "sb_secure_url: %s\n" "$SECURE_SHOPPING_CART_URL" >> $SHOPSITE_DIRECTORY/$SHOPSITE_STORE_ID.aa
printf "sb_use_security: %s\n" "$USE_SECURE_SHOPPING_CART" >> $SHOPSITE_DIRECTORY/$SHOPSITE_STORE_ID.aa
printf "sb_prompt_comments: %s\n" "checked" >> $SHOPSITE_DIRECTORY/$SHOPSITE_STORE_ID.aa
printf "from_addr: %s\n" "$SELLER_EMAIL" >> $SHOPSITE_DIRECTORY/$SHOPSITE_STORE_ID.aa
printf "customcgi: \n" >> $SHOPSITE_DIRECTORY/$SHOPSITE_STORE_ID.aa
printf "ccprocessor: \n" >> $SHOPSITE_DIRECTORY/$SHOPSITE_STORE_ID.aa
printf "sendmail_loc: %s\n" "$PATH_TO_SENDMAIL" >> $SHOPSITE_DIRECTORY/$SHOPSITE_STORE_ID.aa
printf "AdvancedUser: No\n" >> $SHOPSITE_DIRECTORY/$SHOPSITE_STORE_ID.aa
#printf "decimal: ${SHOPSITE_STORE_DECIMAL_SYMBOL}\n" >> $SHOPSITE_DIRECTORY/$SHOPSITE_STORE_ID.aa
#printf "separator: ${SHOPSITE_STORE_SEPARATOR_SYMBOL}\n" >> $SHOPSITE_DIRECTORY/$SHOPSITE_STORE_ID.aa
printf "currency: ${STORE_CURRENCY}|\n" \
       >> $SHOPSITE_DIRECTORY/$SHOPSITE_STORE_ID.aa
printf "altcurrency: ||||\n" \
       >> $SHOPSITE_DIRECTORY/$SHOPSITE_STORE_ID.aa
printf "MerchantLocale: ${MERCHANT_LOCALE}|\n" \
       >> $SHOPSITE_DIRECTORY/$SHOPSITE_STORE_ID.aa
printf "BuyerLocale: ${BUYER_LOCALE}|\n" \
       >> $SHOPSITE_DIRECTORY/$SHOPSITE_STORE_ID.aa
printf "image_dir: ${SHOPSITE_IMAGE_DIR}\n" \
       >> $SHOPSITE_DIRECTORY/$SHOPSITE_STORE_ID.aa
printf "image_url: ${SHOPSITE_IMAGE_URL}\n" \
       >> $SHOPSITE_DIRECTORY/$SHOPSITE_STORE_ID.aa
printf "image_url_secure: ${SECURE_SHOPSITE_IMAGE_URL}\n" \
       >> $SHOPSITE_DIRECTORY/$SHOPSITE_STORE_ID.aa
#  Create links to [SHOPSITE_STORE_ID].aa in the shopping cart directory.
print_debug "link_file $SHOPSITE_DIRECTORY/$SHOPSITE_STORE_ID.aa $SHOPPING_CART_DIRECTORY/$SHOPSITE_STORE_ID.aa"
link_file $SHOPSITE_DIRECTORY/$SHOPSITE_STORE_ID.aa $SHOPPING_CART_DIRECTORY/$SHOPSITE_STORE_ID.aa

##   Install a language pack.
if (./wwwinstall.cgi "-action" "installLangScriptFile" "-store_id" "$SHOPSITE_STORE_ID" "-shopSiteDirectory" "$SHOPSITE_DIRECTORY" "-shoppingCartDirectory" "$SHOPPING_CART_DIRECTORY" "-shopsite_image_dir" "$SHOPSITE_IMAGE_DIR" "-shopsite_\
image_url" "$SHOPSITE_IMAGE_URL" "-pathToTar" "$PATH_TO_TAR" "-type" "$MALL_TYPE" "-backup" "$BACKUP_ON_UPDATE" "-locale" "$BUYER_LOCALE")
then
    print_debug "Not able to install a language pack:"
    print_debug "FAILED: ./wwwinstall.cgi"
    ERROR=`./error_handler.ksh $FATAL_ERROR`
    printf "ERROR: $ERROR\n"
    exit 1
fi

##  Set permissions and ownership on all ShopSite store files.
if ! (./file_settings_store_sc.ksh "$SHOPSITE_DIRECTORY" "$SHOPSITE_STORE_ID" "$DATA_DIRECTORY" "$HTML_DIRECTORY" "$SELLER_USER_ID" "$SELLER_GROUP_ID" "$UNIX_WEB_USER_ID" "$UNIX_WEB_GROUP_ID" "$DEBUG_LOG_DIRECTORY" "$DEBUG_LOG_FILE" "$LOG_DEBUG")
then
    print_debug "Aborting installation:"
    print_debug "FAILED: ./file_settings_store_sc.ksh"
    ERROR=`./error_handler.ksh $FATAL_ERROR`
    printf "ERROR: $ERROR\n"
    exit 1
fi

exit 0
