Bugzilla – Attachment 136434 Details for
Bug 19704
OPACs most popular feature includes titles hidden by OpacHiddenItems
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
Bug 19704: Make OPAC "Most popular" respect hidden record sysprefs
Bug-19704-Make-OPAC-Most-popular-respect-hidden-re.patch (text/plain), 5.16 KB, created by
David Cook
on 2022-06-23 00:29:00 UTC
(
hide
)
Description:
Bug 19704: Make OPAC "Most popular" respect hidden record sysprefs
Filename:
MIME Type:
Creator:
David Cook
Created:
2022-06-23 00:29:00 UTC
Size:
5.16 KB
patch
obsolete
>From 571a131ff6b8e443fb729151e6c98c41044f1508 Mon Sep 17 00:00:00 2001 >From: David Cook <dcook@prosentient.com.au> >Date: Wed, 22 Jun 2022 07:07:48 +0000 >Subject: [PATCH] Bug 19704: Make OPAC "Most popular" respect hidden record > sysprefs > >At the moment, OpacSuppression and OpacHiddenItems don't affect the output >of the OPAC's "Most popular" page. > >This patch adds support for the OpacSuppression and OpacHiddenItems system preferences, so >that items are excluded from the "Most popular" calculation based on the hidden rules. > >Test plan: >0a. Apply patches >0b. koha-plack --restart kohadev >0c. Log into Koha as "koha" user >1. Go to http://localhost:8081/cgi-bin/koha/admin/preferences.pl?op=search&searchfield=OpacTopissue >2. Enable "OpacTopissue" >3. Go to http://localhost:8081/cgi-bin/koha/circ/circulation.pl?borrowernumber=51 >4. Checkout 39999000001310 >5. Checkout 39999000005578 >6. Checkout 39999000004571 >7. Checkout 39999000005592 >8. Go to http://localhost:8080/cgi-bin/koha/opac-topissues.pl?limit=10&branch=&itemtype=&timeLimit=999&do_it=1 >9. See 3 titles >10. Go to http://localhost:8081/cgi-bin/koha/admin/preferences.pl?op=search&searchfield=OpacHiddenItems >11. Change "OpacHiddenItems" to the following (within the single quotes): >barcode: [39999000001310,39999000005578] >location: ['RANDOM','THAT','THIS'] >12. Go to http://localhost:8080/cgi-bin/koha/opac-topissues.pl?limit=10&branch=&itemtype=&timeLimit=999&do_it=1 >13. See 2 titles ("Gairm" is hidden, as is one of the items for "Continuous delivery /") >14. Go to http://localhost:8081/cgi-bin/koha/admin/preferences.pl?op=search&searchfield=OpacHiddenItemsExceptions >15. Update the syspref to 'S' >16. Go to http://localhost:8080/cgi-bin/koha/opac-topissues.pl?limit=10&branch=&itemtype=&timeLimit=999&do_it=1 >17. See 3 titles again > >18. Go to http://localhost:8081/cgi-bin/koha/admin/preferences.pl?op=search&searchfield=OpacSuppression >19. Change syspref to "Hide" >20. Go to http://localhost:8081/cgi-bin/koha/cataloguing/addbiblio.pl?biblionumber=114 >21. Change 942$n to "Yes" and save record >22. Go to http://localhost:8080/cgi-bin/koha/opac-topissues.pl?limit=10&branch=&itemtype=&timeLimit=999&do_it=1 >23. See 2 titles ("Clean code : a handbook of agile software craftsmanship / Robert C. Martin ... [et al.]" is suppressed) >--- > C4/Circulation.pm | 53 +++++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 53 insertions(+) > >diff --git a/C4/Circulation.pm b/C4/Circulation.pm >index f5df973d1d..f7ed4d0159 100644 >--- a/C4/Circulation.pm >+++ b/C4/Circulation.pm >@@ -4321,6 +4321,7 @@ sub GetTopIssues { > FROM biblio b > LEFT JOIN items i ON (i.biblionumber = b.biblionumber) > LEFT JOIN biblioitems bi ON (bi.biblionumber = b.biblionumber) >+ LEFT JOIN biblio_metadata bm ON (bm.biblionumber = b.biblionumber) > }; > > my (@where_strs, @where_args); >@@ -4347,6 +4348,58 @@ sub GetTopIssues { > push @where_args, $newness; > } > >+ my $opachiddenitems_rules = C4::Context->yaml_preference('OpacHiddenItems'); >+ if ( $opachiddenitems_rules ){ >+ #NOTE: OpacHiddenItemsHidesRecord isn't relevant here since the bib won't appear if there is no items to appear anyway >+ my $userenv = C4::Context->userenv; >+ my $logged_in_user = Koha::Patrons->find( $userenv->{number} ) if $userenv; >+ my $logged_in_categorycode = $logged_in_user->categorycode if $logged_in_user; >+ my $hide_items = 1; >+ if (my $exceptions = C4::Context->preference('OpacHiddenItemsExceptions') && $logged_in_categorycode){ >+ foreach my $except (split(/\|/, $exceptions)){ >+ if ( $except eq $logged_in_categorycode ){ >+ $hide_items = 0; >+ last; >+ } >+ } >+ } >+ if ($hide_items){ >+ my %where = (); >+ my @keys = keys %$opachiddenitems_rules; >+ foreach my $key (@keys){ >+ #NOTE: Add "i." table alias to field names >+ #NOTE: Generate SQL::Abstract data structure >+ $where{ "i." . $key } = { '!=' => [ -and => @{$opachiddenitems_rules->{$key}} ] }; >+ } >+ if (%where){ >+ require SQL::Abstract; >+ my $sql = SQL::Abstract->new; >+ my ($stmt, @bind) = $sql->where(\%where); >+ if ($stmt){ >+ $stmt =~ s/^ WHERE //; >+ push(@where_strs,$stmt); >+ push(@where_args,@bind); >+ } >+ } >+ } >+ } >+ >+ if ( C4::Context->preference('OpacSuppression') ){ >+ my $hide_items = 1; >+ if (C4::Context->preference('OpacSuppressionByIPRange')) { >+ my $IPAddress = $ENV{'REMOTE_ADDR'}; >+ my $IPRange = C4::Context->preference('OpacSuppressionByIPRange'); >+ if ($IPAddress =~ /^$IPRange/){ >+ $hide_items = 0; >+ } >+ } >+ if ($hide_items){ >+ my $stmt = q#( ExtractValue(bm.metadata,'//datafield[@tag="942"]/subfield[@code="n"]') <> ? )#; >+ push(@where_strs, $stmt); >+ push(@where_args, 1); >+ } >+ } >+ > if (@where_strs) { > $query .= 'WHERE ' . join(' AND ', @where_strs); > } >-- >2.25.1
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
|
Splinter Review
Attachments on
bug 19704
:
136433
|
136434
|
137273