- foreach (@newresults) {
- my $clean = $_->{isbn} or next;
- unless (
- $clean =~ /\b(\d{13})\b/ or
- $clean =~ /\b(\d{10})\b/ or
- $clean =~ /\b(\d{9}X)\b/i
- ) {
- next;
- }
- $_ ->{'clean_isbn'} = $1;
- }
- $total = $total + $results_hashref->{$server}->{"hits"};
- ## If there's just one result, redirect to the detail page
- if ($total == 1) {
- my $biblionumber=@newresults[0]->{biblionumber};
+ if (C4::Context->preference('COinSinOPACResults')) {
+ foreach (@newresults) {
+ $_->{coins} = GetCOinSBiblio($_->{'biblionumber'});
+ }
+ }
+
+ if ($results_hashref->{$server}->{"hits"}){
+ $total = $total + $results_hashref->{$server}->{"hits"};
+ }
+ # Opac search history
+ my $newsearchcookie;
+ if (C4::Context->preference('EnableOpacSearchHistory')) {
+ my @recentSearches;
+
+ # Getting the (maybe) already sent cookie
+ my $searchcookie = $cgi->cookie('KohaOpacRecentSearches');
+ if ($searchcookie){
+ $searchcookie = uri_unescape($searchcookie);
+ if (thaw($searchcookie)) {
+ @recentSearches = @{thaw($searchcookie)};
+ }
+ }
+
+ # Adding the new search if needed
+ if (!$borrowernumber || $borrowernumber eq '') {
+ # To a cookie (the user is not logged in)
+
+ if (($params->{'offset'}||'') eq '') {
+
+ push @recentSearches, {
+ "query_desc" => $query_desc || "unknown",
+ "query_cgi" => $query_cgi || "unknown",
+ "time" => time(),
+ "total" => $total
+ };
+ $template->param(ShowOpacRecentSearchLink => 1);
+ }
+
+ shift @recentSearches if (@recentSearches > 15);
+ # Pushing the cookie back
+ $newsearchcookie = $cgi->cookie(
+ -name => 'KohaOpacRecentSearches',
+ # We uri_escape the whole freezed structure so we're sure we won't have any encoding problems
+ -value => uri_escape(freeze(\@recentSearches)),
+ -expires => ''
+ );
+ $cookie = [$cookie, $newsearchcookie];
+ }
+ else {
+ # To the session (the user is logged in)
+ if (($params->{'offset'}||'') eq '') {
+ AddSearchHistory($borrowernumber, $cgi->cookie("CGISESSID"), $query_desc, $query_cgi, $total);
+ $template->param(ShowOpacRecentSearchLink => 1);
+ }
+ }
+ }
+ ## If there's just one result, redirect to the detail page
+ if ($total == 1 && $format ne 'rss2'
+ && $format ne 'opensearchdescription' && $format ne 'atom') {
+ my $biblionumber=$newresults[0]->{biblionumber};