#!/bin/sh

# gallery reconfigure script
# required parameters: 
# admin_fullname, admin_login, admin_passwd,
# admin_email, gallery_name, locale
#
# there are also some standard parameters, that must be specified:
# vhost_path - full path to vhost root directory
# domain_name - name of domain
# install_prefix - path of application inside vhost directory
# ssl_target_directory - true, if application is in httpsdocs

read_parameters()
{
var=`cat | awk '{
	eqpos=index($0, "=");
	if (eqpos>1) {
		var=substr($0, 1, eqpos-1);
		val=substr($0, eqpos+1);

		tmp="[\x5c\x5c]";
		tmp2="\x5c\x5c\x5c\x5c";
		gsub(tmp,tmp2,val);


		tmp2="\x5c\x5c\x5c\x22";
		gsub("\"",tmp2,val);
		print var "=\"" val "\"";
	};
}'`

eval $var

}

check_standard_parameters()
{
	if [ "X${vhost_path}" = "X" ]; then
		echo "reconfigure: no vhost_path parameter specified for application"
		exit 1
	fi
	if [ "X${domain_name}" = "X" ]; then
		echo "reconfigure: no domain_name parameter specified for application"
		exit 1
	fi
	if [ "X${install_prefix}" = "X" ]; then
		echo "reconfigure: no install_prefix parameter specified for application"
		exit 1
	fi
	if [ "X${ssl_target_directory}" = "X" ]; then
		echo "reconfigure: no ssl_target_directory parameter specified for application"
		exit 1
	fi
};

parse_standard_parameters()
{
	if [ "X${ssl_target_directory}" = "Xtrue" ]; then
		proto="https"
		documents_directory="httpsdocs"
	else
		# don't forget to fix it
		proto="http"
		documents_directory="httpdocs"
	fi
};

backup_original_config()
{
	if [ -f "${gallery_config}" ] ; then
		if [ ! -f "${gallery_config}.orig" ] ; then
			cp ${gallery_config} ${gallery_config}.orig
		fi
	fi
}

read_conf()
{	
	while read var val; do
		case "$var" in
			[A-Z]*) eval "$var"='"$val"';;
		esac; 
	done </etc/psa/psa.conf
}

