KGRKJGETMRETU895U-589TY5MIGM5JGB5SDFESFREWTGR54TY
Server : Apache/2.4.62
System : FreeBSD fbsdweb2.web.rcn.net 14.1-RELEASE FreeBSD 14.1-RELEASE releng/14.1-n267679-10e31f0946d8 GENERIC amd64
User : www ( 80)
PHP Version : 8.3.8
Disable Function : NONE
Directory :  /domains/mandarintools/cgi-bin/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /domains/mandarintools/cgi-bin/personality.pl
#!/usr/bin/perl 

require "cgi-lib.pl";


&ReadParse(*values);

# Load in current filled and available slots
open(GROUP, "personality.txt");
$line = <GROUP>;
chomp($line);
while ($line ne "") {
    if ($line =~ m/\#date (.+)$/) {
	$date = $1;
	$datecount = 0;
	push @datelist, $date;
	while ($line = <GROUP>) {
	    chomp($line);
	    if ($line =~ m/\#name (.+)/) {
		$name = $1;
		push @{$date}, $name;
		$datecount++;
	    } else {
		$datecount{$date} = $datecount;
		last;
	    }
	}
    }

}
close(GROUP);


sub printpage {
    my($error) = pop;

        print <<HEADER;
Content-type: text/html

<HTML>
<HEAD>
<TITLE>Psychology of Personality Sign-up Sheet</TITLE>
</HEAD>
<BODY>

<FONT COLOR=RED>$error</FONT><P><P>


<FORM METHOD=POST ACTION="http://www.mandarintools.com/cgi-bin/personality.pl">

<TABLE ALIGN=CENTER CELLPADDING=9>
<TR>
<TD COLSPAN=3>
<!-- Margaret\'s Explanation -->
Please enter your name and then choose either Option 1 (group) or Option 2 (individual).  If you choose Option 1, select your preferred date (for the group presentation) and theorist from the drop-down menu (the number of available slots are listed next to each choice).  You must sign up for the group option by midnight on Tuesday, January 22.  You and your group will then choose a movie (and a theorist if you've selected "other theorist").  If you choose Option 2, please sign up for which movie you'll be doing by Tuesday, January 22 at midnight.  
Whichever option you pick, the paper (2 pages for Option 1, 4 pages for Option 2) is due in class on February 25th.
</TD>
</TR>
<TR>
<TD>
First Name:  <INPUT TYPE=TEXT NAME="givenname" VALUE="$values{'givenname'}"> <BR>
Last Name: <INPUT TYPE=TEXT NAME="surname" VALUE="$values{'surname'}"> <BR>
</TD>

<TD>
Option 1:  Group<P>

Available Dates/Theorists
<SELECT NAME="groupdate">
HEADER

foreach $datetheory (@datelist) {
    print "<OPTION VALUE=\"$datetheory\">";
    if ($datecount{$datetheory} == 4) {
	$available = "filled";
    } else {
	$available = 4 - $datecount{$datetheory};
    }

    if ($datecount{$datetheory} == 4) {
	print "<FONT COLOR=\"RED\">$datetheory ($available)</FONT>\n";
    } else {
	print "$datetheory ($available)\n";
    }
}

print <<FOOTER;
</SELECT>
</TD>

<TD>
Option 2:  Individual-Input Movie Selection<P>

<INPUT TYPE=TEXT NAME="movie" VALUE="$values{'movie'}">
</TD>
</TR>

<TR>
<TD COLSPAN=3 ALIGN=CENTER>
<INPUT TYPE=SUBMIT>
</TD>
</TR>

</TABLE>
</BODY>
</HTML>
FOOTER

exit;

}

if (!defined($values{'givenname'})) {
    # Print form with available dates and option for single
    &printpage("");
} elsif ($values{'movie'} !~ m/^\s*$/) { #individual
    if ($values{'surname'} eq "") {
	$error = "Please enter a last name";
	&printpage($error);
    } elsif ($values{'givenname'} eq "") {
	$error = "Please enter a first name";
	&printpage($error);
    } elsif ($values{'movie'} eq "") {
	$error = "Please enter a movie name";
	&printpage($error);
    }

    open(INDV, ">>personality_individual.txt") or print "Content-type: text/html\n\nCan't open ind";
    print INDV "\U$values{'surname'}\E, $values{'givenname'}\t\"$values{'movie'}\"\n";
    close(INDV);
    print "Content-type: text/html\n\n";
    print "\U$values{'surname'}\E, $values{'givenname'}\t\"$values{'movie'}\"\n";


} else { # group
    if ($values{'surname'} eq "") {
	$error = "Please enter a last name";
	&printpage($error);
    } elsif ($values{'givenname'} eq "") {
	$error = "Please enter a first name";
	&printpage($error);
    } elsif ($datecount{$values{'groupdate'}} == 4) {
	$error = "Selected date and theorist group is already filled.  Please select another.";
	&printpage($error);
    }

    $date = $values{'groupdate'};
    $name = "\U$values{'surname'}\E, $values{'givenname'}";
    push @{$date}, $name;

    print "Content-type: text/html\n\n";
    print "Added $name for $date";
    $newline = "\n";
    open(GROUP, ">personality.txt");
    foreach $groupdate (@datelist) {
	print GROUP "#date $groupdate$newline";
	foreach $datename (@{$groupdate}) {
	    print GROUP "#name $datename$newline";
	}
    }
    print GROUP "\n";
    close(GROUP);

}

Anon7 - 2021