# $Id: Search.pm,v 1.7 2003/10/04 10:22:08 clajac Exp $
package CPANXR::Apache::Search;
use CPANXR::Apache::Util;
use CPANXR::Database;
use Data::Page;
use strict;
sub search {
my ($self, $r, $q) = @_;
my $symbol = $q->param('symbol');
my $case = $q->param('casing');
my $current = $q->param('p') || 1;
unless($symbol) {
$r->print("Empty symbol");
return;
}
unless($symbol =~ /^[A-Za-z_][A-Za-z0-9_]*(?:(?:\:\:|\')[A-Za-z0-9_]*)*$/) {
$r->print("Symbol $symbol is invalid");
return;
}
my $result = CPANXR::Database->select_symbol_by_name($symbol . "%", $case);
unless(@$result) {
$r->print("Sorry, I can't find $symbol");
return;
}
$r->print("Looking for $symbol and found:
");
$r->print("
\n"); my $table = CPANXR::Apache::Util::Table->new($r, 2, [qw(80% 20%)]); $table->begin; $table->header("Symbol:", "ID:"); my $page = Data::Page->new(scalar @$result, 10, $current); for($page->splice($result)) { my $url = qq{$_->[1]}; $table->print($url, $_->[0]); } $table->end; # Write navigation my $base = "search?symbol=$symbol&casing=$case"; CPANXR::Apache::Util->navigator($r, $page, $base); $r->print(""); } 1;