#!/usr/bin/perl
use CGI qw (:standard);
use CGI::Carp qw(fatalsToBrowser);
$script_name = "trans.cgi"; # This script name
$max_rows_returned = "25"; # Max number of rows displayed per page
$use_external_html = "yes"; # Set to "yes" to use your own html template
############## Global Viariables ##################
$q = new CGI;
$sort = $q->param('sort_on');
$heading = $q->param('h');
$head = $q->param('head');
$gamesplayed = $q->param('gp');
$min = $q->param('m');
$posi = $q->param('posi');
if($q->param('head') eq "o" && $heading eq "3"){
$external_html_header = "../o/gohead.go";
$external_html_footer = "../o/gofoot.go";
$database = "otran.txt";
}
if($q->param('head') eq "m" && $heading eq "3"){
$external_html_header = "../m/gohead.go";
$external_html_footer = "../m/gofoot.go";
$database = "mtran.txt";
}
if($q->param('h') eq "1"){
$database = "otran.txt";
}
if($q->param('h') eq "2"){
$database = "mtran.txt";
}
$search1 = $q->param('search_for');
$search_field = $q->param('search_field');
$display = columns;
$search_field = "all" if($search_field eq "");
$search1 = '.' if ($search1 eq "");
if($q->param('view') ne ""){
$view = $q->param('which_search');
}
################# Main Logic ##################
if($q->param('db_search') ne "" || $view eq "search"){ $choose="search"; &search_db($search1); $title="Search Results"; &search_results;}
exit;
############## Results Screen ################
sub search_results{
&html_header($title);
$rows_left_to_view = $total_row_count - $new_hits_seen;
$start_hit = $hits_seen + 1;
$end_hit = $new_hits_seen;
$hits_displayed = $end_hit - $start_hit + 1;
if ($total_row_count > 1) {
print qq~\n~;
if ($total_row_count > $max_rows_returned) {
} #end if
} #end if ... > 1
else { print qq~\n~; }
if($display =~/columns/i) {
print "<font class='ar3'><b>League Transactions</font><br>";
if($heading eq "3"){
print "<a href=../c/trans.cgi?search_for=&search_field=&sort_on=&head=$head&db_search=Search><font class='ar1'>All</a> -
<a href=../c/trans.cgi?search_for=sign&search_field=3&sort_on=&head=$head&h=$heading&db_search=Search><font class='ar1'>Signed</a> -
<a href=../c/trans.cgi?search_for=release&search_field=3&sort_on=&head=$head&h=$heading&db_search=Search><font class='ar1'>Released</a> -
<a href=../c/trans.cgi?search_for=sent&search_field=3&sort_on=&head=$head&h=$heading&db_search=Search><font class='ar1'>Sent to Minors</a> -
<a href=../c/trans.cgi?search_for=recall&search_field=3&sort_on=&head=$head&h=$heading&db_search=Search><font class='ar1'>Recalled from Minors</a> -
<a href=../c/trans.cgi?search_for=trade&search_field=3&sort_on=&head=$head&h=$heading&db_search=Search><font class='ar1'>Trades</a><br><br>";
}
print<<HTML;
</FONT>
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 width='100%'>
<TR>
HTML
print "<TD class='c' nowrap><FONT class='aR1'><B>Date</FONT></TD>\n";
print "<TD nowrap><FONT class='aR1'><B>Player</FONT></TD>\n";
print "<TD nowrap><FONT class='aR1'><B>Transaction</FONT></TD>\n";
if($heading < "0"){
print "<TD nowrap><FONT class='aR1'><B>Team</FONT></TD>\n";
}
}
print "</TR>";
foreach $record (@results){
($teamid,$date,$player,$action,$team,) = split(/|/, $record);
{
print "<tr>\n";
print "<TD class='c' nowrap valign='top'><FONT class='a1'>$date</FONT></TD>\n";
print "<TD nowrap valign='top'><FONT class='a1'>$player</FONT></TD>\n";
print "<TD nowrap valign='top'><FONT class='a1'>$action</FONT></TD>\n";
if($heading eq "3"){
print "<TD nowrap valign='top'><FONT class='a1'>$team</FONT></TD>\n";
}
print "</TR> ";
}
} # End of foreach loop.
print<<HTML;
</TR></TABLE>
HTML
if ($rows_left_to_view > 0 && $show ne "no") {
print "<P><INPUT TYPE=\"hidden\" NAME=\"new_hits_seen\" VALUE=\"$new_hits_seen\">\n";
print "<INPUT TYPE=\"hidden\" NAME=\"which_search\" VALUE=\"$choose\">\n";
if ($rows_left_to_view > $max_rows_returned) {
print "<INPUT TYPE=\"submit\" NAME=\"view\" VALUE=\"View More \">\n"; }
elsif ($rows_left_to_view == 1){
print "<INPUT TYPE=\"submit\" NAME=\"view\" VALUE=\"View Last Record\">\n"; }
elsif ($rows_left_to_view <= $max_rows_returned){
print "<INPUT TYPE=\"submit\" NAME=\"view\" VALUE=\"View Last $rows_left_to_view \">\n"; }
}
print<<HTML;
<INPUT TYPE="hidden" NAME="head" VALUE="$head">
<INPUT TYPE="hidden" NAME="h" VALUE="$heading">
<INPUT TYPE="hidden" NAME="sort_on" VALUE="$sort">
<INPUT TYPE="hidden" NAME="display" VALUE="$display">
<INPUT TYPE="hidden" NAME="search_for" VALUE="$search1">
<INPUT TYPE="hidden" NAME="search_field" VALUE="$search_field">
<p>
HTML
&html_footer;
}
########### Search & Sort Database #############
sub search_db{
my $search1 = $[0];
unless (-e $database){ open (DB, ">$database") || die "Error creating database. $!\n"; }
else { open (DB, "$database") || die "Error opening database. $!\n"; }
while(<DB>){
if($choose ne "search") {
(@field_vals) = split(/|/, $);
} else {
if($search_field =~ /all/i){
if(/$search1/oi){ push @results, $};
} else {
(@field_vals) = split(/|/, $);
if($field_vals[$search_field] =~ /$search1/oi){ push @results, $_};
}
} #End of if choose
} # End of while.
close (D😎;
foreach $row (@results)
{
@row = split (/|/, $row);
$sortable_field = $row[$sort];
unshift (@row, $sortable_field);
$new_row = join ("|", @row);
push (@new_rows, $new_row);
}
@results = ();
@sorted_rows = reverse sort { $a <=> $b } (@new_rows);
foreach $sorted_row (@sorted_rows)
{
@row = split (/|/, $sorted_row);
$sorted_field = shift (@row);
$old_but_sorted_row = join ("|", @row);
push (@results, $old_but_sorted_row);
}
$count = @results;
$total_row_count = @results;
if ($total_row_count > $max_rows_returned) {
$hits_seen = $q->param(new_hits_seen);
for ($i = 1; $i <= $hits_seen; $i++) { $seen_row = shift (@results); }
$length_of_database_rows = @results;
for ($i = $length_of_database_rows-1; $i >= $max_rows_returned; $i--) { $extra_row = pop (@results); }
$new_hits_seen = $hits_seen + @results; } else { $show="no"; }
} # End of search_db subroutine.
############## Form Header #################
sub form_header {
print<<HTML;
<FORM METHOD="post" ACTION="$script_name">
HTML
}
############## HTML Header #################
sub html_header{
if($set_cookie eq "") { print $q->header; }
$set_cookie = "";
if($use_external_html eq "yes") {
%external_variables = (title=>$title, message=>$message,);
print html_template("$external_html_header", \%external_variables);
&form_header;
}
}
############## HTML Footer #################
sub html_footer{
if($use_external_html eq "yes") {
%external_variables = (title=>$title, message=>$message,);
print html_template("$external_html_footer", \%external_variables);
print "";
}
}
############# Use External HTML #############
sub html_template {
my ($filename, $fillings) = @_;
my $text;
local $/;
local F;
open (F, "< $filename\0") || return;
$text = <F>;
close (F);
$text =~ s{%%( .? )%%}
{exists($fillings->{$1})
?$fillings->{$1}
: ""
}gsex;
return $text;
}