#!/usr/bin/perl

$top = '..';

require "$top/site.pl";
require 'cgi-util.pl';
require 'db.pl';

%form = CGIReadGet();

CGIHeader();

my %matches;

sub MatchUserInfo {
	my ($str, $uid, $name) = @_;

	my $s = <<"EOF";
SELECT * FROM user_info WHERE user_id=$uid AND
	(
		first_name LIKE '\%$str\%'
		OR
		last_name LIKE '\%$str\%'
		OR
		email LIKE '\%$str\%'
		OR
		url LIKE '\%$str\%'
	)
EOF
	my $sth = $dbh->prepare($s);
	$sth->execute;

	if($sth->rows > 0) {
		$matches{$name} .= 'u';
		return 1;
	}

	return 0;
}

sub MatchDesc {
	my ($str, $uid, $name) = @_;

	my $s = <<"EOF";
SELECT * FROM description WHERE user_id=$uid AND
	description LIKE '\%$str\%'
EOF
	my $sth = $dbh->prepare($s);
	$sth->execute;

	if($sth->rows > 0) {
		$matches{$name} .= 'd';
		return 1;
	}

	return 0;
}

sub MatchMod {
	my ($str, $uid, $name) = @_;

	my $s = <<"EOF";
SELECT * FROM modifications WHERE user_id=$uid AND
	mods LIKE '\%$str\%'
EOF
	my $sth = $dbh->prepare($s);
	$sth->execute;

	if($sth->rows > 0) {
		$matches{$name} .= 'm';
		return 1;
	}

	return 0;
}

sub MatchVehicle {
	my ($str, $uid, $name) = @_;

	my $s = <<"EOF";
SELECT * FROM vehicle WHERE user_id=$uid AND
	description LIKE '\%$str\%'
EOF
	my $sth = $dbh->prepare($s);
	$sth->execute;

	if($sth->rows > 0) {
		$matches{$name} .= 'v';
		return 1;
	}
	return 0;
}

if(defined($form{'string'})) {
	# perform search

	OpenDB();

	BeginPage("Search Results");
	BeginContent();
	Banner("<img src=\"$top/images/search.gif\"> Search Results for $form{'string'}");

	$count = 0;

	my $sth = $dbh->prepare("SELECT users.user_id, users.user_name FROM users");
	$sth->execute;

	while (my $ref = $sth->fetchrow_hashref()) {
		foreach $key (keys %$ref) {
			$data{$key} = $ref->{$key};
		}

		$count += MatchUserInfo($form{'string'}, $data{'user_id'}, $data{'user_name'});
		$count += MatchDesc($form{'string'}, $data{'user_id'}, $data{'user_name'});
		$count += MatchMod($form{'string'}, $data{'user_id'}, $data{'user_name'});
		$count += MatchVehicle($form{'string'}, $data{'user_id'}, $data{'user_name'});
	}

	$sth->finish;


	if($count == 0) {
		print "<a href=\"search.cgi\">Try again</a>\n";
	} else {
		foreach my $user (sort keys %matches) {
			print "<a href=\"$top/$profileDir/$user.html\">$user</a>\n";
			my $n = 0;
			if($matches{$user} =~ /d/) {
				if($n == 0) {
					print " in ";
				} else {
					print ", ";
				}
				$n = 1;
				print "description";
			}
			if($matches{$user} =~ /m/) {
				if($n == 0) {
					print " in ";
				} else {
					print ", ";
				}
				$n = 1;
				print "mods";
			}
			if($matches{$user} =~ /v/) {
				if($n == 0) {
					print " in ";
				} else {
					print ", ";
				}
				$n = 1;
				print "vehicles";
			}
			print "<br>\n";
		}
	}


	BlockBreak();
	if($count == 1) {
		print "$count member matched\n";
	} else {
		print "$count members matched\n";
	}

	EndContent();
	EndPage();

	CloseDB();

	exit 0;
}



# put out search form

BeginPage("Search Member Database");

BeginContent();

Banner("<img src=\"$top/images/search.gif\"> Search Member Database");

print <<"EOF";

<p>
Enter the string to search for to find any matches in the description,
modifications, other vehicles, name, email or web site fields.
</p>

<form method="get" action="search.cgi">

<table>

<tr>
<td width=25% class=info>Search for</td>
<td><input name=string size=50 value=""></td>
<tr>
<td></td>
<td>
<input type=submit value="Search">
</td>
</tr>

</table>

</form>
EOF

EndContent();
EndPage();

