Bug 20218: Fix matching of uri in tracklinks
authorNick Clemens <nick@bywatersolutions.com>
Fri, 16 Feb 2018 12:31:39 +0000 (12:31 +0000)
committerNick Clemens <nick@bywatersolutions.com>
Fri, 23 Mar 2018 10:30:01 +0000 (10:30 +0000)
The current code matches using a regex, this breaks when the url
contains special characters. We swtich it to equality check

To test:
1 - Enable TrackClicks (either track or anonymous)
2 - Find the URL of a biblio in the OPAC
3 - Paste this into the 856$u of another record
    (or use any url containing a '?' or other characters)
4 - View the record in the opac
5 - Click the URL
6 - 404 Error!
7 - Apply patch
8 - Try again
9 - Success!

Signed-off-by: Claire Gravely <claire.gravely@bsz-bw.de>

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>

opac/tracklinks.pl

index 48076cf..b5743fe 100755 (executable)
@@ -57,7 +57,7 @@ if ($uri) {
 
         my $record = C4::Biblio::GetMarcBiblio({ biblionumber => $biblionumber });
         my $marc_urls = C4::Biblio::GetMarcUrls($record, C4::Context->preference('marcflavour'));
-        if ( grep { /^$uri$/ } map { $_->{MARCURL} } @$marc_urls ) {
+        if ( grep { $_ eq $uri } map { $_->{MARCURL} } @$marc_urls ) {
             $tracker->trackclick(
                 {
                     uri            => $uri,