#!/usr/bin/perl
require "weblib.lib";
use DB_File;
use POSIX "strftime";
$dir="/home/todd/www/reviews";
&ReadParse;
$in{reviewType}="rev" unless $in{reviewType};
$in{Date}=strftime("%m/%d/%Y",localtime(time)) unless $in{Date};
$in{Date}=~s/^0//;
if($in{FileName} && $in{FileName}!~/^\d{8}-/){$in{FileName}="$in{TourDate}-$in{FileName}";}
if($in{Title}){
	if($in{Delete}){unlink("$dir/$in{Subdir}/$in{FileName}.$in{reviewType}");}
	else{
		$in{Review}=~s/\r\n/\n/gm;
		open(FILE,">$dir/$in{Subdir}/$in{FileName}.$in{reviewType}");
		print FILE "Title: $in{Title}\n";
		print FILE "Author: $in{Author}\n" if $in{Author};
		print FILE "Date: $in{Date}\n" if $in{Date};
		print FILE "\n";
		$in{Review}=~s/\n\s+\n/\n\n/gm;
		$in{Review}=~s/\n\s+/\n\n/gm;
		$in{Review}=~s/\r \r/\n\n/gm;
		$in{Review}=~s/“/"/g;
		$in{Review}=~s/”/"/g;
		$in{Review}=~s/‘/'/g;
		$in{Review}=~s/’/'/g;
		$in{Review}=~s/…/.../g;
		$in{Review}=~s/–/--/g;
		print FILE $in{Review};
		close(FILE);
		$ENV{PATH_INFO}="/$in{Subdir}/$in{FileName}";
		if($in{see}){print qq{Location: /todd/review/$in{Subdir}/$in{FileName}.$in{reviewType}\n\n};exit;}
	}
}
elsif($in{FileName}){
	$ENV{PATH_INFO}="";
	$ENV{PATH_INFO}.="/$in{Subdir}" if $in{Subdir};
	$ENV{PATH_INFO}.="/$in{FileName}" if $in{FileName};
	($group)=split("-",$in{FileName});
}
&htmlopen("Add/Update Reviews|","style=body {background-color: #FFFF99; font: 10pt/12pt Verdana, sans serif;}");
@file=split(m#/#,substr($ENV{PATH_INFO},1));
if(scalar(@file) == 1){$subdir=pop(@file);}
else{
	$file=pop(@file);
	$in{FileName}=$file;
	$subdir=join("/",@file);
}
$in{Subdir}=$subdir;
$testfile="$dir";
$testfile.="/$subdir" if $subdir;
$testfile.="/$file";
if(-f "$testfile.$in{reviewType}"){
	open(FILE,"$testfile.$in{reviewType}");
	&getparam;
	$in{Title}=$param{Title};
	$in{Author}=$param{Author};
	$in{Date}=$param{Date};
	$in{FileName}=$file;
	$in{Subdir}=$subdir;
	$in{Review}=join('',<FILE>);
	close(FILE);
}
else{
	print "Can't find file $testfile.$in{reviewType}<p>\n" if $file;
}
($title=$in{Title})=~s/"/&quot;/g;
($author=$in{Author})=~s/"/&quot;/g;
opendir(DIR,$dir);
$subselect=qq{<select name="Subdir">\<option value="">Sub-directory</option>\n};
foreach $subdir(sort grep  !/^\./,readdir DIR){
	next unless -d "$dir/$subdir";
	$selected=$subdir eq $in{Subdir}?" selected":"";
	$subselect.="<option$selected>$subdir</option>\n";
}
$subselect.="</select>\n";
$tourdb="/home/todd/private/tours/$in{Subdir}";
$tourinfo="$tourdb.info";
open(TOURINFO,$tourinfo);
$_=<TOURINFO>;
$_=<TOURINFO>;
$tourdateselect=qq{<select name="TourDate">\<option value="">Tour Date</option>\n};
$optgroup="";
while(<TOURINFO>){
	chop;
	if(/^#/){
		($tourkey,$tourname)=split(/%%/);
		if($optgroup){$tourdateselect.="</optgroup>\n";}
		$tourdateselect.=qq{<optgroup label="$tourname">\n};
		$optgroup=1;
		next;
	}
	($date,$city,$venue)=split(/\t/);
	($day,$date)=split(/\s+/,$date,2);
	($date,$hour)=split(/\s+/,$date,2);
	($m,$d,$y)=split(m#/#,$date);
	$ymd=sprintf("%4d%02d%02d",$y+2000,$m,$d);
	if($hour){
		($hour,$ampm)=split(/\s+/,$hour);
		($hour,$min)=split(/:/,$hour);
		$hour=0 if $hour==12;
		$hour+=12 if lc($ampm) eq "pm";
		$ymd.=sprintf("%02d%02d",$hour,$min);
	}
	$tourdateselect.=qq{<option value="$ymd">$date - $venue - $city</option>\n};
}
if($optgroup){$tourdateselect.="</optgroup>\n";}
$tourdateselect.="</select>\n";
if(-w "$tourdb.db" && $in{FileName} && $in{Author}){
	$dbkeytype=$in{reviewType} eq "com"?"commentary":$in{reviewType} eq "set"?"setlist":"review";
	($date)=split(/-/,$in{FileName});
	($year,$month,$day)=unpack("a4 a2 a2",$date);
	@date=(0,0,12,$day,$month-1,$year-1900);
	$date=strftime("%a %m/%d/%y",@date);
	$date=~s/ 0/ /; #strip off leading zero for month;
	dbmopen(%DB,"$tourdb.db",undef);
	@review=split(/;/,$DB{"$date.$dbkeytype"});
	foreach $review(@review){
		($reviewer,$review)=split(/:/,$review,2);
		$review{$reviewer}=$review;
	}
	if(!$review{$in{Author}}){
		if($in{AddReview}){
			$review{$in{Author}}="/todd/review/$in{Subdir}/$in{FileName}.$in{reviewType}";
			if($DB{"$date.$dbkeytype"}){$DB{"$date.$dbkeytype"}.=";$in{Author}:$review{$in{Author}}";}
			else{$DB{"$date.$dbkeytype"}="$in{Author}:$review{$in{Author}}";}
		}
		else{$addreview=1;}
	}
	@review=split(/;/,$DB{"$date.$dbkeytype"});
	foreach $review(@review){
		($reviewer,$review)=split(/:/,$review,2);
		print "*" if $in{Author} eq $reviewer;
		print "$reviewer:$review<br>\n";
	}
}
if($in{Subdir} && !$in{FileName}){
	opendir(DIR,"$dir/$in{Subdir}");
	$revselect= qq{<select onChange='document.UpdateForm.FileName.value=this[this.selectedIndex].text;UpdateForm.submit();'>\n}.
		qq{<option value="">Select Review</option>\n};
	foreach $review(sort grep s/\.$in{reviewType}$//,readdir(DIR)){
		$revselect.="<option>$review</option>\n";
	}
	$revselect.="</select>\n";
}
$comchecked=$in{reviewType} eq "com"?" checked":"";
$revchecked=$in{reviewType} eq "rev"?" checked":"";
$setchecked=$in{reviewType} eq "set"?" checked":"";
print <<EOF;
<form name="UpdateForm" action=$weblib::URL method=POST>
<table>
<tr><td>Title</td><td><input name="Title" value="$title" size="40"></td></tr>
<tr><td>Author</td><td><input name="Author" value="$author" size="40"></td></tr>
<tr><td>Date</td><td><input name="Date" value="$in{Date}" size="40"></td></tr>
<tr><td>Tour ID</td><td>$subselect$revselect</td></tr>
<tr><td>Tour Date</td><td>$tourdateselect</td></tr>
<tr><td>File Name or Suffix</td><td><input name="FileName" value="$in{FileName}">
<label><input type="radio" name="reviewType" value="rev"$revchecked>Review</label>
<label><input type="radio" name="reviewType" value="com"$comchecked>Commentary</label>
<label><input type="radio" name="reviewType" value="set"$setchecked>Set List</label>
</td></tr>
<tr><td>Review</td><td><textarea name="Review" cols="80" rows="50" wrap="soft">$in{Review}</textarea></td>
</tr>
</table>
<input name="update" type="submit" value="Update Review">
<input name="Delete" type="submit" value="Delete Review">
EOF
print qq{<input name="AddReview" type="submit" value="Update and Add Review to Tour Database">\n} if $addreview;
print <<EOF;
<input name="see" type="submit" value="Update and See Review">
</form>
EOF
print qq{<a href=/todd/review/$subdir/$file.$in{reviewType}>See the review</a>\n} if -f "$dir/$subdir/$file.$in{reviewType}";
sub getparam{
	while(<FILE>){
		last if /^$/;
		chop;
		@param=split(/: /);
		$param{$param[0]}=$param[1];
	}
}
