#!/bin/bash
## Begin Script
clear
echo "Welcome to the VuFind Setup Script."
echo "This will setup the MySQL Database as well as the necessary system libraries"
echo ""


## Setup paths for vufind.sh file
CURRPATH=`pwd`
DEFAULT_VUFIND='  VUFIND_HOME="/usr/local/vufind"'
VUFIND="  VUFIND_HOME=\"$CURRPATH\""
sed -e "s!${DEFAULT_VUFIND}!${VUFIND}!" vufind.sh > vufind.new
mv vufind.new vufind.sh


## MySQL Database Setup
echo "The first step is to install the MySQL Database."
echo ""


## Prompt for Database values
read -p "New Database Name [vufind]: " MYSQLDB
read -p "New Database User [vufind]: " MYSQLNEWUSER
read -p "New User Password: " -s MYSQLNEWPASS
echo ""
read -p "MySQL Host [localhost]: " MYSQLHOST
read -p "MySQL Root User [root]: " MYSQLUSER
read -p "MySQL Root Password: " -s MYSQLPASS
echo ""


## Set Defaults if selected
if [ -z $MYSQLDB ]; then
     MYSQLDB=vufind
fi
if [ -z $MYSQLNEWUSER ]; then
    MYSQLNEWUSER=vufind
fi
if [ -z $MYSQLHOST ]; then
    MYSQLHOST=localhost
fi
if [ -z $MYSQLUSER ]; then
    MYSQLUSER=root
fi


## Process creating mysql user and database
mysqladmin -h $MYSQLHOST -u $MYSQLUSER -p$MYSQLPASS create $MYSQLDB
mysql -h $MYSQLHOST -u $MYSQLUSER -p$MYSQLPASS -e "GRANT SELECT,INSERT,UPDATE,DELETE ON $MYSQLDB.* TO '$MYSQLNEWUSER'@'$MYSQLHOST' IDENTIFIED BY '$MYSQLNEWPASS' WITH GRANT OPTION"
mysql -h $MYSQLHOST -u $MYSQLUSER -p$MYSQLPASS -e "FLUSH PRIVILEGES"
mysql -h $MYSQLHOST -u $MYSQLUSER -p$MYSQLPASS -D $MYSQLDB < mysql.sql


## Edit web/conf/config.ini
if [ -z $MYSQLNEWPASS ]; then
  sed -e "s!mysql://root@localhost/vufind!mysql://${MYSQLNEWUSER}@${MYSQLHOST}/${MYSQLDB}!" web/conf/config.ini > web/conf/config.ini.new
else
  sed -e "s!mysql://root@localhost/vufind!mysql://${MYSQLNEWUSER}:${MYSQLNEWPASS//&/\\&}@${MYSQLHOST}/${MYSQLDB}!" web/conf/config.ini > web/conf/config.ini.new
fi
mv web/conf/config.ini.new web/conf/config.ini

## Rename the vufind.ini file to match the database name
if [ $MYSQLDB != "vufind" ]; then
  mv web/conf/vufind.ini web/conf/$MYSQLDB.ini
fi

echo "The MySQL Database has now been created."
echo ""
echo "Now installing the System Libraries ..."


## Install PEAR Packages
pear upgrade pear
pear install --onlyreqdeps DB
pear install --onlyreqdeps DB_DataObject
pear install --onlyreqdeps Structures_DataGrid-beta
pear install --onlyreqdeps Structures_DataGrid_DataSource_DataObject-beta
pear install --onlyreqdeps Structures_DataGrid_DataSource_Array-beta
pear install --onlyreqdeps Structures_DataGrid_Renderer_HTMLTable-beta
pear install --onlyreqdeps HTTP_Client
pear install --onlyreqdeps HTTP_Request
pear install --onlyreqdeps Log
pear install --onlyreqdeps Mail
pear install --onlyreqdeps Mail_Mime
pear install --onlyreqdeps Net_SMTP
pear install --onlyreqdeps Pager
pear install --onlyreqdeps XML_Serializer-beta
pear install --onlyreqdeps Console_ProgressBar-beta
pear install --onlyreqdeps File_Marc-alpha
pear channel-discover pear.horde.org
pear channel-update pear.horde.org
pear install Horde/Horde_Yaml-beta


# Install Smarty into PHP Include Directory
PHPDIR=`pear config-get php_dir`
SMARTYDIR="$PHPDIR/Smarty"
SMARTYVER="2.6.26"
SMARTYFILE="Smarty-$SMARTYVER"

if [ ! -d $SMARTYDIR ]
then
    wget http://www.smarty.net/files/$SMARTYFILE.tar.gz -O $SMARTYFILE.tar.gz
    if [ ! -f $SMARTYFILE.tar.gz ]
    then
        echo "Unable to download Smarty templates (file=$SMARTYFILE.tar.gz)."
        exit 1
    fi
    tar -zxf $SMARTYFILE.tar.gz
    if [ "$?" -ne "0" ]
    then
        echo "Unable to extract archive $SMARTYFILE.tar.gz."
        rm $SMARTYFILE.tar.gz
        exit 1
    fi
    mkdir $SMARTYDIR
    mv $SMARTYFILE/libs/* $SMARTYDIR
    rm $SMARTYFILE.tar.gz
    rm -rf $SMARTYFILE
fi


echo "VuFind Setup is now Complete"
