#!/bin/bash
# Copyright (C) 2000-2016 Synology Inc. All rights reserved.

. "$(dirname "$0")/common"

PKGDEST="/var/packages/PHP5.6/target"
BACKUPDIR="/usr/local/etc/.php"
CONFD="$SYSCONFDIR/conf.d"
BUILT_IN_EXTENSIONS="
	ctype.so
	dom.so
	fileinfo.so
	json.so
	mbstring.so
	pdo.so
	session.so
	simplexml.so
	tokenizer.so
	xml.so
	xmlreader.so
	xmlwriter.so
	zlib.so
"
EXTENSIONS="
	bcmath.so
	bz2.so
	calendar.so
	curl.so
	dba.so
	exif.so
	ftp.so
	gd.so
	gettext.so
	gmp.so
	iconv.so
	imap.so
	intl.so
	ldap.so
	mcrypt.so
	mssql.so
	mysql.so
	mysqli.so
	openssl.so
	pdo_dblib.so
	pdo_mysql.so
	pdo_pgsql.so
	pdo_sqlite.so
	pgsql.so
	phar.so
	posix.so
	shmop.so
	soap.so
	sockets.so
	sqlite3.so
	sysvmsg.so
	sysvsem.so
	sysvshm.so
	wddx.so
	xmlrpc.so
	xsl.so
	zip.so
"

# Remove builtin extensions instruction from setting files.
RemoveExtensions() {
	local remove_argument="/\\("
	local is_first="yes"

	for ext in "$@"; do
		if [ "$is_first" = yes ]; then
			remove_argument="${remove_argument}${ext}"
			is_first=no
		else
			remove_argument="${remove_argument}\\|${ext}"
		fi
	done
	remove_argument="${remove_argument}\\)/d"

	sed -i "$remove_argument" "$CONFD/"*.ini
}

# Add extensions not exist in previous version
AddExtensions() {
	local ext_ini="/usr/local/etc/php56/conf.d/extensions.ini"
	for ext in $EXTENSIONS; do
		if ! grep -q "extension *= *$ext" "$ext_ini"; then
			echo "extension = $ext" >> "$ext_ini"
		fi
	done
}

# Migrate DSM5.2 PHP Settings to PHP5.6 Package
MigrateFromDSMBuiltin() {
	for d in conf.d fpm.d; do
		if [ -d "$BACKUPDIR/$d" ]; then
			/usr/bin/install -g root -o root -dm755 "$BACKUPDIR/$d" "$SYSCONFDIR/$d"
		fi
	done

	RemoveExtensions apcu.so $BUILT_IN_EXTENSIONS
	AddExtensions

	if ! [ -f "$CONFD/user-settings.ini" ] || grep -q "^apc.enabled = 1$" "$CONFD/user-settings.ini"; then
		for ext in apcu opcache; do
			/usr/bin/install -g root -o root -Dm644 "${PKGDEST}${CONFD}/${ext}.ini" "$CONFD/${ext}.ini"
		done

		/usr/bin/sed -i "/^\(apc.enabled\|opcache.enable\)/d" "$CONFD/user-settings.ini"
	fi
}

if [ ! -d "$SYSCONFDIR" ] && [ -d "$BACKUPDIR" ]; then
	/usr/bin/mkdir "$SYSCONFDIR"
	MigrateFromDSMBuiltin
	/usr/bin/rm -r "$BACKUPDIR"
fi
ENVIRONMENT_SETUP

exit 0
