#! /bin/sh
cd `dirname $0`

MOD_EMAIL_ADDRESS=`grep POST_REPORT_EMAILS ../html/project/project.inc  | awk -F\" '{print $(NF-1);}'`


while true ; do

now=`date +%s`
msgfile=`mktemp -p /tmp setimods.XXXXXX` || exit 1
sec_from_hour=`expr $now % 3600`

dbhost=`grep db_host ../config.xml | tr '[\<\>]' '[  ]' | head -1 | awk '{print $2}'`
dbuser=`grep db_user ../config.xml | tr '[\<\>]' '[  ]' | head -1 | awk '{print $2}'`
dbname=`grep db_name ../config.xml | tr '[\<\>]' '[  ]' | head -1 | awk '{print $2}'`
MYSQL="mysql -D $dbname -h $dbhost -u $dbuser -N -B"

nmods=`$MYSQL --execute="select count(userid) from forum_preferences where special_user like '1%'"`
major=`expr $nmods / 2`

# send a report on ongoing elections.
if test $sec_from_hour -lt 300 ; then
   voteids=`$MYSQL --execute="select id from banishment_vote where end_time>"$now`
   if test -n "$voteids" ; then
     echo Ongoing votes >> $msgfile
     echo >> $msgfile
     for voteid in $voteids; do
       msgfile2=`mktemp -p /tmp setimods.XXXXXX` || exit 1
       echo >> $msgfile
       echo Vote: $voteid >> $msgfile
       ayes=`$MYSQL --execute="select sum(yes) from banishment_votes where voteid=$voteid"`
       nays=`$MYSQL --execute="select count(id)-sum(yes) from banishment_votes where voteid=$voteid"`
       userid=`$MYSQL --execute="select userid from banishment_vote where id=$voteid"`
       EMAIL=`$MYSQL --execute="select email_addr from user where id=$userid"`
       $MYSQL --execute="select name,' - ',userid from user,banishment_vote where banishment_vote.id=$voteid and user.id=userid" >> $msgfile2
       $MYSQL --execute="select 'Ayes: ',sum(yes),' Nays: ',count(id)-sum(yes) from banishment_votes where voteid=$voteid" >> $msgfile2
       $MYSQL --execute="select name,' - ',userid from user,banishment_vote where banishment_vote.id=$voteid and user.id=userid" >> $msgfile
       $MYSQL --execute="select 'Ayes: ',sum(yes),' Nays: ',count(id)-sum(yes) from banishment_votes where voteid=$voteid" >> $msgfile
       if test $nays -ge $major ; then
         echo Vote failed. >> $msgfile
         mail -s "Vote failed. You have not been banished"  $EMAIL < $msgfile2
         $MYSQL --execute="update forum_preferences set banished_until=0 where userid=$userid"
         $MYSQL --execute="update banishment_vote set end_time=start_time where id=$voteid"
       elif `test $ayes -gt $major` ; then
         echo Vote succeeded. >> $msgfile
         mail -s "Vote succeeded.  You have been banished"  $EMAIL < $msgfile2
         start_time=`$MYSQL --execute="select start_time from banishment_vote where id=$voteid"`
         $MYSQL --execute="update forum_preferences set banished_until=$start_time +1209600 where userid= $userid"
         $MYSQL --execute="update banishment_vote set end_time=start_time where id=$voteid"
       else
         $MYSQL --execute="select 'Ends in ',(end_time-$now)/3600,' hours' from banishment_vote where id=$voteid" >> $msgfile
       fi
       /bin/rm $msgfile2
     done
     mail -s "Ongoing Votes" $MOD_EMAIL_ADDRESS < $msgfile
   fi
fi
/bin/rm $msgfile

# handle recently ended elections
msgfile=`mktemp -p /tmp setimods.XXXXXX` || exit 1
voteids=`$MYSQL --execute="select id from banishment_vote where end_time<"$now" and end_time+300>"$now`
if test -n "$voteids" ; then
   echo Finished votes >> $msgfile
   echo >> $msgfile
   for voteid in $voteids; do
       msgfile2=`mktemp -p /tmp setimods.XXXXXX` || exit 1
       echo >> $msgfile
       echo Vote: $voteid >> $msgfile
       ayes=`$MYSQL --execute="select sum(yes) from banishment_votes where voteid=$voteid"`
       nays=`$MYSQL --execute="select count(id)-sum(yes) from banishment_votes where voteid=$voteid"`
       userid=`$MYSQL --execute="select userid from banishment_vote where id=$voteid"`
       EMAIL=`$MYSQL --execute="select email_addr from user where id=$userid"`
       $MYSQL --execute="select name,' - ',userid from user,banishment_vote where banishment_vote.id=$voteid and user.id=userid" >> $msgfile2
       $MYSQL --execute="select 'Ayes: ',sum(yes),' Nays: ',count(id)-sum(yes) from banishment_votes where voteid=$voteid" >> $msgfile2
       $MYSQL --execute="select name,' - ',userid from user,banishment_vote where banishment_vote.id=$voteid and user.id=userid" >> $msgfile
       $MYSQL --execute="select 'Ayes: ',sum(yes),' Nays: ',count(id)-sum(yes) from banishment_votes where voteid=$voteid" >> $msgfile
       nays=`expr $nays + 1`
       if test $ayes -gt $nays ; then
         echo Vote succeeded. >> $msgfile
         mail -s "Vote succeeded.  You have been banished"  $EMAIL < $msgfile2
         start_time=`$MYSQL --execute="select start_time from banishment_vote where id=$voteid"`
         $MYSQL --execute="update forum_preferences set banished_until=$start_time +1209600 where userid= $userid"
         $MYSQL --execute="update banishment_vote set end_time=start_time where id=$voteid"
       else
         echo Vote failed. >> $msgfile
         mail -s "Vote failed. You have not been banished"  $EMAIL < $msgfile2
         $MYSQL --execute="update forum_preferences set banished_until=0 where userid=$userid"
         $MYSQL --execute="update banishment_vote set end_time=start_time where id=$voteid"
       fi
       /bin/rm $msgfile2
   done
   mail -s "Completed Votes" $MOD_EMAIL_ADDRESS < $msgfile
fi
/bin/rm $msgfile

sleep 300
done
exit 0
