#!/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; }