Bug 24201: (follow-up) Use GetLoggedInDeskName
[koha-equinox.git] / Koha / Template / Plugin / Desks.pm
1 package Koha::Template::Plugin::Desks;
2
3 # Copyright (C) BULAC 2020
4
5 # This file is part of Koha.
6 #
7 # Koha is free software; you can redistribute it and/or modify it
8 # under the terms of the GNU General Public License as published by
9 # the Free Software Foundation; either version 3 of the License, or
10 # (at your option) any later version.
11 #
12 # Koha is distributed in the hope that it will be useful, but
13 # WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 # GNU General Public License for more details.
16 #
17 # You should have received a copy of the GNU General Public License
18 # along with Koha; if not, see <http://www.gnu.org/licenses>.
19
20 use Modern::Perl;
21
22 use Template::Plugin;
23 use base qw( Template::Plugin );
24
25 use C4::Koha;
26 use C4::Context;
27 use Koha::Desks;
28
29 =head1 NAME
30
31 Koha::Template::Plugin::Desks - A module for dealing with desks in templates
32
33 =head1 DESCRIPTION
34
35 This plugin contains getters functions, to fetch all desks a library
36 got or the current one.
37
38 =head2 Methods
39
40 =head3 GetName
41
42 [% Desk.GetName(desk_id) %]
43
44 return desk name or empty string
45
46 =cut
47
48 sub GetName {
49     my ( $self, $desk_id ) = @_;
50     my $d = Koha::Desks->search( { desk_id => $desk_id} )->unblessed;
51     return @$d ? $d->{'desk_name'} : q{};
52 }
53
54 =head3 GetLoggedInDeskId
55
56 [% Desks.GetLoggedInDeskId %]
57
58 return the desk name that is attached to the session or empty string
59
60 =cut
61
62 sub GetLoggedInDeskId {
63     my ($self) = @_;
64
65     return C4::Context->userenv ?
66         C4::Context->userenv->{'desk_id'} :
67         '';
68 }
69
70 =head3 GetLoggedInDeskName
71
72 [% Desks.GetLoggedInDeskName %]
73
74 Return the desk name that is attached to the session or empty string
75
76 =cut
77
78 sub GetLoggedInDeskName {
79     my ($self) = @_;
80
81     return C4::Context->userenv ?
82         C4::Context->userenv->{'desk_name'} :
83         '';
84 }
85
86 =head3 all
87
88 [% Desks.all %]
89
90 returns all desks existing at the library
91
92 =cut
93
94 sub all {
95     my ( $self, $params ) = @_;
96     my $selected = $params->{selected};
97     my $unfiltered = $params->{unfiltered} || 0;
98     my $search_params = $params->{search_params} || {};
99
100     if ( !$unfiltered ) {
101         $search_params->{only_from_group} = $params->{only_from_group} || 0;
102     }
103
104     my $desks = $unfiltered
105       ? Koha::Desks->search( $search_params, { order_by => ['desk_name'] } )->unblessed
106       : Koha::Desks->search_filtered( $search_params, { order_by => ['desk_name'] } )->unblessed;
107
108     for my $d ( @$desks ) {
109         if (       defined $selected and $d->{desk_id} eq $selected
110             or not defined $selected and C4::Context->userenv and $d->{branchcode} eq ( C4::Context->userenv->{desk_id} // q{} )
111         ) {
112             $d->{selected} = 1;
113         }
114     }
115
116     return $desks;
117 }
118
119 =head3 defined
120
121 [% Desks.defined %]
122
123 return 1 if there is at least a desk defined for the library.
124
125 =cut
126
127 sub defined {
128     my ( $self ) = @_;
129     my $desks = Koha::Desks->search()->unblessed;
130     if (@$desks) {
131         return 1 ;
132     }
133     else {
134         return 0;
135     }
136 }
137
138 1;