| 
      
            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 | 
              -   | 
               | 
               |