#!/bin/perl

require "config";

use lib '../..';
use CGI;
$query = new CGI;

if (!($new = $query->param('new'))) {
    &print_form;
}
else {
    &update_config;
}

sub print_form {
    open(CONFIG,"config") || die;
    while(<CONFIG>) {
	if (/^\$listlength/o) {
	    chop; chop;
	    ($junk,$listlength) = split(/ = /,$_,2);
	}
	elsif (/^\$new_days/o) {
	    chop; chop;
	    ($junk,$new_days) = split(/ = /,$_,2);
	    last;
	}
	elsif (/^\$moderated/o) {
	    chop; chop;
	    ($junk,$moderated) = split(/ = /,$_,2);
	    last;
	}
    }

    for $i (5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100, 200) {
	if ($i == $listlength) { 
	    $selectlength = join("\n",$selectlength,"<OPTION SELECTED>$i");
	}
	else {
	    $selectlength = join("\n",$selectlength,"<OPTION>$i");
	}
    }
    
    for $i (1 .. 7, 15, 30, 60) {
	if ($i == $new_days) { 
	    $selectdays = join("\n",$selectdays,"<OPTION SELECTED>$i");
	}
	else {
	    $selectdays = join("\n",$selectdays,"<OPTION>$i");
	}
    }
	 
    if ($moderated) {
	$selectmod = "<OPTION VALUE=\"1\" SELECTED>On <OPTION VALUE=\"0\"> Off";
    }
    else {
	$selectmod = "<OPTION VALUE=\"1\">On <OPTION VALUE=\"0\" SELECTED> Off";
    }
    
    print "Content-type: text/html\n\n";

    print <<EOF
<HTML><HEAD><TITLE>Configuration</TITLE></HEAD>
<BODY BGCOLOR="#FEFEFE">
<H1>Configuration</H1>
<FORM METHOD="POST" ACTION="configure.cgi">
<HR>
Moderation
<SELECT NAME="moderate">
$selectmod
</SELECT>.
<HR>
Show 
<SELECT NAME="length">
$selectlength
</SELECT>
threads at a time.
<HR>
Mark messages (and threads with messages) added in the last 
<SELECT NAME="new"> 
$selectdays
</SELECT>
days as <FONT COLOR="#800000"><EM>new!</EM></FONT>
<HR>
<INPUT TYPE="submit">
</FORM></BODY></HTML>
EOF
}

sub update_config {
    $length = $query->param('length');
    $new = $query->param('new');
    $moderate = $query->param('moderate');

    open(LOCK,"config.lock");
    flock(LOCK,2);

    open(CONFIG,"config");
    open(SCRATCH,">config.bak");
    
    while(<CONFIG>) {
	if (/^\$listlength/) {
	    print SCRATCH "\$listlength = $length;\n";
	}
	elsif (/^\$new_days/) {
	    print SCRATCH "\$new_days = $new;\n";
	}
	elsif (/^\$moderated/) {
	    print SCRATCH "\$moderated = $moderate;\n";
	}
	else {
	    print SCRATCH;
	}
    }
    
    open(SCRATCH,"config.bak");
    open(CONFIG,">config");

    while(<SCRATCH>) {
	print CONFIG;
    }
	 
    flock(LOCK,8);
    
    print "Content-type: text/html\n\n";
    print qq(
<HTML><HEAD><TITLE>Configuration Modified</TITLE></HEAD>
<BODY BGCOLOR="#FEFEFE"><H1>Configuration Modified</H1>
<A HREF="admin.cgi">Back to the Administration menu</A></BODY></HTML>
	     );
}



