#!/usr/local/bin/perl --
#######################################################
# History
# Donation system - till.cgi
#
# 1/2/03 Igal finallized v1.0
#######################################################
use strict;
use lib '..';
use intraforum_setup;
require "configuration.pl";
use vars qw($forumID $dbC $contrib_database_name $server_host $contrib_database_username $contrib_database_password $absolute_server $bbs_script $program_directory);
require "var_sets.inc";
require "community_queries.inc";
#use the html-generated procedures
require "till_donation_line.htm";
require "till_donation_line_comm_upgr.htm";
require "till_donation_empty.htm";
use CGI;
use CGI::Carp qw(fatalsToBrowser carpout);
use Time::Local;
use DBI;
use DynaLoader;
#my $query = new CGI("forumid=5003");
my $query = new CGI;
$forumID = $query->param('forumid');
$forumID =~ s/^\w\-//; #legacy support
die "ForumID not specified!" if ($forumID eq "") ;
my $alias = $query->param('alias');
ConnectToDB();
ConnectToForumDB();
PrintHeader();
my $comID = GetCommByForum($forumID,0);
die "The forum $forumID is not associated with a community!" if ($comID eq "") ;
my $cash_needed = GetCashNeeded($comID) ;
my $donations_list = GetDonationsList($comID);
my $current_till = GetCurrentTill($comID);
my $next_upgrade_string = GetNextUpgradeString();
my $community_desc = GetCommDescription($comID);
my $till_html = ReadTill();
$till_html =~ s/\${forumID}/${forumID}/g;
$till_html =~ s/\${alias}/${alias}/g;
$till_html =~ s/\${cash_needed}/${cash_needed}/g;
$till_html =~ s/\${community_desc}/${community_desc}/g;
$till_html =~ s/\${donations_list}/${donations_list}/g;
$till_html =~ s/\${current_till}/${current_till}/g;
$till_html =~ s/\${next_upgrade_string}/${next_upgrade_string}/g;
$till_html =~ s/\${absolute_server}/${absolute_server}/g;
$till_html =~ s/\${bbs_script}/${bbs_script}/g;
$till_html =~ s/\${program_directory}/${program_directory}/g;
$till_html = ReplaceBodyByUserSettings($forumID,$till_html,$alias);
print $till_html;
#################################################################
# Add HTTP header
#################################################################
sub PrintHeader { print "Content-type: text/html; charset=iso-8859-8;\n\n"; }
#################################################################
# Build donations list
#################################################################
sub GetDonationsList
{
my ($comID) = @_;
my ($string_builder, $sth, $sth2);
$sth = $dbC->prepare_cached("
SELECT com_id,
display_name,
email,
display_email,
donation_date,
donation_amount,
got_the_money
FROM donors WHERE com_id like '".$comID."' AND got_the_money like 'YES' ORDER BY donation_date DESC" );
die "Error: $DBI::err .... $DBI::errstr" if $DBI::err;
$sth->execute();
die "Error: $DBI::err .... $DBI::errstr" if $DBI::err;
my @row1 = ();
my @donation_builder = ();
while (@row1 = $sth->fetchrow_array())
{
my $date = $row1[4];
#rearrange the date
$date =~ s/(\d{4})-(\d{2})-(\d{2})/$3-$2-$1/;
my $amount = reverse ( $row1[5] );
my $donor_text = $row1[1] ;
if (($donor_text =~ /^'\s.*?'$/)||($donor_text eq "")) { $donor_text = "אנונימי"; }
if ($row1[3] =~ /yes/i) { $donor_text = "$donor_text"; }
my $part_str = Get_till_donation_line($date ,$amount,$donor_text);
push(@donation_builder,$part_str);
}
warn "Data fetching terminated early by error: $DBI::errstr\n"
if $DBI::err;
$sth->finish;
##get the community history
$sth2 = $dbC->prepare_cached("
SELECT com_id,
upgrade_date,
free_desc
FROM community_upgrades_history WHERE com_id like '".$comID."'");
die "Error: $DBI::err .... $DBI::errstr" if $DBI::err;
$sth2->execute();
die "Error: $DBI::err .... $DBI::errstr" if $DBI::err;
my @row2 = ();
while (@row2 = $sth2->fetchrow_array())
{
my $date = $row2[1];
#rearrange the date
$date =~ s/(\d{4})-(\d{2})-(\d{2})/$3-$2-$1/;
my $donor_text = $row2[2];
my $part_str = Get_till_donation_line_comm_upgr($date,$donor_text);
push(@donation_builder,$part_str);
}
warn "Data fetching terminated early by error: $DBI::errstr\n"
if $DBI::err;
$sth2->finish;
my @row = sort ByTransactionDateCompare @donation_builder;
my $string_builder = join("
",@row);
if ($string_builder eq "") { $string_builder = Get_till_donation_empty(); }
return $string_builder;
}
sub ByTransactionDateCompare
{
my ($donA,$donB) = ($a,$b);
$donA =~ /(\d{2})-(\d{2})-(\d{4})/;
my $hour = 0;
my $minute = 0;
my $day = $1;
my $month = $2;
my $year = $3;
my $donASecondsFrom1900 = timelocal(1, $minute, $hour,$day,$month-1,$year - 1900);
$donB =~ /(\d{2})-(\d{2})-(\d{4})/;
my $hour = 0;
my $minute = 0;
my $day = $1;
my $month = $2;
my $year = $3;
my $donBSecondsFrom1900 = timelocal(1, $minute, $hour,$day,$month-1,$year - 1900);
($donBSecondsFrom1900 <=> $donASecondsFrom1900);
}
#################################################################
# Build next upgrade string
#################################################################
sub GetNextUpgradeString
{
}
#################################################################
# Source the generating file
#################################################################
sub ReadTill
{
open FILE,"till.html" || die "Couldn't open file: $!" ;
return join("",);
close FILE;
}