generate_gallery_config()
{
	admin_email_size=`echo ${admin_email} | awk '{ print length($0) }'`
	admin_fullname_size=`echo ${admin_fullname} | awk '{ print length($0) }'`
	admin_login_size=`echo ${admin_login} | awk '{ print length($0) }'`
	rm -f ${gallery_path}/albums/.users/1069858368_1755202938
	echo 'O:12:"gallery_user":11:{s:7:"isAdmin";b:1;s:15:"canCreateAlbums";b:1;s:3:"uid";s:21:"1069858368_1755202938";s:15:"defaultLanguage";s:5:"'${locale}'";s:7:"version";i:5;s:8:"username";s:'${admin_login_size}':"'${admin_login}'";s:8:"password";s:36:"XXXX'${admin_hash}'";s:8:"fullname";s:'${admin_fullname_size}':"'${admin_fullname}'";s:5:"email";s:'${admin_email_size}':"'${admin_email}'";s:10:"lastAction";s:5:"login";s:14:"lastActionDate";i:1069884720;}' >> "${gallery_path}/albums/.users/1069858368_1755202938"
	chmod 0777 "${gallery_path}/albums/.users/1069858368_1755202938"
	# gallery's config
	if test -x /usr/local/psa/bin/pngtopnm; then
		prefix=/usr/local/psa
	elif test -x /usr/bin/pngtopnm; then
		prefix=/usr
	else
		echo " Could not find utilities prefix" >&2
		exit 1
	fi
	rm -f "${gallery_config}"
	echo -n '<?php
/* 
 * Protect against very old versions of 4.0 (like 4.0RC1) which  
 * does not implicitly create a new stdClass() when you use a variable 
 * like a class. 
 */ 
if (!isset($gallery)) { 
        $gallery = new stdClass(); 
}
if (!isset($gallery->app)) { 
        $gallery->app = new stdClass(); 
}

/* Version  */
$gallery->app->config_version = "79";

/* Features */
$gallery->app->feature["zip"] = 1;
$gallery->app->feature["rewrite"] = 0; // (missing <i>GALLERY_REWRITE_OK</i> -- it is optional)
$gallery->app->feature["mirror"] = 0; // (missing <i>mirrorSites</i> -- it is optional)

/* Constants */
$gallery->app->galleryTitle = "'${gallery_name}'"; //Album
$gallery->app->albumDir = "'${gallery_path}'/albums";
$gallery->app->tmpDir = "'${gallery_path}'/tmp";
$gallery->app->photoAlbumURL = "'${proto}://${domain_name}/${install_prefix}'";
$gallery->app->albumDirURL = "'${proto}://${domain_name}/${install_prefix}'/albums";
$gallery->app->movieThumbnail = "'${gallery_path}'/images/movie.thumb.jpg";
// optional <i>mirrorSites</i> missing
$gallery->app->graphics = "NetPBM";
$gallery->app->ImPath = "'$prefix'/bin";
$gallery->app->pnmDir = "'$prefix'/bin";
$gallery->app->pnmtojpeg = "pnmtojpeg";
// optional <i>ImPath</i> missing
$gallery->app->autorotate = "yes";
$gallery->app->jpegImageQuality = "90";
$gallery->app->showAlbumTree = "no";
$gallery->app->highlight_size = "200";
$gallery->app->showOwners = "no";
$gallery->app->albumsPerPage = "5";
$gallery->app->showSearchEngine = "yes";
$gallery->app->skinname = "pem";
$gallery->app->gallery_thumb_frame_style = "simple_book";
$gallery->app->zipinfo = "'$prefix'/bin/zipinfo";
$gallery->app->unzip = "'$prefix'/bin/unzip";
// optional <i>use_exif</i> missing
$gallery->app->cacheExif = "no";
$gallery->app->use_jpegtran = "'$prefix'/bin/jpegtran";
$gallery->app->default_language = "'${locale}'"; //en_US
$gallery->app->ML_mode = "0";
$gallery->app->available_lang[] = "en_US";
$gallery->app->show_flags = "no";
$gallery->app->dateString = "%x";
$gallery->app->dateTimeString = "%c";
$gallery->app->emailOn = "no";
// optional <i>adminEmail</i> missing
// optional <i>senderEmail</i> missing
$gallery->app->emailSubjPrefix = "[Gallery]";
// optional <i>emailGreeting</i> missing
$gallery->app->selfReg = "no";
$gallery->app->selfRegCreate = "no";
$gallery->app->multiple_create = "no";
// optional <i>email_notification</i> missing
$gallery->app->gallery_slideshow_type = "off";
$gallery->app->gallery_slideshow_length = "20";
$gallery->app->gallery_slideshow_loop = "yes";
$gallery->app->comments_indication = "photos";
$gallery->app->comments_indication_verbose = "no";
$gallery->app->comments_anonymous = "no";
$gallery->app->timeLimit = "30";
$gallery->app->debug = "no";
$gallery->app->use_flock = "yes";
$gallery->app->expectedExecStatus = "0";
$gallery->app->sessionVar = "gallery_session";
$gallery->app->userDir = "'"${gallery_path}/albums/.users"'";
$gallery->app->devMode = "no";
$gallery->app->adminCommentsEmail = "no";
$gallery->app->adminOtherChangesEmail = "no";
$gallery->app->maximumAlbumDepth = "50";

/* Defaults */
$gallery->app->default["bordercolor"] = "black";
$gallery->app->default["border"] = "1";
$gallery->app->default["font"] = "arial";
$gallery->app->default["cols"] = "3";
$gallery->app->default["rows"] = "3";
$gallery->app->default["thumb_size"] = "150";
$gallery->app->default["resize_size"] = "640";
$gallery->app->default["resize_file_size"] = "0";
$gallery->app->default["max_size"] = "off";
$gallery->app->default["max_file_size"] = "0";
$gallery->app->default["useOriginalFileNames"] = "yes";
$gallery->app->default["add_to_beginning"] = "no";
$gallery->app->default["fit_to_window"] = "no";
$gallery->app->default["use_fullOnly"] = "no";
$gallery->app->default["print_photos"]["shutterfly"]["donation"] = "yes";
$gallery->app->default["returnto"] = "yes";
$gallery->app->default["display_clicks"] = "yes";
$gallery->app->default["extra_fields"] = "Description";
$gallery->app->default["showDimensions"] = "no";
$gallery->app->default["item_owner_modify"] = "yes";
$gallery->app->default["item_owner_delete"] = "yes";
$gallery->app->default["item_owner_display"] = "no";
$gallery->app->default["voter_class"] = "Nobody";
$gallery->app->default["poll_type"] = "critique";
$gallery->app->default["poll_scale"] = "3";
$gallery->app->default["poll_hint"] = "Vote for this image";
$gallery->app->default["poll_show_results"] = "no";
$gallery->app->default["poll_num_results"] = "3";
$gallery->app->default["poll_orientation"] = "vertical";
$gallery->app->default["poll_nv_pairs"][0]["name"] = "Excellent";
$gallery->app->default["poll_nv_pairs"][0]["value"] = "5";
$gallery->app->default["poll_nv_pairs"][1]["name"] = "Very Good";
$gallery->app->default["poll_nv_pairs"][1]["value"] = "4";
$gallery->app->default["poll_nv_pairs"][2]["name"] = "Good";
$gallery->app->default["poll_nv_pairs"][2]["value"] = "3";
$gallery->app->default["poll_nv_pairs"][3]["name"] = "Average";
$gallery->app->default["poll_nv_pairs"][3]["value"] = "2";
$gallery->app->default["poll_nv_pairs"][4]["name"] = "Poor";
$gallery->app->default["poll_nv_pairs"][4]["value"] = "1";
$gallery->app->default["poll_nv_pairs"][5]["name"] = "";
$gallery->app->default["poll_nv_pairs"][5]["value"] = "";
$gallery->app->default["poll_nv_pairs"][6]["name"] = "";
$gallery->app->default["poll_nv_pairs"][6]["value"] = "";
$gallery->app->default["poll_nv_pairs"][7]["name"] = "";
$gallery->app->default["poll_nv_pairs"][7]["value"] = "";
$gallery->app->default["poll_nv_pairs"][8]["name"] = "";
$gallery->app->default["poll_nv_pairs"][8]["value"] = "";
$gallery->app->default["slideshow_type"] = "ordered";
$gallery->app->default["slideshow_recursive"] = "no";
$gallery->app->default["slideshow_loop"] = "yes";
$gallery->app->default["slideshow_length"] = "0";
$gallery->app->default["album_frame"] = "simple_book";
$gallery->app->default["thumb_frame"] = "solid";
$gallery->app->default["image_frame"] = "solid";
?>
' >> ${gallery_config}
chmod 0644 ${gallery_config}
}

read_parameters
read_conf

cd "$vhost_path"

# now we have full set of parameters, stored in variables

parse_standard_parameters
check_standard_parameters

gallery_path=${vhost_path}/${documents_directory}/${install_prefix}
gallery_config=${vhost_path}/${documents_directory}/${install_prefix}/config.php

backup_original_config
#create_dirs
generate_gallery_config
#cleanup

exit 0
