112 lines
4.6 KiB
Text
112 lines
4.6 KiB
Text
|
#!/usr/bin/perl -wT
|
||
|
#
|
||
|
# TWiki Collaboration Platform, http://TWiki.org/
|
||
|
#
|
||
|
# Copyright (C) 1999-2003 Peter Thoeny, peter@thoeny.com
|
||
|
#
|
||
|
# For licensing info read license.txt file in the TWiki root.
|
||
|
# This program is free software; you can redistribute it and/or
|
||
|
# modify it under the terms of the GNU General Public License
|
||
|
# as published by the Free Software Foundation; either version 2
|
||
|
# of the License, or (at your option) any later version.
|
||
|
#
|
||
|
# This program is distributed in the hope that it will be useful,
|
||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
|
# GNU General Public License for more details, published at
|
||
|
# http://www.gnu.org/copyleft/gpl.html
|
||
|
#
|
||
|
# 20000501 Kevin Kinnell : Changed to support new search functionality.
|
||
|
# Move a block of code to wikisearch.pm, removed
|
||
|
# hardcoded flags (except the inline flag) from
|
||
|
# the searchWikiWeb call, added new params.
|
||
|
|
||
|
# Set library paths in @INC, at compile time
|
||
|
BEGIN { unshift @INC, '.'; require 'setlib.cfg'; }
|
||
|
|
||
|
use CGI::Carp qw(fatalsToBrowser);
|
||
|
use CGI;
|
||
|
use TWiki;
|
||
|
|
||
|
use strict;
|
||
|
|
||
|
&main();
|
||
|
|
||
|
sub main
|
||
|
{
|
||
|
my $query = new CGI;
|
||
|
|
||
|
my $thePathInfo = $query->path_info();
|
||
|
my $theRemoteUser = $query->remote_user();
|
||
|
my $theTopic = $query->param( 'topic' );
|
||
|
my $theUrl = $query->url;
|
||
|
|
||
|
my( $topic, $webName ) =
|
||
|
&TWiki::initialize( $thePathInfo, $theRemoteUser, $theTopic, $theUrl, $query );
|
||
|
|
||
|
if( ! &TWiki::Store::webExists( $webName ) ) {
|
||
|
my $url = &TWiki::getOopsUrl( $webName, $topic, "oopsnoweb" );
|
||
|
TWiki::redirect( $query, $url );
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
# The CGI.pm docs claim that it returns all of the values in a
|
||
|
# multiple select if called in a list context, but that may not
|
||
|
# work (didn't on the dev box -- perl 5.004_4 and CGI.pm 2.36 on
|
||
|
# Linux (Slackware 2.0.33) with Apache 1.2. That being the case,
|
||
|
# we need to parse them out here.
|
||
|
|
||
|
# my @webs = $query->param( "web" ) || ( $webName ); #doesn't work
|
||
|
|
||
|
# Note for those unused to Perlishness:
|
||
|
# -------------------------------------
|
||
|
# The pipeline at the end of this assignment splits the full query
|
||
|
# string on '&' or ';' and selects out the params that begin with 'web=',
|
||
|
# replacing them with whatever is after that. In the case of a
|
||
|
# single list of webs passed as a string (say, from a text entry
|
||
|
# field) it does more processing than it needs to to get the
|
||
|
# correct string, but so what? The pipline is the second
|
||
|
# parameter to the join, and consists of the last two lines. The
|
||
|
# join takes the results of the pipeline and strings them back
|
||
|
# together, space delimited, which is exactly what &searchWikiWeb
|
||
|
# needs.
|
||
|
# Note that mod_perl/cgi appears to use ';' as separator, whereas plain cgi uses '&'
|
||
|
|
||
|
my $websStr = join ' ',
|
||
|
grep { s/^web=(.*)$/$1/ }
|
||
|
split(/[&;]/, $query->query_string);
|
||
|
# need to unescape URL-encoded data since we use the raw query_string
|
||
|
# suggested by JeromeBouvattier
|
||
|
$websStr =~ tr/+/ /; # pluses become spaces
|
||
|
$websStr =~ s/%([0-9a-fA-F]{2})/pack("c",hex($1))/ge; # %20 becomes space
|
||
|
|
||
|
my $search = $query->param( "search" ) || "";
|
||
|
my $scope = $query->param( "scope" ) || "";
|
||
|
my $order = $query->param( "order" ) || "";
|
||
|
my $revSort = $query->param( "reverse" ) || "";
|
||
|
my $caseSensitive = $query->param( "casesensitive" ) || "";
|
||
|
my $regex = $query->param( "regex" ) || "";
|
||
|
my $limit = $query->param( "limit" ) || "";
|
||
|
my $nosummary = $query->param( "nosummary" ) || "";
|
||
|
my $nosearch = $query->param( "nosearch" ) || "";
|
||
|
my $noheader = $query->param( "noheader" ) || "";
|
||
|
my $nototal = $query->param( "nototal" ) || "";
|
||
|
my $bookView = $query->param( "bookview" ) || ""; # PTh 20 Jul 2000
|
||
|
my $renameView = $query->param( "renameview" ) || "";
|
||
|
my $showlock = $query->param( "showlock" ) || "";
|
||
|
my $noempty = $query->param( "noempty" ) || "";
|
||
|
my $attrTemplate = $query->param( "template" ) || ""; # undocumented
|
||
|
my $attrHeader = $query->param( "header" ) || "";
|
||
|
my $attrFormat = $query->param( "format" ) || "";
|
||
|
|
||
|
&TWiki::writeHeader( $query );
|
||
|
&TWiki::Search::searchWeb( "0",
|
||
|
$websStr, $search, $scope, $order, $regex,
|
||
|
$limit, $revSort, $caseSensitive, $nosummary,
|
||
|
$nosearch, $noheader, $nototal, $bookView, $renameView,
|
||
|
$showlock, $noempty, $attrTemplate, $attrHeader, $attrFormat
|
||
|
);
|
||
|
}
|
||
|
|
||
|
# EOF
|