diff --git a/opac/tracklinks.pl b/opac/tracklinks.pl new file mode 100755 index 0000000000..cc1d5e3b4d --- /dev/null +++ b/opac/tracklinks.pl @@ -0,0 +1,77 @@ +#!/usr/bin/perl + +# script to log clicks on links to external urls + +# Copyright 2012 Catalyst IT +# This file is part of Koha. +# +# Koha is free software; you can redistribute it and/or modify it under the +# terms of the GNU General Public License as published by the Free Software +# Foundation; either version 2 of the License, or (at your option) any later +# version. +# +# Koha is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR +# A PARTICULAR PURPOSE. See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with Koha; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +use Modern::Perl; +use C4::Context; +use C4::Auth qw(checkauth); +use CGI; + +my $trackinglinks = C4::Context->preference('TrackClicks'); + +my $cgi = new CGI; +my $uri = $cgi->param('uri') || ''; + +if ($uri) { + if ( $trackinglinks eq 'track' || $trackinglinks eq 'anonymous' ) { + my $borrowernumber = 0; + + # we have a uri and we want to track + if ( $trackinglinks eq 'track' ) { + my ( $user, $cookie, $sessionID, $flags ) = + checkauth( $cgi, 1, '', 'opac' ); + my $userenv = C4::Context->userenv; + + if ( defined($userenv) + && ref($userenv) eq 'HASH' + && $userenv->{number} ) + { + $borrowernumber = $userenv->{number}; + } + + # get borrower info + } + my $biblionumber = $cgi->param('biblionumber') || 0; + my $itemnumber = $cgi->param('itemnumber') || 0; + + trackclick( $uri, $biblionumber, $borrowernumber, $itemnumber ); + print $cgi->redirect($uri); + } + else { + + # We have a valid url, but we shouldn't track it, just redirect + print $cgi->redirect($uri); + } +} +else { + + # we shouldn't be here, bail out + print $cgi->redirect("/cgi-bin/koha/errors/404.pl"); # escape early + exit; +} + +sub trackclick { + my ( $uri, $biblionumber, $borrowernumber, $itemnumber ) = @_; + my $dbh = C4::Context->dbh(); + my $query = "INSERT INTO linktracker (biblionumber,itemnumber,borrowernumber + ,url,timeclicked) VALUES (?,?,?,?,now())"; + my $sth = $dbh->prepare($query); + $sth->execute( $biblionumber, $itemnumber, $borrowernumber, $uri ); + +}