View | Details | Raw Unified | Return to bug 15407
Collapse All | Expand All

(-)a/C4/Category.pm (-181 lines)
Lines 1-181 Link Here
1
package C4::Category;
2
3
# Copyright 2009 Liblime
4
# Parts Copyright 2011 Tamil
5
#
6
# This file is part of Koha.
7
#
8
# Koha is free software; you can redistribute it and/or modify it
9
# under the terms of the GNU General Public License as published by
10
# the Free Software Foundation; either version 3 of the License, or
11
# (at your option) any later version.
12
#
13
# Koha is distributed in the hope that it will be useful, but
14
# WITHOUT ANY WARRANTY; without even the implied warranty of
15
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
# GNU General Public License for more details.
17
#
18
# You should have received a copy of the GNU General Public License
19
# along with Koha; if not, see <http://www.gnu.org/licenses>.
20
21
use strict;
22
use warnings;
23
use C4::Context;
24
25
our $AUTOLOAD;
26
27
28
29
30
=head1 NAME
31
32
C4::Category - objects from the categories table
33
34
=head1 SYNOPSIS
35
36
    use C4::Category;
37
    my @categories = C4::Category->all;
38
    print join("\n", map { $_->description } @categories), "\n";
39
40
=head1 DESCRIPTION
41
42
Objects of this class represent a row in the C<categories> table.
43
44
Currently, the bare minimum for using this as a read-only data source has
45
been implemented.  The API was designed to make it easy to transition to
46
an ORM later on.
47
48
=head1 API
49
50
=head2 Class Methods
51
52
=cut
53
54
=head3 C4::Category->new(\%opts)
55
56
Given a hashref, a new (in-memory) C4::Category object will be instantiated.
57
The database is not touched.
58
59
=cut
60
61
sub new {
62
    my ($class, $opts) = @_;
63
    bless $opts => $class;
64
}
65
66
67
68
69
=head3 C4::Category->all
70
71
This returns all the categories as objects.  By default they're ordered by
72
C<description>.
73
74
=cut
75
76
sub all {
77
    my ( $class ) = @_;
78
    my $branch_limit = C4::Context->userenv ? C4::Context->userenv->{"branch"} : "";
79
    my $dbh = C4::Context->dbh;
80
    # The categories table is small enough for
81
    # `SELECT *` to be harmless.
82
    my $query = "SELECT categories.* FROM categories";
83
    $query .= qq{
84
        LEFT JOIN categories_branches ON categories_branches.categorycode = categories.categorycode
85
        WHERE categories_branches.branchcode = ? OR categories_branches.branchcode IS NULL
86
    } if $branch_limit;
87
    $query .= " ORDER BY description";
88
    return map { $class->new($_) } @{
89
        $dbh->selectall_arrayref(
90
            $query,
91
            { Slice => {} },
92
            $branch_limit ? $branch_limit : ()
93
        )
94
    };
95
}
96
97
98
99
100
=head2 Object Methods
101
102
These are read-only accessors for attributes of a C4::Category object.
103
104
=head3 $category->categorycode
105
106
=cut
107
108
=head3 $category->description
109
110
=cut
111
112
=head3 $category->enrolmentperiod
113
114
=cut
115
116
=head3 $category->upperagelimit
117
118
=cut
119
120
=head3 $category->dateofbirthrequired
121
122
=cut
123
124
=head3 $category->finetype
125
126
=cut
127
128
=head3 $category->bulk
129
130
=cut
131
132
=head3 $category->enrolmentfee
133
134
=cut
135
136
=head3 $category->overduenoticerequired
137
138
=cut
139
140
=head3 $category->issuelimit
141
142
=cut
143
144
=head3 $category->reservefee
145
146
=cut
147
148
=head3 $category->category_type
149
150
=cut
151
152
sub AUTOLOAD {
153
    my $self = shift;
154
    my $attr = $AUTOLOAD;
155
    $attr =~ s/.*://;
156
    if (exists $self->{$attr}) {
157
        return $self->{$attr};
158
    } else {
159
        return undef;
160
    }
161
}
162
163
sub DESTROY { }
164
165
166
167
168
=head1 SEE ALSO
169
170
The following modules make reference to the C<categories> table.
171
172
L<C4::Members>, L<C4::Overdues>, L<C4::Reserves>
173
174
175
=head1 AUTHOR
176
177
John Beppu <john.beppu@liblime.com>
178
179
=cut
180
181
1;
(-)a/C4/ItemCirculationAlertPreference.pm (-2 / +2 lines)
Lines 20-29 package C4::ItemCirculationAlertPreference; Link Here
20
use strict;
20
use strict;
21
use warnings;
21
use warnings;
22
use C4::Context;
22
use C4::Context;
23
use C4::Category;
24
use Carp qw(carp croak);
23
use Carp qw(carp croak);
25
24
26
use Koha::ItemTypes;
25
use Koha::ItemTypes;
26
use Koha::Patron::Categories;
27
27
28
our $AUTOLOAD;
28
our $AUTOLOAD;
29
29
Lines 331-337 sub grid { Link Here
331
    my ($class, $where) = @_;
331
    my ($class, $where) = @_;
332
    my @branch_prefs = $class->find($where);
332
    my @branch_prefs = $class->find($where);
333
    my @default_prefs = $class->find({ branchcode => '*', notification => $where->{notification} });
333
    my @default_prefs = $class->find({ branchcode => '*', notification => $where->{notification} });
334
    my @cc = C4::Category->all;
334
    my @cc = Koha::Patron::Categories->search_limited;
335
    my @it = Koha::ItemTypes->search;
335
    my @it = Koha::ItemTypes->search;
336
    my $notification = $where->{notification};
336
    my $notification = $where->{notification};
337
    my %disabled = map {
337
    my %disabled = map {
(-)a/Koha/Patron/Categories.pm (+15 lines)
Lines 19-24 use Modern::Perl; Link Here
19
19
20
use Carp;
20
use Carp;
21
21
22
use C4::Context; # Sigh...
23
22
use Koha::Database;
24
use Koha::Database;
23
25
24
use Koha::Patron::Category;
26
use Koha::Patron::Category;
Lines 35-40 Koha::Patron::Categories - Koha Patron Category Object set class Link Here
35
37
36
=cut
38
=cut
37
39
40
sub search_limited {
41
    my ( $self ) = @_;
42
    my $branch_limit = C4::Context->userenv ? C4::Context->userenv->{"branch"} : "";
43
    return $self->search({}, {order_by => ['description']}) unless $branch_limit;
44
    return $self->search({
45
        'categories_branches.branchcode' => [$branch_limit, undef]},
46
        {
47
            join => 'categories_branches',
48
            order_by => ['description'],
49
        }
50
    );
51
}
52
38
=head3 type
53
=head3 type
39
54
40
=cut
55
=cut
(-)a/Koha/Template/Plugin/Categories.pm (-19 / +1 lines)
Lines 20-47 use Modern::Perl; Link Here
20
use Template::Plugin;
20
use Template::Plugin;
21
use base qw( Template::Plugin );
21
use base qw( Template::Plugin );
22
22
23
use C4::Category;
24
use Koha::Patron::Categories;
23
use Koha::Patron::Categories;
25
24
26
sub GetName {
27
    my ( $self, $categorycode ) = @_;
28
29
    return Koha::Patron::Categories->find( $categorycode )->description;
30
}
31
32
sub all {
25
sub all {
33
    my ( $self, $params ) = @_;
26
    return Koha::Patron::Categories->search_limited;
34
    my $selected = $params->{selected};
35
36
    my @categories = C4::Category->all;
37
    if ( $selected ) {
38
        for my $category ( @categories ) {
39
            if ( $category->{categorycode} eq $selected ) {
40
                $category->{selected} = 1;
41
            }
42
        }
43
    }
44
    return @categories;
45
}
27
}
46
28
47
1;
29
1;
(-)a/acqui/add_user_search.pl (-2 / +4 lines)
Lines 22-31 use Modern::Perl; Link Here
22
use CGI qw ( -utf8 );
22
use CGI qw ( -utf8 );
23
use C4::Auth;
23
use C4::Auth;
24
use C4::Branch qw( GetBranches );
24
use C4::Branch qw( GetBranches );
25
use C4::Category;
26
use C4::Output;
25
use C4::Output;
27
use C4::Members;
26
use C4::Members;
28
27
28
use Koha::Patron::Categories;
29
29
my $input = new CGI;
30
my $input = new CGI;
30
31
31
my $dbh = C4::Context->dbh;
32
my $dbh = C4::Context->dbh;
Lines 54-59 my $search_patrons_with_acq_perm_only = Link Here
54
my $onlymine = C4::Branch::onlymine;
55
my $onlymine = C4::Branch::onlymine;
55
my $branches = C4::Branch::GetBranches( $onlymine );
56
my $branches = C4::Branch::GetBranches( $onlymine );
56
57
58
my $patron_categories = Koha::Patron::Categories->search_limited;
57
$template->param(
59
$template->param(
58
    patrons_with_acq_perm_only => $search_patrons_with_acq_perm_only,
60
    patrons_with_acq_perm_only => $search_patrons_with_acq_perm_only,
59
    view => ( $input->request_method() eq "GET" ) ? "show_form" : "show_results",
61
    view => ( $input->request_method() eq "GET" ) ? "show_form" : "show_results",
Lines 61-67 $template->param( Link Here
61
    json_template => 'acqui/tables/members_results.tt',
63
    json_template => 'acqui/tables/members_results.tt',
62
    selection_type => 'add',
64
    selection_type => 'add',
63
    alphabet        => ( C4::Context->preference('alphabet') || join ' ', 'A' .. 'Z' ),
65
    alphabet        => ( C4::Context->preference('alphabet') || join ' ', 'A' .. 'Z' ),
64
    categories      => [ C4::Category->all ],
66
    categories      => $patron_categories,
65
    branches        => [ map { { branchcode => $_->{branchcode}, branchname => $_->{branchname} } } values %$branches ],
67
    branches        => [ map { { branchcode => $_->{branchcode}, branchname => $_->{branchname} } } values %$branches ],
66
    aaSorting       => 1,
68
    aaSorting       => 1,
67
);
69
);
(-)a/admin/add_user_search.pl (-2 / +4 lines)
Lines 22-31 use Modern::Perl; Link Here
22
use CGI qw ( -utf8 );
22
use CGI qw ( -utf8 );
23
use C4::Auth;
23
use C4::Auth;
24
use C4::Branch qw( GetBranches );
24
use C4::Branch qw( GetBranches );
25
use C4::Category;
26
use C4::Output;
25
use C4::Output;
27
use C4::Members;
26
use C4::Members;
28
27
28
use Koha::Patron::Categories;
29
29
my $input = new CGI;
30
my $input = new CGI;
30
31
31
my $dbh = C4::Context->dbh;
32
my $dbh = C4::Context->dbh;
Lines 55-60 my $search_patrons_with_acq_perm_only = Link Here
55
my $onlymine = C4::Branch::onlymine;
56
my $onlymine = C4::Branch::onlymine;
56
my $branches = C4::Branch::GetBranches( $onlymine );
57
my $branches = C4::Branch::GetBranches( $onlymine );
57
58
59
my $patron_categories = Koha::Patron::Categories->search_limited;
58
$template->param(
60
$template->param(
59
    patrons_with_acq_perm_only => $search_patrons_with_acq_perm_only,
61
    patrons_with_acq_perm_only => $search_patrons_with_acq_perm_only,
60
    view => ( $input->request_method() eq "GET" ) ? "show_form" : "show_results",
62
    view => ( $input->request_method() eq "GET" ) ? "show_form" : "show_results",
Lines 62-68 $template->param( Link Here
62
    json_template => 'acqui/tables/members_results.tt',
64
    json_template => 'acqui/tables/members_results.tt',
63
    selection_type => $selection_type,
65
    selection_type => $selection_type,
64
    alphabet        => ( C4::Context->preference('alphabet') || join ' ', 'A' .. 'Z' ),
66
    alphabet        => ( C4::Context->preference('alphabet') || join ' ', 'A' .. 'Z' ),
65
    categories      => [ C4::Category->all ],
67
    categories      => $patron_categories,
66
    branches        => [ map { { branchcode => $_->{branchcode}, branchname => $_->{branchname} } } values %$branches ],
68
    branches        => [ map { { branchcode => $_->{branchcode}, branchname => $_->{branchname} } } values %$branches ],
67
    aaSorting       => 1,
69
    aaSorting       => 1,
68
);
70
);
(-)a/admin/item_circulation_alerts.pl (-4 / +2 lines)
Lines 27-37 use JSON; Link Here
27
use C4::Auth;
27
use C4::Auth;
28
use C4::Context;
28
use C4::Context;
29
use C4::Branch;
29
use C4::Branch;
30
use C4::Category;
31
use C4::ItemCirculationAlertPreference;
30
use C4::ItemCirculationAlertPreference;
32
use C4::Output;
31
use C4::Output;
33
32
34
use Koha::ItemTypes;
33
use Koha::ItemTypes;
34
use Koha::Patron::Categories;
35
35
36
# shortcut for long package name
36
# shortcut for long package name
37
our $preferences = 'C4::ItemCirculationAlertPreference';
37
our $preferences = 'C4::ItemCirculationAlertPreference';
Lines 65-73 sub show { Link Here
65
    }
65
    }
66
    my $branch_name = exists($br->{$branch}) && $br->{$branch}->{branchname};
66
    my $branch_name = exists($br->{$branch}) && $br->{$branch}->{branchname};
67
67
68
    my @categories = (
68
    my @categories = Koha::Patron::Categories->search_limited;
69
        C4::Category->all
70
    );
71
    my @item_types = Koha::ItemTypes->search;
69
    my @item_types = Koha::ItemTypes->search;
72
    my $grid_checkout = $preferences->grid({ branchcode => $branch, notification => 'CHECKOUT' });
70
    my $grid_checkout = $preferences->grid({ branchcode => $branch, notification => 'CHECKOUT' });
73
    my $grid_checkin  = $preferences->grid({ branchcode => $branch, notification => 'CHECKIN' });
71
    my $grid_checkin  = $preferences->grid({ branchcode => $branch, notification => 'CHECKIN' });
(-)a/debian/templates/plack.psgi (-1 lines)
Lines 30-36 use Mojo::Server::PSGI; Link Here
30
# Pre-load libraries
30
# Pre-load libraries
31
use C4::Boolean;
31
use C4::Boolean;
32
use C4::Branch;
32
use C4::Branch;
33
use C4::Category;
34
use C4::Koha;
33
use C4::Koha;
35
use C4::Languages;
34
use C4::Languages;
36
use C4::Letters;
35
use C4::Letters;
(-)a/koha-tmpl/intranet-tmpl/prog/en/includes/patron-search.inc (-5 / +5 lines)
Lines 102-115 Link Here
102
102
103
        <p>
103
        <p>
104
            <label for="categorycode">Category: </label>
104
            <label for="categorycode">Category: </label>
105
            [% SET categories = Categories.all( selected => categorycode_filter ) %]
105
            [% SET categories = Categories.all() %]
106
            <select name="categorycode_filter" id="categorycode">
106
            <select name="categorycode_filter" id="categorycode">
107
                <option value="">Any</option>
107
                <option value="">Any</option>
108
                [% FOREACH categorie IN categories %]
108
                [% FOREACH category IN categories %]
109
                    [% IF ( categorie.selected ) %]
109
                    [% IF category.categorycode == categorycode_filter %]
110
                        <option value="[% categorie.categorycode %]" selected="selected">[% categorie.description %]</option>
110
                        <option value="[% category.categorycode %]" selected="selected">[% category.description %]</option>
111
                    [% ELSE %]
111
                    [% ELSE %]
112
                        <option value="[% categorie.categorycode %]">[% categorie.description %]</option>
112
                        <option value="[% category.categorycode %]">[% category.description %]</option>
113
                    [% END %]
113
                    [% END %]
114
                [% END %]
114
                [% END %]
115
            </select>
115
            </select>
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/members/member.tt (-2 / +2 lines)
Lines 487-497 function filterByFirstLetterSurname(letter) { Link Here
487
            </li>
487
            </li>
488
            <li>
488
            <li>
489
              <label for="categorycode_filter">Category:</label>
489
              <label for="categorycode_filter">Category:</label>
490
              [% SET categories = Categories.all( selected => categorycode_filter ) %]
490
              [% SET categories = Categories.all() %]
491
              <select id="categorycode_filter">
491
              <select id="categorycode_filter">
492
                <option value="">Any</option>
492
                <option value="">Any</option>
493
                [% FOREACH cat IN categories %]
493
                [% FOREACH cat IN categories %]
494
                  [% IF cat.selected %]
494
                  [% IF cat.categorycode == categorycode_filter %]
495
                    <option selected="selected" value="[% cat.categorycode %]">[% cat.description %]</option>
495
                    <option selected="selected" value="[% cat.categorycode %]">[% cat.description %]</option>
496
                  [% ELSE %]
496
                  [% ELSE %]
497
                    <option value="[% cat.categorycode %]">[% cat.description %]</option>
497
                    <option value="[% cat.categorycode %]">[% cat.description %]</option>
(-)a/members/guarantor_search.pl (-2 / +4 lines)
Lines 22-31 use Modern::Perl; Link Here
22
use CGI qw ( -utf8 );
22
use CGI qw ( -utf8 );
23
use C4::Auth;
23
use C4::Auth;
24
use C4::Branch qw( GetBranches );
24
use C4::Branch qw( GetBranches );
25
use C4::Category;
26
use C4::Output;
25
use C4::Output;
27
use C4::Members;
26
use C4::Members;
28
27
28
use Koha::Patron::Categories;
29
29
my $input = new CGI;
30
my $input = new CGI;
30
31
31
my $dbh = C4::Context->dbh;
32
my $dbh = C4::Context->dbh;
Lines 47-59 my $referer = $input->referer(); Link Here
47
my $onlymine = C4::Branch::onlymine;
48
my $onlymine = C4::Branch::onlymine;
48
my $branches = C4::Branch::GetBranches( $onlymine );
49
my $branches = C4::Branch::GetBranches( $onlymine );
49
50
51
my $patron_categories = Koha::Patron::Categories->search_limited;
50
$template->param(
52
$template->param(
51
    view => ( $input->request_method() eq "GET" ) ? "show_form" : "show_results",
53
    view => ( $input->request_method() eq "GET" ) ? "show_form" : "show_results",
52
    columns => ['cardnumber', 'name', 'dateofbirth', 'address', 'action' ],
54
    columns => ['cardnumber', 'name', 'dateofbirth', 'address', 'action' ],
53
    json_template => 'members/tables/guarantor_search.tt',
55
    json_template => 'members/tables/guarantor_search.tt',
54
    selection_type => 'select',
56
    selection_type => 'select',
55
    alphabet        => ( C4::Context->preference('alphabet') || join ' ', 'A' .. 'Z' ),
57
    alphabet        => ( C4::Context->preference('alphabet') || join ' ', 'A' .. 'Z' ),
56
    categories      => [ C4::Category->all ],
58
    categories      => $patron_categories,
57
    branches        => [ map { { branchcode => $_->{branchcode}, branchname => $_->{branchname} } } values %$branches ],
59
    branches        => [ map { { branchcode => $_->{branchcode}, branchname => $_->{branchname} } } values %$branches ],
58
    aaSorting       => 1,
60
    aaSorting       => 1,
59
);
61
);
(-)a/members/member.pl (-1 lines)
Lines 28-34 use C4::Auth; Link Here
28
use C4::Output;
28
use C4::Output;
29
use CGI qw( -utf8 );
29
use CGI qw( -utf8 );
30
use C4::Branch;
30
use C4::Branch;
31
use C4::Category;
32
use C4::Members qw( GetMember );
31
use C4::Members qw( GetMember );
33
use Koha::DateUtils;
32
use Koha::DateUtils;
34
use Koha::List::Patron;
33
use Koha::List::Patron;
(-)a/members/members-home.pl (-3 / +2 lines)
Lines 25-34 use C4::Output; Link Here
25
use C4::Context;
25
use C4::Context;
26
use C4::Members;
26
use C4::Members;
27
use C4::Branch;
27
use C4::Branch;
28
use C4::Category;
29
use Koha::Patron::Modifications;
28
use Koha::Patron::Modifications;
30
use Koha::Libraries;
29
use Koha::Libraries;
31
use Koha::List::Patron;
30
use Koha::List::Patron;
31
use Koha::Patron::Categories;
32
32
33
my $query = new CGI;
33
my $query = new CGI;
34
my $branch = $query->param('branchcode');
34
my $branch = $query->param('branchcode');
Lines 68-74 if ( C4::Branch::onlymine ) { Link Here
68
    }
68
    }
69
}
69
}
70
70
71
my @categories;
72
my $no_add = 0;
71
my $no_add = 0;
73
if(scalar(@branchloop) < 1){
72
if(scalar(@branchloop) < 1){
74
    $no_add = 1;
73
    $no_add = 1;
Lines 78-84 else { Link Here
78
    $template->param(branchloop=>\@branchloop);
77
    $template->param(branchloop=>\@branchloop);
79
}
78
}
80
79
81
@categories=C4::Category->all;
80
my @categories = Koha::Patron::Categories->search_limited;
82
if(scalar(@categories) < 1){
81
if(scalar(@categories) < 1){
83
    $no_add = 1;
82
    $no_add = 1;
84
    $template->param(no_categories => 1);
83
    $template->param(no_categories => 1);
(-)a/members/members-update-do.pl (-1 lines)
Lines 25-31 use C4::Output; Link Here
25
use C4::Context;
25
use C4::Context;
26
use C4::Members;
26
use C4::Members;
27
use C4::Branch;
27
use C4::Branch;
28
use C4::Category;
29
use Koha::Patron::Modifications;
28
use Koha::Patron::Modifications;
30
29
31
my $query = new CGI;
30
my $query = new CGI;
(-)a/members/members-update.pl (-1 lines)
Lines 25-31 use C4::Output; Link Here
25
use C4::Context;
25
use C4::Context;
26
use C4::Members;
26
use C4::Members;
27
use C4::Branch;
27
use C4::Branch;
28
use C4::Category;
29
use Koha::Patron::Modifications;
28
use Koha::Patron::Modifications;
30
29
31
my $query = new CGI;
30
my $query = new CGI;
(-)a/members/nl-search.pl (-4 / +3 lines)
Lines 37-43 See http://www.lanekortet.no/ for more information (in Norwegian). Link Here
37
use Modern::Perl;
37
use Modern::Perl;
38
use CGI;
38
use CGI;
39
use C4::Auth;
39
use C4::Auth;
40
use C4::Category;
41
use C4::Context;
40
use C4::Context;
42
use C4::Output;
41
use C4::Output;
43
use C4::Members;
42
use C4::Members;
Lines 46-51 use C4::Utils::DataTables::Members; Link Here
46
use Koha::NorwegianPatronDB qw( NLCheckSysprefs NLSearch NLDecodePin NLGetFirstname NLGetSurname NLSync );
45
use Koha::NorwegianPatronDB qw( NLCheckSysprefs NLSearch NLDecodePin NLGetFirstname NLGetSurname NLSync );
47
use Koha::Database;
46
use Koha::Database;
48
use Koha::DateUtils;
47
use Koha::DateUtils;
48
use Koha::Patron::Categories;
49
49
50
my $cgi = CGI->new;
50
my $cgi = CGI->new;
51
my $dbh = C4::Context->dbh;
51
my $dbh = C4::Context->dbh;
Lines 92-102 if ( $op && $op eq 'search' ) { Link Here
92
            my $result = NLSearch( $identifier );
92
            my $result = NLSearch( $identifier );
93
            unless ($result->fault) {
93
            unless ($result->fault) {
94
                my $r = $result->result();
94
                my $r = $result->result();
95
                # Send the data to the template
95
                my $categories = Koha::Patron::Categories->search_limited;
96
                my @categories = C4::Category->all;
97
                $template->param(
96
                $template->param(
98
                    'result'     => $r,
97
                    'result'     => $r,
99
                    'categories' => \@categories,
98
                    'categories' => $categories,
100
                );
99
                );
101
            } else {
100
            } else {
102
                $template->param( 'error' => join ', ', $result->faultcode, $result->faultstring, $result->faultdetail );
101
                $template->param( 'error' => join ', ', $result->faultcode, $result->faultstring, $result->faultdetail );
(-)a/misc/plack/koha.psgi (-1 / +2 lines)
Lines 44-53 use C4::Letters; Link Here
44
use C4::Koha;
44
use C4::Koha;
45
use C4::XSLT;
45
use C4::XSLT;
46
use C4::Branch;
46
use C4::Branch;
47
use C4::Category;
48
use Koha::DateUtils;
47
use Koha::DateUtils;
49
use Koha::Cache;
48
use Koha::Cache;
50
use Koha::Cache::Memory::Lite;
49
use Koha::Cache::Memory::Lite;
50
use Koha::Patron::Categories;
51
51
=for preload
52
=for preload
52
use C4::Tags; # FIXME
53
use C4::Tags; # FIXME
53
=cut
54
=cut
(-)a/patroncards/add_user_search.pl (-2 / +4 lines)
Lines 22-31 use Modern::Perl; Link Here
22
use CGI qw ( -utf8 );
22
use CGI qw ( -utf8 );
23
use C4::Auth;
23
use C4::Auth;
24
use C4::Branch qw( GetBranches );
24
use C4::Branch qw( GetBranches );
25
use C4::Category;
26
use C4::Output;
25
use C4::Output;
27
use C4::Members;
26
use C4::Members;
28
27
28
use Koha::Patron::Categories;
29
29
my $input = new CGI;
30
my $input = new CGI;
30
31
31
my $dbh = C4::Context->dbh;
32
my $dbh = C4::Context->dbh;
Lines 47-59 my $referer = $input->referer(); Link Here
47
my $onlymine = C4::Branch::onlymine;
48
my $onlymine = C4::Branch::onlymine;
48
my $branches = C4::Branch::GetBranches( $onlymine );
49
my $branches = C4::Branch::GetBranches( $onlymine );
49
50
51
my $patron_categories = Koha::Patron::Categories->search_limited;
50
$template->param(
52
$template->param(
51
    view            => ( $input->request_method() eq "GET" ) ? "show_form" : "show_results",
53
    view            => ( $input->request_method() eq "GET" ) ? "show_form" : "show_results",
52
    columns         => ['cardnumber', 'name', 'category', 'branch', 'dateexpiry', 'borrowernotes', 'action'],
54
    columns         => ['cardnumber', 'name', 'category', 'branch', 'dateexpiry', 'borrowernotes', 'action'],
53
    json_template   => 'patroncards/tables/members_results.tt',
55
    json_template   => 'patroncards/tables/members_results.tt',
54
    selection_type  => 'add',
56
    selection_type  => 'add',
55
    alphabet        => ( C4::Context->preference('alphabet') || join ' ', 'A' .. 'Z' ),
57
    alphabet        => ( C4::Context->preference('alphabet') || join ' ', 'A' .. 'Z' ),
56
    categories      => [ C4::Category->all ],
58
    categories      => $patron_categories,
57
    branches        => [ map { { branchcode => $_->{branchcode}, branchname => $_->{branchname} } } values %$branches ],
59
    branches        => [ map { { branchcode => $_->{branchcode}, branchname => $_->{branchname} } } values %$branches ],
58
    aaSorting       => 1,
60
    aaSorting       => 1,
59
);
61
);
(-)a/reports/reserves_stats.pl (-1 lines)
Lines 31-37 use C4::Koha; Link Here
31
use C4::Output;
31
use C4::Output;
32
use C4::Reports;
32
use C4::Reports;
33
use C4::Members;
33
use C4::Members;
34
use C4::Category;
35
use Koha::DateUtils;
34
use Koha::DateUtils;
36
use List::MoreUtils qw/any/;
35
use List::MoreUtils qw/any/;
37
use YAML;
36
use YAML;
(-)a/serials/add_user_search.pl (-2 / +4 lines)
Lines 22-31 use Modern::Perl; Link Here
22
use CGI qw ( -utf8 );
22
use CGI qw ( -utf8 );
23
use C4::Auth;
23
use C4::Auth;
24
use C4::Branch qw( GetBranches );
24
use C4::Branch qw( GetBranches );
25
use C4::Category;
26
use C4::Output;
25
use C4::Output;
27
use C4::Members;
26
use C4::Members;
28
27
28
use Koha::Patron::Categories;
29
29
my $input = new CGI;
30
my $input = new CGI;
30
31
31
my $dbh = C4::Context->dbh;
32
my $dbh = C4::Context->dbh;
Lines 46-51 my $referer = $input->referer(); Link Here
46
47
47
my $onlymine = C4::Branch::onlymine;
48
my $onlymine = C4::Branch::onlymine;
48
my $branches = C4::Branch::GetBranches( $onlymine );
49
my $branches = C4::Branch::GetBranches( $onlymine );
50
my $patron_categories = Koha::Patron::Categories->search_limited;
49
51
50
$template->param(
52
$template->param(
51
    view => ( $input->request_method() eq "GET" ) ? "show_form" : "show_results",
53
    view => ( $input->request_method() eq "GET" ) ? "show_form" : "show_results",
Lines 53-59 $template->param( Link Here
53
    json_template => 'serials/tables/members_results.tt',
55
    json_template => 'serials/tables/members_results.tt',
54
    selection_type => 'add',
56
    selection_type => 'add',
55
    alphabet        => ( C4::Context->preference('alphabet') || join ' ', 'A' .. 'Z' ),
57
    alphabet        => ( C4::Context->preference('alphabet') || join ' ', 'A' .. 'Z' ),
56
    categories      => [ C4::Category->all ],
58
    categories      => $patron_categories,
57
    branches        => [ map { { branchcode => $_->{branchcode}, branchname => $_->{branchname} } } values %$branches ],
59
    branches        => [ map { { branchcode => $_->{branchcode}, branchname => $_->{branchname} } } values %$branches ],
58
    aaSorting       => 1,
60
    aaSorting       => 1,
59
);
61
);
(-)a/t/db_dependent/Category.t (-62 lines)
Lines 1-62 Link Here
1
#!/usr/bin/perl
2
3
# This file is part of Koha.
4
#
5
# Copyright 2014 - Koha Team
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 t::lib::TestBuilder;
23
use Test::More tests => 3;
24
25
use Koha::Database;
26
27
BEGIN {
28
    use_ok('C4::Category');
29
}
30
31
my $schema  = Koha::Database->new->schema;
32
$schema->storage->txn_begin;
33
34
my $builder = t::lib::TestBuilder->new();
35
36
my $nonexistent_categorycode = 'NONEXISTEN';
37
$builder->build({
38
    source => 'Category',
39
    value  => {
40
        categorycode          => $nonexistent_categorycode,
41
        description           => 'Desc',
42
        enrolmentperiod       => 12,
43
        enrolementperioddate  => '2014-01-02',
44
        upperagelimit         => 99,
45
        dateofbirthrequired   => 1,
46
        enrolmentfee          => 1.5,
47
        reservefee            => 2.5,
48
        hidelostitems         => 0,
49
        overduenoticerequired => 0,
50
        category_type         => 'A',
51
    },
52
});
53
54
my @categories = C4::Category->all;
55
ok( @categories, 'all returns categories' );
56
57
my $match = grep {$_->{categorycode} eq $nonexistent_categorycode } @categories;
58
is( $match, 1, 'all returns the inserted category');
59
60
$schema->storage->txn_rollback;
61
62
1;
(-)a/t/db_dependent/Circulation/CheckIfIssuedToPatron.t (-1 lines)
Lines 23-29 use Test::MockModule; Link Here
23
use C4::Biblio;
23
use C4::Biblio;
24
use C4::Items;
24
use C4::Items;
25
use C4::Members;
25
use C4::Members;
26
use C4::Category;
27
use Koha::Library;
26
use Koha::Library;
28
use MARC::Record;
27
use MARC::Record;
29
28
(-)a/t/db_dependent/Circulation/GetIssues.t (-3 / +3 lines)
Lines 8-16 use C4::Biblio; Link Here
8
use C4::Items;
8
use C4::Items;
9
use C4::Members;
9
use C4::Members;
10
use C4::Branch;
10
use C4::Branch;
11
use C4::Category;
12
use C4::Circulation;
11
use C4::Circulation;
13
use Koha::Library;
12
use Koha::Library;
13
use Koha::Patron::Categories;
14
use MARC::Record;
14
use MARC::Record;
15
15
16
my $dbh = C4::Context->dbh;
16
my $dbh = C4::Context->dbh;
Lines 44-52 my $itemnumber3 = AddItem({ barcode => '0203', %item_branch_infos }, $biblionumb Link Here
44
44
45
my $categorycode;
45
my $categorycode;
46
my $category_created;
46
my $category_created;
47
my @categories = C4::Category->all;
47
my @categories = Koha::Patron::Categories->search_limited;
48
if (@categories) {
48
if (@categories) {
49
    $categorycode = $categories[0]->{categorycode}
49
    $categorycode = $categories[0]->categorycode
50
} else {
50
} else {
51
    $categorycode = 'C';
51
    $categorycode = 'C';
52
    C4::Context->dbh->do(
52
    C4::Context->dbh->do(
(-)a/t/db_dependent/Koha/Patron/Categories.t (-2 / +19 lines)
Lines 19-26 Link Here
19
19
20
use Modern::Perl;
20
use Modern::Perl;
21
21
22
use Test::More tests => 7;
22
use Test::More tests => 11;
23
23
24
use C4::Context;
24
use Koha::Database;
25
use Koha::Database;
25
use Koha::Patron::Category;
26
use Koha::Patron::Category;
26
use Koha::Patron::Categories;
27
use Koha::Patron::Categories;
Lines 54-61 my $retrieved_category_2 = Koha::Patron::Categories->find( $new_category_2->cate Link Here
54
is( $retrieved_category_1->checkprevcheckout, 'inherit', 'Koha::Patron::Category->store should default checkprevcheckout to inherit' );
55
is( $retrieved_category_1->checkprevcheckout, 'inherit', 'Koha::Patron::Category->store should default checkprevcheckout to inherit' );
55
is( $retrieved_category_2->checkprevcheckout, 'inherit', 'Koha::Patron::Category->store should default checkprevcheckout to inherit' );
56
is( $retrieved_category_2->checkprevcheckout, 'inherit', 'Koha::Patron::Category->store should default checkprevcheckout to inherit' );
56
57
58
my $another_branch = $builder->build( { source => 'Branch', } );
59
C4::Context->_new_userenv('my_new_userenv');
60
C4::Context->set_userenv( 0, 0, 'usercnum', 'firstname', 'surname', $another_branch->{branchcode}, 'My wonderful library', '', '', '' );
61
my $new_category_3 = Koha::Patron::Category->new(
62
    {   categorycode => 'mycatcodeZ',
63
        description  => 'mycatdescZ',
64
    }
65
)->store;
66
$new_category_3->add_branch_limitation( $another_branch->{branchcode} );
67
is( Koha::Patron::Categories->search->count, $nb_of_categories + 3, 'The 3rd patron category should have been added' );
68
my @limited_categories = Koha::Patron::Categories->search_limited;
69
my @limited_category_codes = map { $_->categorycode } @limited_categories;
70
is( scalar( grep { $_ eq $new_category_1->categorycode } @limited_category_codes ), 0, 'The first category is limited to another branch' );
71
is( scalar( grep { $_ eq $new_category_2->categorycode } @limited_category_codes ), 1, 'The second category is not limited' );
72
is( scalar( grep { $_ eq $new_category_3->categorycode } @limited_category_codes ), 1, 'The third category is limited to my branch ' );
73
57
$retrieved_category_1->delete;
74
$retrieved_category_1->delete;
58
is( Koha::Patron::Categories->search->count, $nb_of_categories + 1, 'Delete should have deleted the patron category' );
75
is( Koha::Patron::Categories->search->count, $nb_of_categories + 2, 'Delete should have deleted the patron category' );
59
76
60
$schema->storage->txn_rollback;
77
$schema->storage->txn_rollback;
61
78
(-)a/t/db_dependent/Members/GetAllIssues.t (-1 lines)
Lines 8-14 use Test::MockModule; Link Here
8
use C4::Biblio;
8
use C4::Biblio;
9
use C4::Items;
9
use C4::Items;
10
use C4::Members;
10
use C4::Members;
11
use C4::Category;
12
use C4::Circulation;
11
use C4::Circulation;
13
use Koha::Libraries;
12
use Koha::Libraries;
14
use MARC::Record;
13
use MARC::Record;
(-)a/t/db_dependent/Members/GetOverdues.t (-1 lines)
Lines 8-14 use Test::MockModule; Link Here
8
use C4::Biblio;
8
use C4::Biblio;
9
use C4::Items;
9
use C4::Items;
10
use C4::Members;
10
use C4::Members;
11
use C4::Category;
12
use C4::Circulation;
11
use C4::Circulation;
13
use Koha::Libraries;
12
use Koha::Libraries;
14
use MARC::Record;
13
use MARC::Record;
(-)a/t/db_dependent/Members/GetPendingIssues.t (-1 lines)
Lines 8-14 use Test::MockModule; Link Here
8
use C4::Biblio;
8
use C4::Biblio;
9
use C4::Items;
9
use C4::Items;
10
use C4::Members;
10
use C4::Members;
11
use C4::Category;
12
use C4::Circulation;
11
use C4::Circulation;
13
use Koha::Library;
12
use Koha::Library;
14
use MARC::Record;
13
use MARC::Record;
(-)a/t/db_dependent/Members/IssueSlip.t (-1 lines)
Lines 8-14 use Test::MockModule; Link Here
8
use C4::Biblio;
8
use C4::Biblio;
9
use C4::Items;
9
use C4::Items;
10
use C4::Members;
10
use C4::Members;
11
use C4::Category;
12
use C4::Circulation;
11
use C4::Circulation;
13
12
14
use Koha::DateUtils qw( dt_from_string output_pref );
13
use Koha::DateUtils qw( dt_from_string output_pref );
(-)a/t/db_dependent/Ratings.t (-2 / +2 lines)
Lines 22-29 use Test::More tests => 14; Link Here
22
use C4::Biblio qw/AddBiblio/;
22
use C4::Biblio qw/AddBiblio/;
23
use C4::Members;
23
use C4::Members;
24
use C4::Context;
24
use C4::Context;
25
use C4::Category;
26
use Koha::Database;
25
use Koha::Database;
26
use Koha::Patron::Categories;
27
27
28
use t::lib::TestBuilder;
28
use t::lib::TestBuilder;
29
29
Lines 41-47 my $library = $builder->build({ Link Here
41
41
42
my ($biblionumber) = AddBiblio( MARC::Record->new, '' );
42
my ($biblionumber) = AddBiblio( MARC::Record->new, '' );
43
43
44
my @categories   = C4::Category->all;
44
my @categories   = Koha::Patron::Categories->search_limited;
45
my $categorycode = $categories[0]->categorycode;
45
my $categorycode = $categories[0]->categorycode;
46
my $branchcode   = $library->{branchcode};
46
my $branchcode   = $library->{branchcode};
47
47
(-)a/t/db_dependent/Utils/Datatables_Members.t (-1 / +2 lines)
Lines 26-31 use C4::Members::Attributes; Link Here
26
use C4::Members::AttributeTypes;
26
use C4::Members::AttributeTypes;
27
27
28
use Koha::Library;
28
use Koha::Library;
29
use Koha::Patron::Categories;
29
30
30
use t::lib::Mocks;
31
use t::lib::Mocks;
31
32
Lines 38-44 $dbh->{AutoCommit} = 0; Link Here
38
$dbh->{RaiseError} = 1;
39
$dbh->{RaiseError} = 1;
39
40
40
# Pick a categorycode from the DB
41
# Pick a categorycode from the DB
41
my @categories   = C4::Category->all;
42
my @categories   = Koha::Patron::Categories->search_limited;
42
my $categorycode = $categories[0]->categorycode;
43
my $categorycode = $categories[0]->categorycode;
43
# Add a new branch so we control what borrowers it has
44
# Add a new branch so we control what borrowers it has
44
my $branchcode   = "UNC";
45
my $branchcode   = "UNC";
(-)a/t/db_dependent/Utils/Datatables_Virtualshelves.t (-2 / +2 lines)
Lines 24-29 use C4::Context; Link Here
24
use C4::Members;
24
use C4::Members;
25
25
26
use Koha::Library;
26
use Koha::Library;
27
use Koha::Patron::Categories;
27
use Koha::Virtualshelf;
28
use Koha::Virtualshelf;
28
use Koha::Virtualshelves;
29
use Koha::Virtualshelves;
29
30
Lines 38-44 $dbh->{RaiseError} = 1; Link Here
38
$dbh->do(q|DELETE FROM virtualshelves|);
39
$dbh->do(q|DELETE FROM virtualshelves|);
39
40
40
# Pick a categorycode from the DB
41
# Pick a categorycode from the DB
41
my @categories   = C4::Category->all;
42
my @categories   = Koha::Patron::Categories->search_limited;
42
my $categorycode = $categories[0]->categorycode;
43
my $categorycode = $categories[0]->categorycode;
43
my $branchcode   = "ABC";
44
my $branchcode   = "ABC";
44
my $branch_data = {
45
my $branch_data = {
45
- 

Return to bug 15407