-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathsearch
111 lines (97 loc) · 2.46 KB
/
search
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
######################################################################
#
# EPrints Simple Search Form
#
######################################################################
#
# __COPYRIGHT__
#
# Copyright 2000-2008 University of Southampton. All Rights Reserved.
#
# __LICENSE__
#
######################################################################
use EPrints;
use strict;
use warnings;
my $repo = EPrints->new->current_repository;
exit( 0 ) unless( defined $repo );
my $path_info = $repo->get_request->path_info;
# lose a leading slash
$path_info =~ s#^/##;
my $args = $repo->get_request->args;
$args = "" if !defined $args;
$args = "?$args" if length( $args );
my( $datasetid, $searchid ) = split /\//, $path_info;
if( !defined $datasetid )
{
$repo->redirect( $repo->config( "http_cgiroot" )."/search/simple$args" );
exit;
}
# cover the old systems sins...
if( $datasetid eq "advsearch" )
{
$repo->redirect( $repo->config( "http_cgiroot" )."/search/advanced$args" );
exit;
}
if( defined($repo->param( "dataset" )) )
{
if( !$searchid )
{
$repo->redirect( $repo->config( "http_cgiroot" )."/search/".$repo->param( "dataset" )."/$datasetid$args" );
exit;
}
elsif( $searchid =~ /^export/ )
{
$repo->redirect( $repo->config( "http_cgiroot" )."/search/".$repo->param( "dataset" )."/$datasetid/$searchid$args" );
exit;
}
# handle the user changing the search dataset after a search
elsif( $repo->param( "dataset" ) ne $datasetid )
{
$repo->redirect( $repo->config( "http_cgiroot" )."/search/".$repo->param( "dataset" )."/$searchid$args" );
exit;
}
}
if( $datasetid =~ /^(advanced|simple)$/ )
{
$searchid = $datasetid;
$datasetid = "archive";
}
elsif( !defined $searchid )
{
# /cgi/search/quicksearch i.e. repository-specific search spec. that
# hopefully doesn't match an existing dataset id
if( !defined $repo->dataset( $datasetid, 1 ) )
{
$searchid = $datasetid;
$datasetid = "archive";
}
else
{
$repo->redirect( $repo->config( "http_cgiroot" )."/search/$datasetid/simple$args" );
exit;
}
}
my $dataset = $repo->dataset( $datasetid );
if( !defined $dataset )
{
$repo->not_found;
exit;
}
my @filters;
# legacy
if( $dataset->base_id eq "eprint" )
{
push @filters,
{ meta_fields => ["metadata_visibility"], value => "show" };
}
EPrints::ScreenProcessor->process(
session => $repo,
url => $repo->config( "http_cgiroot" )."/search/$datasetid/$searchid",
screenid => "Search",
searchid => $searchid,
dataset => $dataset,
filters => \@filters,
);
exit;