3 #script to provide virtualshelf management
5 # Copyright 2000-2002 Katipo Communications
7 # This file is part of Koha.
9 # Koha is free software; you can redistribute it and/or modify it
10 # under the terms of the GNU General Public License as published by
11 # the Free Software Foundation; either version 3 of the License, or
12 # (at your option) any later version.
14 # Koha is distributed in the hope that it will be useful, but
15 # WITHOUT ANY WARRANTY; without even the implied warranty of
16 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 # GNU General Public License for more details.
19 # You should have received a copy of the GNU General Public License
20 # along with Koha; if not, see <http://www.gnu.org/licenses>.
27 use C4::VirtualShelves qw/:DEFAULT/;
31 use Koha::Virtualshelves;
34 our @biblionumber = $query->param('biblionumber');
35 our $selectedshelf = $query->param('selectedshelf');
36 our $newshelf = $query->param('newshelf');
37 our $shelfnumber = $query->param('shelfnumber');
38 our $newvirtualshelf = $query->param('newvirtualshelf');
39 our $category = $query->param('category');
44 our ( $template, $loggedinuser, $cookie ) = get_template_and_user(
46 template_name => "opac-addbybiblionumber.tt",
53 if( $newvirtualshelf) {
54 HandleNewVirtualShelf();
56 ShowTemplate(); #error message
61 ShowTemplate(); #error message
63 elsif($selectedshelf) {
64 HandleSelectedShelf();
65 LoadBib() if $authorized;
70 LoadBib() if $authorized;
75 sub AddBibliosToShelf {
76 #splits incoming biblionumber(s) to array and adds each to shelf.
77 my ($shelfnumber,@biblionumber)=@_;
79 #multiple bibs might come in as '/' delimited string (from where, i don't see), or as array.
80 if (scalar(@biblionumber) == 1) {
81 @biblionumber = (split /\//,$biblionumber[0]);
83 for my $bib (@biblionumber) {
84 my $shelf = Koha::Virtualshelves->find( $shelfnumber );
85 $shelf->add_biblio( $bib, $loggedinuser );
89 sub HandleNewVirtualShelf {
90 if ( $loggedinuser > 0 and
93 or $category == 2 and $loggedinuser>0 && C4::Context->preference('OpacAllowPublicListCreation')
97 Koha::Virtualshelf->new(
99 shelfname => $newvirtualshelf,
100 category => $category,
101 owner => $loggedinuser,
105 if ( $@ or not $shelf ) {
110 AddBibliosToShelf($shelfnumber, @biblionumber);
111 #Reload the page where you came from
112 print $query->header;
113 print "<html><meta http-equiv=\"refresh\" content=\"0\" /><body onload=\"window.opener.location.reload(true);self.close();\"></body></html>";
117 sub HandleShelfNumber {
118 my $shelfnumber = $query->param('shelfnumber');
119 my $shelf = Koha::Virtualshelves->find( $shelfnumber );
120 if ( $shelf->can_biblios_be_added( $loggedinuser ) ) {
121 AddBibliosToShelf($shelfnumber,@biblionumber);
122 #Close this page and return
123 print $query->header;
124 print "<html><meta http-equiv=\"refresh\" content=\"0\" /><body onload=\"self.close();\"></body></html>";
130 sub HandleSelectedShelf {
131 my $shelfnumber = $query->param('selectedshelf');
132 my $shelf = Koha::Virtualshelves->find( $shelfnumber );
133 if ( $shelf->can_biblios_be_added( $loggedinuser ) ) {
136 shelfnumber => $shelf->shelfnumber,
137 shelfname => $shelf->shelfname,
145 return unless $authorized= $loggedinuser>0;
146 my $private_shelves = Koha::Virtualshelves->search(
149 owner => $loggedinuser,
151 { order_by => 'shelfname' }
153 my $shelves_shared_with_me = Koha::Virtualshelves->search(
156 'virtualshelfshares.borrowernumber' => $loggedinuser,
159 owner => $loggedinuser,
163 join => 'virtualshelfshares',
166 my $public_shelves= Koha::Virtualshelves->search(
171 owner => $loggedinuser,
174 { order_by => 'shelfname' }
177 private_shelves => $private_shelves,
178 private_shelves_shared_with_me => $shelves_shared_with_me,
179 public_shelves => $public_shelves,
184 #see comment in AddBibliosToShelf
185 if (scalar(@biblionumber) == 1) {
186 @biblionumber = (split /\//,$biblionumber[0]);
188 for my $bib (@biblionumber) {
189 my $data = GetBiblioData( $bib );
191 { biblionumber => $bib,
192 title => $data->{'title'},
193 author => $data->{'author'},
197 multiple => (scalar(@biblios) > 1),
198 total => scalar @biblios,
199 biblios => \@biblios,
205 newshelf => $newshelf||0,
206 authorized => $authorized,
208 OpacAllowPublicListCreation => C4::Context->preference('OpacAllowPublicListCreation'),
210 output_html_with_http_headers $query, $cookie, $template->output;