#!/bin/bash


. /etc/groovix/gxprintconfirm-gui.conf

# available variables
#
#      TEAPRINTERNAME : The print queue name.
#      TEADIRECTORY : gxPageCount output directory.
#      TEADATAFILE : Full name of work file (in $TEADIRECTORY).
#      TEAJOBSIZE : Job's size in bytes.
#      TEAMD5SUM : MD5 sum of the job's datas.
#      TEACLIENTHOST : Client's hostname or IP address.
#      TEAJOBID : Job's Id.
#      TEAUSERNAME : Name of the user who launched the print job.
#      TEATITLE : Job's title.
#      TEACOPIES : Number of copies requested.
#      TEAOPTIONS : Options of the print job.
#      TEAINPUTFILE : Job's data file or empty when job read from stdin.
#      TEABILLING : Job's billing code (lp -o job-billing=SomeCode file.ps)
#      TEACONTROLFILE : Job's IPP message file (usually /var/spool/cups/c?????)

#      GXCOSTPP : cost per page for this printer


#use environment variables intead of command line args for easy customization later

#for counting with zjs and other problematic drivers
if [ "$USESPOOLFILE" = "true" ] ; then
	MYDATAFILE=$TEASPOOLFILE
else
	MYDATAFILE=$TEADATAFILE
fi

MYUSERNAME=$TEAUSERNAME
MYPRINTERNAME=$TEAPRINTERNAME
MYCOSTPP=$GXCOSTPP

if [ "$USECOPYCOUNT" = "true" ] ; then
	MYCOPIES=$TEACOPIES
else
	MYCOPIES=1
fi

LOGFILE=/var/log/groovix/gxprintconfirm-gui.log


myrun() {
echo running $0 $1 $2 $3 at `date`
env


#now started in cups backend so it appears ASAP
#groovix-pcpi &

MYPAGECOUNT=`pkpgcounter $MYDATAFILE`

# cups now does not includes copy multiplier in file - but it is in cups data
MYPAGECOUNT=`echo $MYPAGECOUNT*$MYCOPIES | bc`

echo MYPAGECOUNT is $MYPAGECOUNT
echo MYDATAFILE is $MYDATAFILE

#get rid of "counting pages" box
#need to keep exec name < 15 characters to ensure killall always works
killall -9 groovix-pcpi
#--auto-close makes this unnecessary
#killall groovix-pcpi-zenity

if [ -n "$MYCOSTPP" ] ; then
	MYCOST=`echo $MYCOSTPP*$MYPAGECOUNT | bc` 
else 
	MYCOST=
fi
MYCOSTFORMATTED=`printf '%2.2f' $MYCOST`


#export HOME=/root
#export DISPLAY=:0;
#xauth merge /var/lib/gdm/\:0.Xauth

if [ "$MYPAGECOUNT" == 1 ] ; then
	MYPAGEWORD="page"
else
	MYPAGEWORD="pages"
fi

echo MESSAGETITLE IS $MESSAGETITLE
echo MESSAGETEXT IS $MESSAGETEXT
#do an eval so that messages can have variables in them
eval "ZENMESSAGE=\"$MESSAGETEXT\""
eval "ZENTITLE=\"$MESSAGETITLE\""
echo ZENMESSAGE IS $ZENMESSAGE
echo ZENTITLE IS $ZENTITLE

who | awk '{ print $1 }' | egrep "^$MYUSERNAME\$"
LOGGEDIN=$?
echo LOGGEDIN is $LOGGEDIN
#if they are no longer logged in then don't pop up a dialog


if [ -n "$MAXPAGECOUNT" ] && [ "$MYPAGECOUNT" -gt "$MAXPAGECOUNT" ] ; then
        echo MYPAGECOUNT $MYPAGECOUNT exceeded MAXPAGECOUNT $MAXPAGECOUNT
	if [ -z "$MAXPAGETEXT" ] ; then
		ZENMAXPAGETEXT="The current print job is greater than our $MAXPAGECOUNT page limit and has been cancelled, please submit print jobs of $MAXPAGECOUNT pages or less.\n\nSee library staff if you need assistance on how to divide up your large print job."
	else
		#do an eval so that messages can have variables in them
		eval "ZENMAXPAGETEXT=\"$MAXPAGETEXT\""
	fi
	
	if [ -z "$MAXPAGETITLE" ] ; then
		ZENMAXPAGETITLE="Print job page limit exceeded"
	else
		#do an eval so that messages can have variables in them
		eval "ZENMAXPAGETITLE=\"$MAXPAGETITLE\""
	fi
	
	if [ $LOGGEDIN -eq 0 ] ; then
       		groovix-root-run-in-display zenity --width=400  --info --title "$ZENMAXPAGETITLE"  --text "$ZENMAXPAGETEXT"
	fi
       	ZRC=13
else
	if [ $LOGGEDIN -eq 0 ] ; then
		#force focus so people don't miss it
		(sleep 1 && groovix-root-run-in-display wmctrl -F -a "$ZENTITLE" -b add,above ) &
		groovix-root-run-in-display zenity --width=400  --no-wrap --question --title "$ZENTITLE" --text "$ZENMESSAGE"

       		ZRC=$?
	else
		ZRC=0
	fi
       	echo ZRC IS $ZRC in function
fi
return $ZRC
}


myrun  >> $LOGFILE  2>&1
MYRC=$?

echo return code is $MYRC  >> $LOGFILE  2>&1


if [ "$MYRC" -eq 0 ] ; then
        exit 0
else
        exit -1
fi


