Bug 8917 : Script to log link clicks
authorChris Cormack <chrisc@catalyst.net.nz>
Mon, 15 Oct 2012 00:16:17 +0000 (13:16 +1300)
committerJared Camins-Esakov <jcamins@cpbibliography.com>
Thu, 7 Mar 2013 16:13:26 +0000 (11:13 -0500)
Signed-off-by: Bernardo Gonzalez Kriegel <bgkriegel@gmail.com>

Signed-off-by: Jonathan Druart <jonathan.druart@biblibre.com>

opac/tracklinks.pl [new file with mode: 0755]

diff --git a/opac/tracklinks.pl b/opac/tracklinks.pl
new file mode 100755 (executable)
index 0000000..cc1d5e3
--- /dev/null
@@ -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 );
+
+}