Bug 24781

Summary: Parse and build query strings more reliably
Product: Koha Reporter: David Cook <dcook>
Component: SearchingAssignee: Bugs List <koha-bugs>
Status: RESOLVED WISHLIST QA Contact: Testopia <testopia>
Severity: enhancement    
Priority: P5 - low    
Version: Main   
Hardware: All   
OS: All   
Change sponsored?: --- Patch complexity: ---
Documentation contact: Documentation submission:
Text to go in the release notes:
Version(s) released in:

Description David Cook 2020-03-03 07:07:05 UTC
Throughout the code, you'll see a lot of string mangling to manipulate query strings.

Examples from opac-search.pl:

$query_cgi = "tag=" .  uri_escape_utf8( $tag ) . "&" . $query_cgi;

$pasarParams .= '&amp;query=' . uri_escape_utf8($query);
$pasarParams .= '&amp;count=' . uri_escape_utf8($results_per_page);
$pasarParams .= '&amp;simple_query=' . uri_escape_utf8($simple_query);

$limit_cgi_not_availablity =~ s/&limit=available//g if defined $limit_cgi_not_availablity;

It would be good to have a more reliable unit-tested way of creating and editing query strings.

I have a module called Koha::Util::URL which should be able to help. I'm hoping to put together a patch tomorrow.
Comment 1 David Cook 2020-03-03 07:07:57 UTC
As a side note, I actually thought of this while creating a new "Peer-Reviewed" facet for the search results, which imitates that "Availability" facet to a degree. 

I didn't like the way limit=available was being handled, so I wrote an alternative.