111 lines
		
	
	
	
		
			4.6 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
		
		
			
		
	
	
			111 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
							 |