package CGI::Kwiki::Search; $VERSION = '0.18'; use strict; use base 'CGI::Kwiki', 'CGI::Kwiki::Privacy'; use CGI::Kwiki ':char_classes'; sub process { my ($self) = @_; my $search = $self->cgi->page_id; return $self->template->process('display_header') . $self->search . $self->template->process('basic_footer'); } sub search { my ($self) = @_; my $database = $self->database; my $search = $self->cgi->search; # Detaint query string $search =~ s/[^$WORD\ \-\.\^\$\*\|\:]//g; my @pages = $database->pages; my @results; for my $page_id (@pages) { next unless $self->is_readable($page_id); if ($page_id =~ m{$search}i) { push @results, $page_id; next; } my $wiki_text = $database->load($page_id); if ($wiki_text =~ m{$search}is) { push @results, $page_id; } } my $result = "