@@ -, +, @@ [opac-]addbybiblionumbers.pl --- opac/opac-addbybiblionumber.pl | 239 +++++++++++++++--------------------- virtualshelves/addbybiblionumber.pl | 210 +++++++++++++------------------ 2 files changed, 185 insertions(+), 264 deletions(-) --- a/opac/opac-addbybiblionumber.pl +++ a/opac/opac-addbybiblionumber.pl @@ -1,8 +1,7 @@ #!/usr/bin/perl -#script to provide virtualshelf management -# # Copyright 2000-2002 Katipo Communications +# Copyright 2016 Koha Development Team # # This file is part of Koha. # @@ -19,8 +18,7 @@ # You should have received a copy of the GNU General Public License # along with Koha; if not, see . -use strict; -use warnings; +use Modern::Perl; use CGI qw ( -utf8 ); use C4::Biblio; @@ -29,180 +27,139 @@ use C4::Auth; use Koha::Virtualshelves; -our $query = new CGI; -our @biblionumber = $query->param('biblionumber'); -our $selectedshelf = $query->param('selectedshelf'); -our $newshelf = $query->param('newshelf'); -our $shelfnumber = $query->param('shelfnumber'); -our $newvirtualshelf = $query->param('newvirtualshelf'); -our $category = $query->param('category'); -our $authorized = 1; -our $errcode = 0; -our @biblios = (); +my $query = new CGI; +my @biblionumbers = $query->multi_param('biblionumber'); +my $selectedshelf = $query->param('selectedshelf'); +my $newshelf = $query->param('newshelf'); +my $shelfnumber = $query->param('shelfnumber'); +my $newvirtualshelf = $query->param('newvirtualshelf'); +my $category = $query->param('category'); +my ( $errcode, $authorized ) = ( 0, 1 ); +my @biblios; # if virtualshelves is disabled, leave immediately -if ( ! C4::Context->preference('virtualshelves') ) { +if ( !C4::Context->preference('virtualshelves') ) { print $query->redirect("/cgi-bin/koha/errors/404.pl"); exit; } -if (scalar(@biblionumber) == 1) { - @biblionumber = (split /\//,$biblionumber[0]); +if ( scalar(@biblionumbers) == 1 ) { + @biblionumbers = ( split /\//, $biblionumbers[0] ); } -our ( $template, $loggedinuser, $cookie ) = get_template_and_user( - { - template_name => "opac-addbybiblionumber.tt", +my ( $template, $loggedinuser, $cookie ) = get_template_and_user( + { template_name => "opac-addbybiblionumber.tt", query => $query, type => "opac", authnotrequired => 0, } ); -if( $newvirtualshelf) { - HandleNewVirtualShelf(); - exit if $authorized; - ShowTemplate(); #error message -} -elsif($shelfnumber) { - HandleShelfNumber(); - exit if $authorized; - ShowTemplate(); #error message -} -elsif($selectedshelf) { - HandleSelectedShelf(); - LoadBib() if $authorized; - ShowTemplate(); -} -else { - HandleSelect(); - LoadBib() if $authorized; - ShowTemplate(); -} -#end - -sub HandleNewVirtualShelf { - if ( $loggedinuser > 0 and - ( - $category == 1 - or $category == 2 and $loggedinuser>0 && C4::Context->preference('OpacAllowPublicListCreation') - ) - ) { - my $shelf = eval { - Koha::Virtualshelf->new( - { - shelfname => $newvirtualshelf, - category => $category, - owner => $loggedinuser, - } - )->store; - }; +if ($newvirtualshelf) { + if ($loggedinuser > 0 + and ( $category == 1 + or $category == 2 and $loggedinuser > 0 && C4::Context->preference('OpacAllowPublicListCreation') ) + ) { + my $shelf = eval { Koha::Virtualshelf->new( { shelfname => $newvirtualshelf, category => $category, owner => $loggedinuser, } )->store; }; if ( $@ or not $shelf ) { + $errcode = 1; $authorized = 0; - $errcode = 1; - return; - } + } else { + for my $biblionumber (@biblionumbers) { + $shelf->add_biblio( $biblionumber, $loggedinuser ); + } - for my $bib (@biblionumber) { - $shelf->add_biblio( $bib, $loggedinuser ); + #Reload the page where you came from + print $query->header; + print ""; + exit; } - - #Reload the page where you came from - print $query->header; - print ""; } -} - -sub HandleShelfNumber { +} elsif ($shelfnumber) { my $shelfnumber = $query->param('shelfnumber'); - my $shelf = Koha::Virtualshelves->find( $shelfnumber ); - if ( $shelf->can_biblios_be_added( $loggedinuser ) ) { - for my $bib (@biblionumber) { - $shelf->add_biblio( $bib, $loggedinuser ); + my $shelf = Koha::Virtualshelves->find($shelfnumber); + if ( $shelf->can_biblios_be_added($loggedinuser) ) { + for my $biblionumber (@biblionumbers) { + $shelf->add_biblio( $biblionumber, $loggedinuser ); } + #Close this page and return print $query->header; print ""; + exit; } else { - # TODO + $authorized = 0; } -} - -sub HandleSelectedShelf { +} elsif ($selectedshelf) { my $shelfnumber = $query->param('selectedshelf'); - my $shelf = Koha::Virtualshelves->find( $shelfnumber ); - if ( $shelf->can_biblios_be_added( $loggedinuser ) ) { + my $shelf = Koha::Virtualshelves->find($shelfnumber); + if ( $shelf->can_biblios_be_added($loggedinuser) ) { + $template->param( + singleshelf => 1, + shelfnumber => $shelf->shelfnumber, + shelfname => $shelf->shelfname, + ); + } else { + $authorized = 0; + } +} else { + if ( $loggedinuser > 0 ) { + my $private_shelves = Koha::Virtualshelves->search( + { category => 1, + owner => $loggedinuser, + }, + { order_by => 'shelfname' } + ); + my $shelves_shared_with_me = Koha::Virtualshelves->search( + { category => 1, + 'virtualshelfshares.borrowernumber' => $loggedinuser, + -or => { + allow_add => 1, + owner => $loggedinuser, + } + }, + { join => 'virtualshelfshares', } + ); + my $public_shelves = Koha::Virtualshelves->search( + { category => 2, + -or => { + allow_add => 1, + owner => $loggedinuser, + } + }, + { order_by => 'shelfname' } + ); $template->param( - singleshelf => 1, - shelfnumber => $shelf->shelfnumber, - shelfname => $shelf->shelfname, + private_shelves => $private_shelves, + private_shelves_shared_with_me => $shelves_shared_with_me, + public_shelves => $public_shelves, ); } else { - # TODO + $authorized = 0; } } -sub HandleSelect { - return unless $authorized= $loggedinuser>0; - my $private_shelves = Koha::Virtualshelves->search( - { - category => 1, - owner => $loggedinuser, - }, - { order_by => 'shelfname' } - ); - my $shelves_shared_with_me = Koha::Virtualshelves->search( - { - category => 1, - 'virtualshelfshares.borrowernumber' => $loggedinuser, - -or => { - allow_add => 1, - owner => $loggedinuser, - } - }, - { - join => 'virtualshelfshares', - } - ); - my $public_shelves= Koha::Virtualshelves->search( - { - category => 2, - -or => { - allow_add => 1, - owner => $loggedinuser, +if ($authorized) { + for my $biblionumber (@biblionumbers) { + my $data = GetBiblioData($biblionumber); + push( + @biblios, + { biblionumber => $biblionumber, + title => $data->{'title'}, + author => $data->{'author'}, } - }, - { order_by => 'shelfname' } - ); - $template->param ( - private_shelves => $private_shelves, - private_shelves_shared_with_me => $shelves_shared_with_me, - public_shelves => $public_shelves, - ); -} - -sub LoadBib { - for my $bib (@biblionumber) { - my $data = GetBiblioData( $bib ); - push(@biblios, - { biblionumber => $bib, - title => $data->{'title'}, - author => $data->{'author'}, - } ); + ); } $template->param( - multiple => (scalar(@biblios) > 1), - total => scalar @biblios, - biblios => \@biblios, + multiple => ( scalar(@biblios) > 1 ), + total => scalar @biblios, + biblios => \@biblios, ); -} -sub ShowTemplate { - $template->param ( - newshelf => $newshelf||0, - authorized => $authorized, - errcode => $errcode, - OpacAllowPublicListCreation => C4::Context->preference('OpacAllowPublicListCreation'), + $template->param( + newshelf => $newshelf || 0, + OpacAllowPublicListCreation => C4::Context->preference('OpacAllowPublicListCreation'), ); - output_html_with_http_headers $query, $cookie, $template->output; } +$template->param( authorized => $authorized, errcode => $errcode, ); +output_html_with_http_headers $query, $cookie, $template->output; --- a/virtualshelves/addbybiblionumber.pl +++ a/virtualshelves/addbybiblionumber.pl @@ -1,9 +1,7 @@ #!/usr/bin/perl -#script to provide virtual shelf management -# -# # Copyright 2000-2002 Katipo Communications +# Copyright 2016 Koha Development Team # # This file is part of Koha. # @@ -58,8 +56,7 @@ addbybiblionumber.pl =cut -use strict; -use warnings; +use Modern::Perl; use CGI qw ( -utf8 ); use C4::Biblio; @@ -68,20 +65,25 @@ use C4::Auth; use Koha::Virtualshelves; -our $query = new CGI; -our @biblionumber = HandleBiblioPars(); -our $shelfnumber = $query->param('shelfnumber'); -our $newvirtualshelf = $query->param('newvirtualshelf'); -our $newshelf = $query->param('newshelf'); -our $category = $query->param('category'); -our $sortfield = $query->param('sortfield'); +my $query = new CGI; +my $shelfnumber = $query->param('shelfnumber'); +my $newvirtualshelf = $query->param('newvirtualshelf'); +my $newshelf = $query->param('newshelf'); +my $category = $query->param('category'); +my $sortfield = $query->param('sortfield'); my $confirmed = $query->param('confirmed') || 0; -our $authorized = 1; -our $errcode = 0; +my ( $errcode, $authorized ) = ( 0, 1 ); +my @biblionumbers = $query->multi_param('biblionumber'); + +if ( @biblionumbers == 0 && $query->param('biblionumbers') ) { + my $str = $query->param('biblionumbers'); + @biblionumbers = split '/', $str; +} elsif ( @biblionumbers == 1 && $biblionumbers[0] =~ /\// ) { + @biblionumbers = split '/', $biblionumbers[0]; +} -our ( $template, $loggedinuser, $cookie ) = get_template_and_user( - { - template_name => "virtualshelves/addbybiblionumber.tt", +my ( $template, $loggedinuser, $cookie ) = get_template_and_user( + { template_name => "virtualshelves/addbybiblionumber.tt", query => $query, type => "intranet", authnotrequired => 0, @@ -89,155 +91,117 @@ our ( $template, $loggedinuser, $cookie ) = get_template_and_user( } ); -if( $newvirtualshelf) { - HandleNewVirtualShelf(); - exit if $authorized; - ShowTemplate(); #error message -} -elsif($shelfnumber && $confirmed) { - HandleShelfNumber(); - exit if $authorized; - ShowTemplate(); #error message -} -elsif($shelfnumber) { #still needs confirmation - HandleSelectedShelf(); - LoadBib() if $authorized; - ShowTemplate(); -} -else { - HandleSelect(); - LoadBib(); - ShowTemplate(); -} -#end - -sub HandleBiblioPars { - my @bib= $query->multi_param('biblionumber'); - if(@bib==0 && $query->param('biblionumbers')) { - my $str= $query->param('biblionumbers'); - @bib= split '/', $str; - } - elsif(@bib==1 && $bib[0]=~/\//) { - @bib= split '/', $bib[0]; - } - return @bib; -} - -sub HandleNewVirtualShelf { +if ($newvirtualshelf) { my $shelf = eval { Koha::Virtualshelf->new( { shelfname => $newvirtualshelf, - category => $category, + category => $category, sortfield => $sortfield, - owner => $loggedinuser, + owner => $loggedinuser, } )->store; }; if ( $@ or not $shelf ) { - $authorized = 0; $errcode = 1; - return; - } + $authorized = 0; + } else { + + for my $biblionumber (@biblionumbers) { + $shelf->add_biblio( $biblionumber, $loggedinuser ); + } - for my $bib (@biblionumber){ - $shelf->add_biblio( $bib, $loggedinuser ); + #Reload the page where you came from + print $query->header; + print ""; + exit; } - #Reload the page where you came from - print $query->header; - print ""; -} -sub HandleShelfNumber { - my $shelf = Koha::Virtualshelves->find( $shelfnumber ); - if($authorized = $shelf->can_biblios_be_added( $loggedinuser ) ) { - for my $bib (@biblionumber){ - $shelf->add_biblio( $bib, $loggedinuser ); +} elsif ( $shelfnumber && $confirmed ) { + my $shelf = Koha::Virtualshelves->find($shelfnumber); + if ( $shelf->can_biblios_be_added($loggedinuser) ) { + for my $biblionumber (@biblionumbers) { + $shelf->add_biblio( $biblionumber, $loggedinuser ); } + #Close this page and return print $query->header; print ""; + exit; + } else { + $errcode = 2; #no perm + $authorized = 0; } - else { - $errcode=2; #no perm - } -} -sub HandleSelectedShelf { - my $shelf = Koha::Virtualshelves->find( $shelfnumber ); - if($authorized = $shelf->can_biblios_be_added( $loggedinuser ) ) { +} elsif ($shelfnumber) { #still needs confirmation + my $shelf = Koha::Virtualshelves->find($shelfnumber); + if ( $shelf->can_biblios_be_added($loggedinuser) ) { + #confirm adding to specific shelf $template->param( - singleshelf => 1, - shelfnumber => $shelf->shelfnumber, - shelfname => $shelf->shelfname, + singleshelf => 1, + shelfnumber => $shelf->shelfnumber, + shelfname => $shelf->shelfname, ); + } else { + $authorized = 0; + $errcode = 2; #no perm } - else { - $errcode=2; #no perm - } -} -sub HandleSelect { +} else { my $private_shelves = Koha::Virtualshelves->search( - { - category => 1, - owner => $loggedinuser, + { category => 1, + owner => $loggedinuser, }, { order_by => 'shelfname' } ); my $shelves_shared_with_me = Koha::Virtualshelves->search( - { - category => 1, + { category => 1, 'virtualshelfshares.borrowernumber' => $loggedinuser, - -or => { + -or => { allow_add => 1, - owner => $loggedinuser, + owner => $loggedinuser, } }, - { - join => 'virtualshelfshares', - } + { join => 'virtualshelfshares', } ); - my $public_shelves= Koha::Virtualshelves->search( - { - category => 2, - -or => { + my $public_shelves = Koha::Virtualshelves->search( + { category => 2, + -or => { allow_add => 1, - owner => $loggedinuser, + owner => $loggedinuser, } }, { order_by => 'shelfname' } ); - $template->param ( - private_shelves => $private_shelves, + $template->param( + private_shelves => $private_shelves, private_shelves_shared_with_me => $shelves_shared_with_me, - public_shelves => $public_shelves, + public_shelves => $public_shelves, ); -} -sub LoadBib { - my @biblios; - for my $bib (@biblionumber) { - my $data = GetBiblioData($bib); - push(@biblios, - { biblionumber => $bib, - title => $data->{'title'}, - author => $data->{'author'}, - } ); - } - $template->param( - multiple => (scalar(@biblios) > 1), - total => scalar @biblios, - biblios => \@biblios, - ); } -sub ShowTemplate { - $template->param ( - newshelf => $newshelf||0, - authorized => $authorized, - errcode => $errcode, +my @biblios; +for my $biblionumber (@biblionumbers) { + my $data = GetBiblioData($biblionumber); + push( + @biblios, + { biblionumber => $biblionumber, + title => $data->{'title'}, + author => $data->{'author'}, + } ); - output_html_with_http_headers $query, $cookie, $template->output; } +$template->param( + multiple => ( scalar(@biblios) > 1 ), + total => scalar @biblios, + biblios => \@biblios, +); + +$template->param( + newshelf => $newshelf || 0, + authorized => $authorized, + errcode => $errcode, +); +output_html_with_http_headers $query, $cookie, $template->output; --