-}
-
-sub HandleSelect {
- return unless $authorized= $loggedinuser>0;
- my $privateshelves = GetAllShelves(1,$loggedinuser,1);
- if(@{$privateshelves}){
- $template->param (
- privatevirtualshelves => $privateshelves,
- existingshelves => 1
- );
- }
- my $publicshelves = GetAllShelves(2,$loggedinuser,1);
- if(@{$publicshelves}){
- $template->param (
- publicvirtualshelves => $publicshelves,
- existingshelves => 1
- );
+} else {
+ if ( $loggedinuser > 0 ) {
+ my $private_shelves = Koha::Virtualshelves->search(
+ { public => 0,
+ owner => $loggedinuser,
+ allow_change_from_owner => 1,
+ },
+ { order_by => 'shelfname' }
+ );
+ my $shelves_shared_with_me = Koha::Virtualshelves->search(
+ { public => 0,
+ 'virtualshelfshares.borrowernumber' => $loggedinuser,
+ allow_change_from_others => 1,
+ },
+ { join => 'virtualshelfshares', }
+ );
+ my $public_shelves = Koha::Virtualshelves->search(
+ { public => 1,
+ -or => [
+ -and => {
+ allow_change_from_owner => 1,
+ owner => $loggedinuser,
+ },
+ allow_change_from_others => 1,
+ ],
+ },
+ { order_by => 'shelfname' }
+ );
+ $template->param(
+ private_shelves => $private_shelves,
+ private_shelves_shared_with_me => $shelves_shared_with_me,
+ public_shelves => $public_shelves,
+ );
+ } else {
+ $authorized = 0;