Bug 16335 - Refactor OpacHiddenItems
Summary: Refactor OpacHiddenItems
Status: CLOSED WORKSFORME
Alias: None
Product: Koha
Classification: Unclassified
Component: OPAC (show other bugs)
Version: Main
Hardware: All All
: P5 - low enhancement (vote)
Assignee: Mark Tompsett
QA Contact: Testopia
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2016-04-25 13:08 UTC by Mark Tompsett
Modified: 2021-12-13 21:10 UTC (History)
2 users (show)

See Also:
Change sponsored?: ---
Patch complexity: ---
Documentation contact:
Documentation submission:
Text to go in the release notes:
Version(s) released in:


Attachments
Bug 16335: Refactor OpacHiddenItems (12.11 KB, patch)
2016-06-06 19:13 UTC, Mark Tompsett
Details | Diff | Splinter Review
Bug 16335: Refactor OpacHiddenItems (11.96 KB, patch)
2016-06-06 22:59 UTC, Mark Tompsett
Details | Diff | Splinter Review
Bug 16335: Refactor OpacHiddenItems (11.87 KB, patch)
2016-06-06 23:01 UTC, Mark Tompsett
Details | Diff | Splinter Review
Bug 16335: get_instance was changed to new? (840 bytes, patch)
2016-09-16 10:34 UTC, Mark Tompsett
Details | Diff | Splinter Review

Note You need to log in before you can comment on or make changes to this bug.
Description Mark Tompsett 2016-04-25 13:08:04 UTC
See 14385 and 10589 as well.
The problem is this functionality would be better written using the newer Koha::RecordProcessor filtering functionality.
Comment 1 Mark Tompsett 2016-06-06 19:13:19 UTC Comment hidden (obsolete)
Comment 2 Mark Tompsett 2016-06-06 22:59:56 UTC Comment hidden (obsolete)
Comment 3 Mark Tompsett 2016-06-06 23:01:30 UTC
Created attachment 52103 [details] [review]
Bug 16335: Refactor OpacHiddenItems

This creates a filter and adds a test file for that filter.

TEST PLAN
---------
1) apply patch
2) prove t/db_dependent/Filter_MARC_OpacHiddenItems.t
3) run koha qa test tools

NOTE: I'd ignore the only once warnings.
https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=16104#c18
Comment 4 Mark Tompsett 2016-09-16 10:34:57 UTC
Created attachment 55608 [details] [review]
Bug 16335: get_instance was changed to new?
Comment 5 Katrin Fischer 2020-01-11 11:37:28 UTC
Hi Mark, are you still working in this?
Comment 6 Tomás Cohen Arazi 2021-04-23 19:29:56 UTC
I don't think this is required anymore.

We now pivot on the Koha::Biblio and Koha::Item classes instead of MARC::Record objects, and we have high level methods to deal with this things:

Koha::Biblio->hidden_in_opac
Koha::Item->hidden_in_opac

and notably

Koha::Items->filter_by_visible_in_opac

They are all aware of OpacHiddenItems and more hiding options as well.
We also have

Koha::Item->as_marc_field

which makes a MARC::Field object out of an item.

So if we wanted to (say) do something with a MARC record, that includes items, in the OPAC, we could (just a mock, but you get the idea):

my $biblio = Koha::Biblios->find( $biblio_id, { prefetch => [ 'metadata', 'items' ] } );
my $items  = $biblio->items;

unless ( $patron and $patron->category->override_hidden_items ) {
    $items = $items->filter_by_visible_in_opac({ patron => $patron });
}

my $record = $biblio->metadata->record;
my $processor = Koha::RecordProcessor->new(
    {
        filters => ('EmbedItems', 'ViewPolicy'),
        options => {
            interface => 'opac',
            framework => $biblio->frameworkcode,
            items     => $items->as_list
        }
    }
);
$processor->process( $record );

As you can see, any further hiding of things in the MARC record, should already be covered by the ViewPolicy filter, applied after the items embedding.

I think Mark will be happy to know we followed his path of fixing this mess!