#!/bin/bash

# Copyright: 2023 Virtuozzo International GmbH

# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at

# http://www.apache.org/licenses/LICENSE-2.0

# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

[ -n "${APACHEPHPENGINELIB_VERSION:-}" ] && return 0;
APACHEPHPENGINELIB_VERSION="0.1";

include php-common-engine ;

PHP_EXTENSIONS_DIR='/etc/php.ext';
APACHE2_MODULES_DIR='/etc/httpd/modules';
APACHE2_CONFIGS_DIR='/etc/httpd/conf.d/';
PHP_CONF='php.conf';
APACHE2_PHPMODULE='libphp5.so';
MAJOR_VERSION=5;
JELASTIC_PHP_MODULES_DIR='/usr/lib64/jelastic_php/httpd';
DEFAULT_PHP_EXTENSIONS_DIR='/usr/lib64/php';
JELASTIC_PHP_EXTENSIONS_DIR='/usr/lib64/jelastic_php';
PHP_CLI_BIN='/usr/bin/php';
JELASTIC_PHP_BIN_DIR='/usr/lib64/jelastic_php/bin';
$PROGRAM 'grep';

#  
#  name: switchEngine
#  $1 - engine to  switch on
#  
# TODO - refactor
function switchEngine(){
	local param=$1;
	local version;
	case $1 in
	"php5.3")
	    version=$(ls $JELASTIC_PHP_EXTENSIONS_DIR | $GREP -o '5\.3\.[0-9]*' | sort -r | head -n 1);
	;;
	"php5.4")
	    version=$(ls $JELASTIC_PHP_EXTENSIONS_DIR | $GREP -o '5\.4\.[0-9]*' | sort -r | head -n 1);
	;;
	"php5.5")
	    version=$(ls $JELASTIC_PHP_EXTENSIONS_DIR | $GREP -o '5\.5\.[0-9]*' | sort -r | head -n 1);
	;;
	"php5.6")
	    version=$(ls $JELASTIC_PHP_EXTENSIONS_DIR | $GREP -o '5\.6\.[0-9]*' | sort -r | head -n 1);
	;;
	"php7.0")
		version=$(ls $JELASTIC_PHP_EXTENSIONS_DIR | $GREP -o '7\.0\.[0-9]*' | sort -r | head -n 1);
		MAJOR_VERSION=7;
		APACHE2_PHPMODULE='libphp7.so';
	;;
	"php7.1")
		version=$(ls $JELASTIC_PHP_EXTENSIONS_DIR | $GREP -o '7\.1\.[0-9]*' | sort -r | head -n 1);
		MAJOR_VERSION=7;
		APACHE2_PHPMODULE='libphp7.so';
	;;
	*) 	 
	return 1
	esac
	if [[ -f "$JELASTIC_PHP_MODULES_DIR/libphp$version.so" ]]
	then
		rm -f $APACHE2_MODULES_DIR/$APACHE2_PHPMODULE;
		ln -s $JELASTIC_PHP_MODULES_DIR/libphp$version.so $APACHE2_MODULES_DIR/$APACHE2_PHPMODULE;
	else 
    	    echo "PHP with version $version is not installed" 1>&2;
    	    return 0;
	fi
	
	if [[ -d "$JELASTIC_PHP_EXTENSIONS_DIR/php$version/lib64/php/modules" ]]
        then
    	    rm -f $DEFAULT_PHP_EXTENSIONS_DIR/modules;
    	    ln -s $JELASTIC_PHP_EXTENSIONS_DIR/php$version/lib64/php/modules $DEFAULT_PHP_EXTENSIONS_DIR;
        else
	    echo "no PHP extensions are configured for PHP version $version" 1>&2
    	    return 0;
	fi
	$SED -i -e "s/php[[:digit:]]_module/php${MAJOR_VERSION}_module/g" -e "s/libphp[[:digit:]].so/libphp${MAJOR_VERSION}.so/g" \
	    -e "s/php[[:digit:]]-script/php${MAJOR_VERSION}-script/g" ${APACHE2_CONFIGS_DIR}/${PHP_CONF} ;
	
	if [[ -f "$JELASTIC_PHP_BIN_DIR/php.$version" ]]
	then
    	    rm -f $PHP_CLI_BIN;
    	    ln -s $JELASTIC_PHP_BIN_DIR/php.$version $PHP_CLI_BIN;
        else	
	    echo "PHP-CLI binary for PHP version $version is not installed" 1>&2;
    	    return 0;
	fi
	isFunction "phpExtensionsManagers" && {  "phpExtensionsManagers" ; }

}

