Newer
Older
Digital_Repository / OARiNZ / DIY / deb_package / eprints-3.0 / cgi / users / lookup / name
nstanger on 7 Jun 2007 2 KB - Added debian package source.

use EPrints;

use strict;

my $session = EPrints::Session->new();

# security?

my $content = "text/xml";
$session->send_http_header( content_type=>$content );
my $family = $session->param( "_name_family" );
my $given = $session->param( "_name_given" );
my $id = $session->param( "_id" );

my $sql = "
SELECT COUNT(eprint.eprintid) AS num_matches,creators_name_honourific,creators_name_given,creators_name_family,creators_name_lineage,creators_id from eprint_creators_name LEFT JOIN eprint_creators_id ON eprint_creators_name.pos = eprint_creators_id.pos AND eprint_creators_name.eprintid = eprint_creators_id.eprintid LEFT JOIN eprint ON eprint_creators_name.eprintid = eprint.eprintid 
WHERE eprint.eprint_status = 'archive' ";
if( EPrints::Utils::is_set( $family ) )
{
	$sql .= "AND creators_name_family LIKE '".EPrints::Database::prep_like_value($family)."\%' ";
}
if( EPrints::Utils::is_set( $given ) )
{
	$sql .= "AND creators_name_given LIKE '".EPrints::Database::prep_like_value($given)."\%' ";
}
if( EPrints::Utils::is_set( $id ) )
{
	$sql .= "AND creators_id LIKE '".EPrints::Database::prep_like_value($id)."\%' ";
}
$sql.="
GROUP BY creators_name_honourific,creators_name_given,creators_name_family,creators_name_lineage,creators_id 
ORDER BY num_matches DESC,creators_name_family,creators_name_given 
LIMIT 40
";

print <<END;
<?xml version="1.0" encoding="UTF-8" ?>

<ul>
END


my $sth = $session->get_database->prepare( $sql );
$session->get_database->execute( $sth , $sql );
my $first = 1;
while( my( $cnt,$h,$g,$f,$l,$id ) = $sth->fetchrow_array )
{
	if( $first )
	{
		print "<li class='ep_first'>";
		$first = 0;
	}
	else
	{
		print "<li>";
	}
	print "$h $g $f $l"; 
	if( defined $id ) { print " ($id)"; }
	print " <small>(author of ".$cnt." item".($cnt>1?"s":"")." in this repository)</small>";
	print "<ul>";
	print "<li id='for:value:relative:_name_family'>$f</li>";
	print "<li id='for:value:relative:_name_given'>$g</li>";
	print "<li id='for:value:relative:_name_honourific'>$h</li>";
	print "<li id='for:value:relative:_name_lineage'>$l</li>";
	print "<li id='for:value:relative:_id'>$id</li>";
	print "</ul></li>\n";
}
print "</ul>";

$session->terminate;