From c4750d422a55cf2129ba1bc3d0a4ea4eaf60d4d2 Mon Sep 17 00:00:00 2001 From: Jonathan Druart Date: Tue, 9 Aug 2016 16:26:07 +0100 Subject: [PATCH] [SIGNED-OFF] Bug 17094: Make Koha::Virtualshelf methods return Koha::Objects-based objects Instead of DBIx::Class objects. Test plan: 1/ Add content to a list and share it with another patron 2/ Try to view the list with the other patron 3/ download and send a shelf and check if the biblio list is correct 4/ prove t/db_dependent/Virtualshelves.t should return green Signed-off-by: Aleisha Amohia --- Koha/Virtualshelf.pm | 7 +++++-- opac/opac-downloadshelf.pl | 4 ++-- opac/opac-sendshelf.pl | 2 +- opac/opac-shelves.pl | 7 +++++-- virtualshelves/downloadshelf.pl | 4 ++-- virtualshelves/sendshelf.pl | 2 +- virtualshelves/shelves.pl | 12 ++++++++---- 7 files changed, 24 insertions(+), 14 deletions(-) diff --git a/Koha/Virtualshelf.pm b/Koha/Virtualshelf.pm index a693eba..4e45c31 100644 --- a/Koha/Virtualshelf.pm +++ b/Koha/Virtualshelf.pm @@ -28,6 +28,7 @@ use Koha::Exceptions; use Koha::Virtualshelfshare; use Koha::Virtualshelfshares; use Koha::Virtualshelfcontent; +use Koha::Virtualshelfcontents; use base qw(Koha::Object); @@ -105,13 +106,15 @@ sub is_shelfname_valid { sub get_shares { my ( $self ) = @_; - my $shares = $self->{_result}->virtualshelfshares; + my $rs = $self->{_result}->virtualshelfshares; + my $shares = Koha::Virtualshelfshares->_new_from_dbic( $rs ); return $shares; } sub get_contents { my ( $self ) = @_; - my $contents = $self->{_result}->virtualshelfcontents; + my $rs = $self->{_result}->virtualshelfcontents; + my $contents = Koha::Virtualshelfcontents->_new_from_dbic( $rs ); return $contents; } diff --git a/opac/opac-downloadshelf.pl b/opac/opac-downloadshelf.pl index 1123f91..d26fca0 100755 --- a/opac/opac-downloadshelf.pl +++ b/opac/opac-downloadshelf.pl @@ -71,13 +71,13 @@ if ( $shelf and $shelf->can_be_viewed( $borrowernumber ) ) { if ($format =~ /^\d+$/) { my @biblios; while ( my $content = $contents->next ) { - push @biblios, $content->biblionumber->biblionumber; + push @biblios, $content->biblionumber; } $output = marc2csv(\@biblios, $format); # Other formats } else { while ( my $content = $contents->next ) { - my $biblionumber = $content->biblionumber->biblionumber; + my $biblionumber = $content->biblionumber; my $record = GetMarcBiblio($biblionumber, 1); next unless $record; diff --git a/opac/opac-sendshelf.pl b/opac/opac-sendshelf.pl index a0682bc..242caca 100755 --- a/opac/opac-sendshelf.pl +++ b/opac/opac-sendshelf.pl @@ -86,7 +86,7 @@ if ( $email ) { my @results; while ( my $content = $contents->next ) { - my $biblionumber = $content->biblionumber->biblionumber; + my $biblionumber = $content->biblionumber; my $fw = GetFrameworkCode($biblionumber); my $dat = GetBiblioData($biblionumber); my $record = GetMarcBiblio($biblionumber, 1); diff --git a/opac/opac-shelves.pl b/opac/opac-shelves.pl index 54d93a1..c2da03c 100755 --- a/opac/opac-shelves.pl +++ b/opac/opac-shelves.pl @@ -27,6 +27,8 @@ use C4::Members; use C4::Output; use C4::Tags qw( get_tags ); use C4::XSLT; + +use Koha::Biblioitems; use Koha::Virtualshelves; my $query = new CGI; @@ -255,7 +257,7 @@ if ( $op eq 'view' ) { my @items; while ( my $content = $contents->next ) { - my $biblionumber = $content->biblionumber->biblionumber; + my $biblionumber = $content->biblionumber; my $this_item = GetBiblioData($biblionumber); my $record = GetMarcBiblio($biblionumber); @@ -265,7 +267,8 @@ if ( $op eq 'view' ) { } my $marcflavour = C4::Context->preference("marcflavour"); - my $itemtypeinfo = getitemtypeinfo( $content->biblionumber->biblioitems->first->itemtype, 'opac' ); + my $itemtype = Koha::Biblioitems->search({ biblionumber => $content->biblionumber })->next->itemtype; + my $itemtypeinfo = getitemtypeinfo( $itemtype, 'opac' ); $this_item->{imageurl} = $itemtypeinfo->{imageurl}; $this_item->{description} = $itemtypeinfo->{description}; $this_item->{notforloan} = $itemtypeinfo->{notforloan}; diff --git a/virtualshelves/downloadshelf.pl b/virtualshelves/downloadshelf.pl index d988161..5a9f440 100755 --- a/virtualshelves/downloadshelf.pl +++ b/virtualshelves/downloadshelf.pl @@ -64,13 +64,13 @@ if ($shelfid && $format) { if ($format =~ /^\d+$/) { my @biblios; while ( my $content = $contents->next ) { - push @biblios, $content->biblionumber->biblionumber; + push @biblios, $content->biblionumber; } $output = marc2csv(\@biblios, $format); } else { #Other formats while ( my $content = $contents->next ) { - my $biblionumber = $content->biblionumber->biblionumber; + my $biblionumber = $content->biblionumber; my $record = GetMarcBiblio($biblionumber, 1); if ($format eq 'iso2709') { $output .= $record->as_usmarc(); diff --git a/virtualshelves/sendshelf.pl b/virtualshelves/sendshelf.pl index 02999ea..1226d3e 100755 --- a/virtualshelves/sendshelf.pl +++ b/virtualshelves/sendshelf.pl @@ -77,7 +77,7 @@ if ($email) { my @results; while ( my $content = $contents->next ) { - my $biblionumber = $content->biblionumber->biblionumber; + my $biblionumber = $content->biblionumber; my $fw = GetFrameworkCode($biblionumber); my $dat = GetBiblioData($biblionumber); my $record = GetMarcBiblio($biblionumber, 1); diff --git a/virtualshelves/shelves.pl b/virtualshelves/shelves.pl index 100af44..3ebefe4 100755 --- a/virtualshelves/shelves.pl +++ b/virtualshelves/shelves.pl @@ -27,6 +27,8 @@ use C4::Members; use C4::Output; use C4::XSLT; +use Koha::Biblios; +use Koha::Biblioitems; use Koha::CsvProfiles; use Koha::Virtualshelves; @@ -223,7 +225,7 @@ if ( $op eq 'view' ) { my @items; while ( my $content = $contents->next ) { my $this_item; - my $biblionumber = $content->biblionumber->biblionumber; + my $biblionumber = $content->biblionumber; my $record = GetMarcBiblio($biblionumber); if ( $xslfile ) { @@ -232,9 +234,11 @@ if ( $op eq 'view' ) { } my $marcflavour = C4::Context->preference("marcflavour"); - my $itemtypeinfo = getitemtypeinfo( $content->biblionumber->biblioitems->first->itemtype, 'intranet' ); - $this_item->{title} = $content->biblionumber->title; - $this_item->{author} = $content->biblionumber->author; + my $itemtype = Koha::Biblioitems->search({ biblionumber => $content->biblionumber })->next->itemtype; + my $itemtypeinfo = getitemtypeinfo( $itemtype, 'intranet' ); + my $biblio = Koha::Biblios->find( $content->biblionumber ); + $this_item->{title} = $biblio->title; + $this_item->{author} = $biblio->author; $this_item->{dateadded} = $content->dateadded; $this_item->{imageurl} = $itemtypeinfo->{imageurl}; $this_item->{description} = $itemtypeinfo->{description}; -- 2.1.4