# $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;