X-Git-Url: https://git.deb.at/?a=blobdiff_plain;f=lib%2FPackages%2FDoSearch.pm;h=a889ef5ca89870fc2d8f35430e22906f772262fa;hb=8d29452530e823cbcd07a30898e98abe565a046c;hp=69765addad76f239c4d78294c0fb4b08177202f3;hpb=0d5547e211c0c21886db6f4f9a7b4ac70848408a;p=deb%2Fpackages.git diff --git a/lib/Packages/DoSearch.pm b/lib/Packages/DoSearch.pm index 69765ad..a889ef5 100644 --- a/lib/Packages/DoSearch.pm +++ b/lib/Packages/DoSearch.pm @@ -39,10 +39,7 @@ sub do_search { # for URL construction my $keyword_esc = uri_escape( $keyword ); - my $suites_param = join ',', @{$params->{values}{suite}{no_replace}}; - my $sections_param = join ',', @{$params->{values}{section}{no_replace}}; - my $archs_param = join ',', @{$params->{values}{arch}{no_replace}}; - $opts->{common_params} = "suite=$suites_param§ion=$sections_param&keywords=$keyword_esc&searchon=$searchon&arch=$archs_param"; + $opts->{keywords_esc} = $keyword_esc; # for output my $keyword_enc = encode_entities $keyword || ''; @@ -95,7 +92,7 @@ sub do_search { if ($searchon eq "names") { my $source_wording = $opts->{source} ? _g("source packages") : _g("packages"); # sorry to all translators for that one... (patches welcome) - msg( sprintf( _g( "You have searched for %s that names contain % in %s, %s, and %s." ), + msg( sprintf( _g( "You have searched for %s that names contain %s in %s, %s, and %s." ), $source_wording, $keyword_enc, $suite_wording, $section_wording, $arch_wording ) ); } else { @@ -134,7 +131,7 @@ sub do_search { if ($opts->{exact}) { hint( sprintf( _g( 'You have searched only for words exactly matching your keywords. You can try to search allowing subword matching.' ), - encode_entities("$SEARCH_URL?exact=0&$opts->{common_params}") ) ); + encode_entities(make_search_url('',"keywords=$keyword_esc",{exact => 0})) ) ); } } hint( sprintf( _g( 'You can try a different search on the Packages search page.' ), "$SEARCH_PAGE#search_packages" ) ); @@ -168,26 +165,20 @@ sub do_search { my ($pkg) = $pkg_t =~ m/^(.+)/; # untaint if ($arch ne 'virtual') { - my $real_archive; - if ($archive =~ /^(security|non-US)$/) { - $real_archive = $archive; - $archive = 'us'; - } - - $pkgs{$pkg}{$suite}{$archive}{$version}{$arch} = 1; - $subsect{$pkg}{$suite}{$archive}{$version} = $subsection; - $sect{$pkg}{$suite}{$archive}{$version} = $section + $pkgs{$pkg}{$suite}{$version}{$arch} = 1; + $subsect{$pkg}{$suite}{$version} = $subsection; + $sect{$pkg}{$suite}{$version} = $section unless $section eq 'main'; - $archives{$pkg}{$suite}{$archive}{$version} = $real_archive - if $real_archive; + $archives{$pkg}{$suite}{$version} ||= $archive; - $desc{$pkg}{$suite}{$archive}{$version} = $desc; + $desc{$pkg}{$suite}{$version} = $desc; } else { - $provided_by{$pkg}{$suite}{$archive} = [ split /\s+/, $desc ]; + $provided_by{$pkg}{$suite} = [ split /\s+/, $desc ]; } } - my @pkgs = sort(keys %pkgs, keys %provided_by); + my %uniq_pkgs = map { $_ => 1 } (keys %pkgs, keys %provided_by); + my @pkgs = sort keys %uniq_pkgs; $$page_content .= print_packages( \%pkgs, \@pkgs, $opts, $keyword, \&print_package, \%provided_by, \%archives, \%sect, \%subsect, @@ -256,7 +247,7 @@ sub print_packages { } } elsif (@$pkgs_list) { $str .= "

".sprintf( _g( '%s results have not been displayed because you requested only exact matches.' ), - encode_entities("$SEARCH_URL?exact=0&$opts->{common_params}"), + encode_entities(make_search_url('',"keywords=$opts->{keyword_esc}",{exact => 0})), scalar @$pkgs_list )."

"; } $str .= ''; @@ -270,45 +261,43 @@ sub print_package { my $str = '

'.sprintf( _g( 'Package %s' ), $pkg ).'

'; $str .= '\n"; return $str;