#!/bin/sh

set -eu

# PostfixAdmin install script.
# 1. Downloads 'composer.phar' to the current directory, if 'composer' is not found in your PATH
# 2. Runs 'php composer install' which should install required runtime libraries for Postfixadmin
# 3. Runs 'mkdir templates_c && chmod 777 templates_c'

PATH=/bin:/usr/bin:/usr/local/bin
export PATH

COMPOSER_URL=https://getcomposer.org/download/latest-stable/composer.phar

type php >/dev/null 2>&1 || { echo >&2 "I require php but it's not installed.  Aborting."; exit 1; }

cd "$(dirname "$0")"

# Check for $(pwd)/composer.phar

echo " * Checking for composer.phar "

if ! command -v composer >/dev/null 2>&1 ; then
    # not in path, try and fall back to a local version
    if [ ! -f composer.phar ]; then
        echo " * 'composer' not found in your path, will try to download from $COMPOSER_URL "

        # try and download it one way or another
        if [ -x /usr/bin/wget ]; then
            wget -q -O composer.phar $COMPOSER_URL
        else
            if [ -x /usr/bin/curl ]; then
                curl -o composer.phar $COMPOSER_URL
            else
                echo " ** Could not find wget or curl; please download $COMPOSER_URL to pwd" >/dev/stderr
                exit 1
            fi
        fi
    fi

    COMPOSER="$(pwd)/composer.phar"

    # not sure if we can actually get here, wget/curl failing should kill the script due to 'set -e'
    if [ ! -f "${COMPOSER}" ]; then
        echo "Failed to download composer, download $COMPOSER_URL manually into this directory." > /dev/stderr
        exit 1
    fi

else
    COMPOSER="$(command -v composer)"
fi

echo " * checking for PHP database support ... "
found=0
for ext in pdo_mysql pdo_sqlite PDO pdo_pgsql
do
    if php -m | grep -q $ext 
    then
        found=$(( found + 1 ))
    fi
done

if [ $found -lt 2 ]; then
    # we need at least PDO and one of the specific drivers.
    echo " * Failed to check you have the necessary PHP database libraries installed. "
    echo " * You are probably missing some of these PHP extensions: PDO, pdo-mysql, pdo-sqlite or pdo-pgsql"
    exit 1
fi

echo " * Using composer ( $COMPOSER )"
echo " * Installing libraries ( composer install --no-dev ... )"

php "${COMPOSER}" install --prefer-dist -n --no-dev --ignore-platform-req=ext-mysqli --ignore-platform-req=ext-sqlite3

if [ ! -d templates_c ]; then

    mkdir -p templates_c && chmod 777 templates_c

    echo ""
    echo " Warning: "
    echo "   templates_c directory didn't exist, now created."
    echo ""
    echo "   You should change the ownership and reduce permissions on templates_c to 750. "
    echo "   The ownership needs to match the user used to execute PHP scripts, perhaps 'www-data' or 'httpd'"
    echo ""
    echo "   e.g. chown www-data templates_c && chmod 750 templates_c"
    echo ""
fi
echo ""
echo "Please continue configuration / setup within your web browser. "
echo "See also : https://github.com/postfixadmin/postfixadmin/blob/master/INSTALL.TXT#L58 "
echo ""
