#!/bin/sh

PACKAGE_NAME=$SYNOPKG_PKGNAME
PACKAGE_DEST=$SYNOPKG_PKGDEST
PKG_STATUS=$SYNOPKG_PKG_STATUS
PACKAGE_DIR="/var/packages/PhotoStation"
PHOTO_APACHE_CONF="SYNO.SDS.PhotoStation.conf"
SITES_ENABLED_USER_DIR="/usr/syno/etc/sites-enabled-user"
PACKAGE_CONFIG_MIGRATE_SH="/usr/syno/bin/package_config_migrate.sh"
SYNO_SERVICE_TOOL="/usr/syno/sbin/synoservice"
SYNO_INFO="/etc/synoinfo.conf"
SYNO_DEF_INFO="/etc.defaults/synoinfo.conf"

MOVE_KEYS="runpersonalphotostation albumdefpublic photo_hide_icon external_port_photo_https external_port_photo_http"
DELETE_KEYS="supportphoto supportphotopersonal runphoto"
COPY_KEYS="external_host_ip"

upgrade_config()
{
	mkdir -p "$PACKAGE_DIR"/etc/
	if [ ! -f "$PACKAGE_DIR/etc/settings.conf" ]; then
		cp -rf "${PACKAGE_DEST}"/etc/settings.conf "$PACKAGE_DIR"/etc
		chmod 755 "$PACKAGE_DIR"/etc/settings.conf

		#copy keys
		for key in $COPY_KEYS; do
			srckeyvalue=`grep ${key}= /etc/synoinfo.conf`
			deskeyvalue=`grep ${key}= "$PACKAGE_DIR/etc/settings.conf"`
			if [ -n $srckeyvalue -a -z $deskeyvalue ]; then
				echo $srckeyvalue >> "$PACKAGE_DIR/etc/settings.conf"
			fi
		done

		#move keys
		$PACKAGE_CONFIG_MIGRATE_SH move "$SYNO_INFO" "$PACKAGE_DIR/etc/settings.conf" "$MOVE_KEYS"

		#remove support keys
		$PACKAGE_CONFIG_MIGRATE_SH del "$SYNO_INFO" "$DELETE_KEYS"
		$PACKAGE_CONFIG_MIGRATE_SH del "$SYNO_DEF_INFO" "$DELETE_KEYS"
	fi

	HideIcon=`/bin/get_key_value $PACKAGE_DIR/etc/settings.conf photo_hide_icon`
	if [ "$HideIcon" == "yes" ]; then
		sed -i "s,\"allUsers\":\(.*\)\,\"title,\"allUsers\":false\,\"title,g" $PACKAGE_DIR/target/ui/config
	fi
}

run_merge_script()
{
	PHOTO_SCRIPT_DIR="$PACKAGE_DIR/target/photo_scripts"

	GeoTagMerged=`/usr/syno/bin/synogetkeyvalue $PACKAGE_DIR/etc/settings.conf geo_tag_merged`
	/bin/sed -i $PACKAGE_DIR/etc/settings.conf -e "/geo_tag_merged=.*/d"
	if [ "$GeoTagMerged" != "yes" ]; then
		GeoTagMerged="no"
	fi
	/usr/syno/bin/php $PHOTO_SCRIPT_DIR/merge_geotag.php --legacy_key $GeoTagMerged & > /dev/null 2>&1

	PeopleTagMerged=`/usr/syno/bin/synogetkeyvalue $PACKAGE_DIR/etc/settings.conf ms_people_tag_merged`
	/bin/sed -i $PACKAGE_DIR/etc/settings.conf -e "/ms_people_tag_merged=.*/d"
	if [ "$PeopleTagMerged" != "yes" ]; then
		PeopleTagMerged="no"
	fi
	/usr/syno/bin/php $PHOTO_SCRIPT_DIR/merge_metadata_db.php --legacy_key $PeopleTagMerged & > /dev/null 2>&1

	MigrateRecently=`/usr/syno/bin/synogetkeyvalue $PACKAGE_DIR/etc/settings.conf migrate_recently_add_comment`
	/bin/sed -i $PACKAGE_DIR/etc/settings.conf -e "/migrate_recently_add_comment=.*/d"
	if [ "$MigrateRecently" != "yes" ]; then
		MigrateRecently="no"
	fi
	/usr/syno/bin/php -d open_basedir= $PHOTO_SCRIPT_DIR/migrate_recently_add_comment_to_smart.php --legacy_key $MigrateRecently & > /dev/null 2>&1
}

run_set_root_order_script()
{
	PHOTO_SCRIPT_DIR="$PACKAGE_DIR/target/photo_scripts"

	/usr/syno/bin/php $PHOTO_SCRIPT_DIR/set_root_album_order.php & > /dev/null 2>&1
}

signal_hup_httpd_user()
{
	local pid=`cat /var/run/httpd-user.pid 2>/dev/null`
	if [ -n $pid ]; then
		kill -HUP $pid
	fi
}

insert_apache_config()
{
	if [ -d $SITES_ENABLED_USER_DIR ]; then
		cp -f $PACKAGE_DIR"/target/etc/"$PHOTO_APACHE_CONF $SITES_ENABLED_USER_DIR
	fi
}

upgrade_config
insert_apache_config

#check_and_update_db_recover
$PACKAGE_DIR/target/photo_scripts/sql.sh

# prepare index config file
INDEX_PACKAGE_PATH=/usr/syno/etc/synoindex/packages/${PACKAGE_NAME}
if [ ! -d ${INDEX_PACKAGE_PATH} ]; then
	mkdir -p ${INDEX_PACKAGE_PATH}
fi

#Stop related daemons
/usr/syno/etc.defaults/rc.d/S66synoindexd.sh stop
/usr/syno/etc.defaults/rc.d/S77synomkthumbd.sh stop
/usr/syno/etc.defaults/rc.d/S88synomkflvd.sh stop

#Install INFO and shared libraries
cp -rf ${PACKAGE_DEST}/etc/index/INFO ${INDEX_PACKAGE_PATH}/
ln -sf ${PACKAGE_DEST}/etc/index/libphotoindex.so ${INDEX_PACKAGE_PATH}/

#Start related daemons
/usr/syno/etc.defaults/rc.d/S66synoindexd.sh restart
/usr/syno/etc.defaults/rc.d/S77synomkthumbd.sh restart
/usr/syno/etc.defaults/rc.d/S88synomkflvd.sh restart

#After PhotoStation installed, reindex photo
if [ "INSTALL" == "$PKG_STATUS" ]; then
    /usr/syno/bin/synoindex -R photo > /dev/null 2>&1
fi

run_merge_script
run_set_root_order_script

exit 0
