. /usr/syno/bin/jsoncmd

PKG_LAN_DIR="$SYNOPKG_PKGDEST/photo/language"
SYNOPHOTO_SETTING_CONFIG="${SYNOPKG_PKGPATH}/etc/settings.conf"

PHOTO_SHARE="/var/services/photo"
BLOG_NAME="blog"
CONFIG_NAME="settings.conf"
SMART_ALBUM="SYNOPHOTO_SMART_ALBUM_CONFIG"
MUSIC_CONFIG="SYNOPHOTO_MUSIC_CONFIG"
DB_NAME="photo"
BIN_PATH="/var/packages/PhotoStation/target/bin"
THEME_DIR_NAME="SYNOPHOTO_THEME_DIR"
SYNOPHOTO_THEME_DIR="${PHOTO_SHARE}/@eaDir/${THEME_DIR_NAME}"
WATERMARK_DIR_NAME="SYNOPHOTO_WATERMARK_DIR"
SYNOPHOTO_WATERMARK_DIR="${PHOTO_SHARE}/@eaDir/${WATERMARK_DIR_NAME}"


pkg_get_string() {
	local key=$1
	local file="${PKG_LAN_DIR}/${SYNOPKG_DSM_LANGUAGE}.php"
	if [ "${SYNOPKG_DSM_LANGUAGE}" == "" ]; then
		file="${PKG_LAN_DIR}/enu.php"
	fi
	grep $key $file | sed -n "s,^.*=\t'\(.*\)';,\1,p" | sed "s/\\\\'/'/g"
}

importPath=$(jget "${SYNOPKG_BKP_INPUT}" ".temp_path")
if [ $? -ne 0 ];then
	msg=$(pkg_get_string photo_str_backup_restore_failed)
	error=$(printf "%s(%s)" "${msg}" "0x02")
	jerr "$error"
	exit 1
fi

appver=$(jget "${SYNOPKG_BKP_INPUT}" ".app_data_version")

# support to restore old version backup files
if [ $appver == "0" ]; then
	${BIN_PATH}/synophoto_backup -r "${importPath}/@photo/" -o
	if [ $? -ne 0 ]; then
		error=$(pkg_get_string photo_str_restore_photo_failed)
		jerr "$error"
		exit 1
	fi
	if [ -e "${importPath}/@blog/synoblog_backup.dump" ]; then
		${BIN_PATH}/synoblog_backup -r "${importPath}/@blog/" -o
		if [ $? -ne 0 ]; then
			error=$(pkg_get_string photo_str_restore_photo_failed)
			jerr "$error"
			exit 1
		fi
	fi

	jdone
	exit 0
fi

# new restore framework

TMP_DB=$(jget "${SYNOPKG_BKP_INPUT}" ".external_handler_result[0].result[0].db_temp_name")
if [ $? -ne 0 ];then
	msg=$(pkg_get_string photo_str_backup_restore_failed)
	error=$(printf "%s(%s)" "${msg}" "0x03")
	jerr "$error"
	exit 1
fi

if [ ! -d ${SYNOPHOTO_THEME_DIR} ]; then
	msg=$(pkg_get_string photo_str_backup_restore_failed)
	error=$(printf "%s(%s)" "${msg}" "0x04")
	jerr "$error"
	exit 1
fi

# check eaDir
if [ ! -d "${PHOTO_SHARE}/@eaDir" ]; then
	mkdir "${PHOTO_SHARE}/@eaDir"
	chmod -R 0777 "${PHOTO_SHARE}/@eaDir"
fi

# copy smart album
if [ -e ${importPath}/${SMART_ALBUM} ];then
	/bin/cp -rf ${importPath}/${SMART_ALBUM} "${PHOTO_SHARE}/@eaDir/"
fi

# copy music
if [ -e ${importPath}/${MUSIC_CONFIG} ]; then
	/bin/cp -rf ${importPath}/${MUSIC_CONFIG} "${PHOTO_SHARE}/@eaDir/"

	for i in ${importPath}/*.mp3;
	do
		/bin/cp -rf $i "${PHOTO_SHARE}/@eaDir/"
	done
fi

# copy blog (old theme dir)
if [ -d ${importPath}/${BLOG_NAME} ];then
	#TODO: overwrite policy
	/bin/cp -rf ${importPath}/${BLOG_NAME}/* ${SYNOPHOTO_THEME_DIR}
	chown -R PhotoStation:PhotoStation ${SYNOPHOTO_THEME_DIR}
	find  ${SYNOPHOTO_THEME_DIR} -type d -exec chmod 0755 {} \;
	find  ${SYNOPHOTO_THEME_DIR} -type f -exec chmod 0644 {} \;
fi

# copy new theme dir
if [ -d ${importPath}/${THEME_DIR_NAME} ];then
	/bin/cp -rf ${importPath}/${THEME_DIR_NAME}/* ${SYNOPHOTO_THEME_DIR}
	chown -R PhotoStation:PhotoStation ${SYNOPHOTO_THEME_DIR}
	find  ${SYNOPHOTO_THEME_DIR} -type d -exec chmod 0755 {} \;
	find  ${SYNOPHOTO_THEME_DIR} -type f -exec chmod 0644 {} \;
fi

if [ -d ${importPath}/${WATERMARK_DIR_NAME} ];then
	/bin/cp -rf ${importPath}/${WATERMARK_DIR_NAME}/* ${SYNOPHOTO_WATERMARK_DIR}
	chown -R PhotoStation:PhotoStation ${SYNOPHOTO_WATERMARK_DIR}
	find  ${SYNOPHOTO_WATERMARK_DIR} -type d -exec chmod 0755 {} \;
	find  ${SYNOPHOTO_WATERMARK_DIR} -type f -exec chmod 0644 {} \;
fi

# copy settings
if [ -e ${importPath}/${CONFIG_NAME} ];then
	/bin/cp -f ${importPath}/${CONFIG_NAME} ${SYNOPHOTO_SETTING_CONFIG}
fi

# merge db
${BIN_PATH}/synophoto_backup -i "${importPath}/" -d "${TMP_DB}"
if [ $? -ne 0 ];then
	error=$(pkg_get_string photo_str_restore_photo_failed)
	jerr "$error"
	exit 1
fi

${BIN_PATH}/synoblog_backup -i "${importPath}/" -d "${TMP_DB}"
if [ $? -ne 0 ];then
	error=$(pkg_get_string photo_str_restore_blog_failed)
	jerr "$error"
	exit 1
fi

jdone
exit 0
