View | Details | Raw Unified | Return to bug 23329
Collapse All | Expand All

(-)a/opac/tracklinks.pl (-39 / +28 lines)
Lines 28-81 use CGI qw ( -utf8 ); Link Here
28
28
29
my $cgi = new CGI;
29
my $cgi = new CGI;
30
my $uri = $cgi->param('uri') || '';
30
my $uri = $cgi->param('uri') || '';
31
my $biblionumber = $cgi->param('biblionumber') || 0;
32
my $itemnumber   = $cgi->param('itemnumber')   || 0;
31
33
32
my $tracker = Koha::Linktracker->new(
34
my $tracker = Koha::Linktracker->new(
33
    { trackingmethod => C4::Context->preference('TrackClicks') } );
35
    { trackingmethod => C4::Context->preference('TrackClicks') } );
34
36
35
if ($uri) {
37
if ($uri && ($biblionumber || $itemnumber) ) {
36
    if (   $tracker->trackingmethod() eq 'track'
38
    my $borrowernumber = 0;
37
        || $tracker->trackingmethod() eq 'anonymous' )
38
    {
39
        my $borrowernumber = 0;
40
41
        # we have a uri and we want to track
42
        if ( $tracker->trackingmethod() eq 'track' ) {
43
            my ( $user, $cookie, $sessionID, $flags ) =
44
              checkauth( $cgi, 1, {}, 'opac' );
45
            my $userenv = C4::Context->userenv;
46
47
            if (   defined($userenv)
48
                && ref($userenv) eq 'HASH'
49
                && $userenv->{number} )
50
            {
51
                $borrowernumber = $userenv->{number};
52
            }
53
39
54
            # get borrower info
40
    # we have a uri and we want to track
55
        }
41
    if ( $tracker->trackingmethod() eq 'track' ) {
56
        my $biblionumber = $cgi->param('biblionumber') || 0;
42
        my ( $user, $cookie, $sessionID, $flags ) =
57
        my $itemnumber   = $cgi->param('itemnumber')   || 0;
43
          checkauth( $cgi, 1, {}, 'opac' );
44
        my $userenv = C4::Context->userenv;
58
45
59
        my $record = C4::Biblio::GetMarcBiblio({ biblionumber => $biblionumber });
46
        if (   defined($userenv)
60
        my $marc_urls = C4::Biblio::GetMarcUrls($record, C4::Context->preference('marcflavour'));
47
            && ref($userenv) eq 'HASH'
61
        if ( ( grep { $_ eq $uri } map { $_->{MARCURL} } @$marc_urls )
48
            && $userenv->{number} )
62
            || Koha::Items->search( { itemnumber => $itemnumber, uri => $uri } )->count )
63
        {
49
        {
64
            $tracker->trackclick(
50
            $borrowernumber = $userenv->{number};
65
                {
66
                    uri            => $uri,
67
                    biblionumber   => $biblionumber,
68
                    borrowernumber => $borrowernumber,
69
                    itemnumber     => $itemnumber
70
                }
71
            );
72
            print $cgi->redirect($uri);
73
            exit;
74
        }
51
        }
52
53
        # get borrower info
75
    }
54
    }
76
    else {
77
55
78
        # We have a valid url, but we shouldn't track it, just redirect
56
    my $record = C4::Biblio::GetMarcBiblio({ biblionumber => $biblionumber });
57
    my $marc_urls = C4::Biblio::GetMarcUrls($record, C4::Context->preference('marcflavour'));
58
    if ( ( grep { $_ eq $uri } map { $_->{MARCURL} } @$marc_urls )
59
        || Koha::Items->search( { itemnumber => $itemnumber, uri => $uri } )->count )
60
    {
61
        $tracker->trackclick(
62
            {
63
                uri            => $uri,
64
                biblionumber   => $biblionumber,
65
                borrowernumber => $borrowernumber,
66
                itemnumber     => $itemnumber
67
            }
68
        ) if (   $tracker->trackingmethod() eq 'track' || $tracker->trackingmethod() eq 'anonymous' );
79
        print $cgi->redirect($uri);
69
        print $cgi->redirect($uri);
80
        exit;
70
        exit;
81
    }
71
    }
82
- 

Return to bug 23329