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

(-)a/C4/Koha.pm (-85 / +1 lines)
Lines 41-47 BEGIN { Link Here
41
	@ISA    = qw(Exporter);
41
	@ISA    = qw(Exporter);
42
	@EXPORT = qw(
42
	@EXPORT = qw(
43
        &GetPrinters &GetPrinter
43
        &GetPrinters &GetPrinter
44
        &GetItemTypes &getitemtypeinfo
44
        &getitemtypeinfo
45
        &GetItemTypesCategorized
45
        &GetItemTypesCategorized
46
        &getallthemes
46
        &getallthemes
47
        &getFacets
47
        &getFacets
Lines 87-176 Koha.pm provides many functions for Koha scripts. Link Here
87
87
88
=cut
88
=cut
89
89
90
=head2 GetItemTypes
91
92
  $itemtypes = &GetItemTypes( style => $style );
93
94
Returns information about existing itemtypes.
95
96
Params:
97
    style: either 'array' or 'hash', defaults to 'hash'.
98
           'array' returns an arrayref,
99
           'hash' return a hashref with the itemtype value as the key
100
101
build a HTML select with the following code :
102
103
=head3 in PERL SCRIPT
104
105
    my $itemtypes = GetItemTypes;
106
    my @itemtypesloop;
107
    foreach my $thisitemtype (sort keys %$itemtypes) {
108
        my $selected = 1 if $thisitemtype eq $itemtype;
109
        my %row =(value => $thisitemtype,
110
                    selected => $selected,
111
                    description => $itemtypes->{$thisitemtype}->{'description'},
112
                );
113
        push @itemtypesloop, \%row;
114
    }
115
    $template->param(itemtypeloop => \@itemtypesloop);
116
117
=head3 in TEMPLATE
118
119
    <form action='<!-- TMPL_VAR name="script_name" -->' method=post>
120
        <select name="itemtype">
121
            <option value="">Default</option>
122
        <!-- TMPL_LOOP name="itemtypeloop" -->
123
            <option value="<!-- TMPL_VAR name="value" -->" <!-- TMPL_IF name="selected" -->selected<!-- /TMPL_IF -->><!-- TMPL_VAR name="description" --></option>
124
        <!-- /TMPL_LOOP -->
125
        </select>
126
        <input type=text name=searchfield value="<!-- TMPL_VAR name="searchfield" -->">
127
        <input type="submit" value="OK" class="button">
128
    </form>
129
130
=cut
131
132
sub GetItemTypes {
133
    my ( %params ) = @_;
134
    my $style = defined( $params{'style'} ) ? $params{'style'} : 'hash';
135
136
    require C4::Languages;
137
    my $language = C4::Languages::getlanguage();
138
    # returns a reference to a hash of references to itemtypes...
139
    my $dbh   = C4::Context->dbh;
140
    my $query = q|
141
        SELECT
142
               itemtypes.itemtype,
143
               itemtypes.description,
144
               itemtypes.rentalcharge,
145
               itemtypes.notforloan,
146
               itemtypes.imageurl,
147
               itemtypes.summary,
148
               itemtypes.checkinmsg,
149
               itemtypes.checkinmsgtype,
150
               itemtypes.sip_media_type,
151
               itemtypes.hideinopac,
152
               itemtypes.searchcategory,
153
               COALESCE( localization.translation, itemtypes.description ) AS translated_description
154
        FROM   itemtypes
155
        LEFT JOIN localization ON itemtypes.itemtype = localization.code
156
            AND localization.entity = 'itemtypes'
157
            AND localization.lang = ?
158
        ORDER BY itemtype
159
    |;
160
    my $sth = $dbh->prepare($query);
161
    $sth->execute( $language );
162
163
    if ( $style eq 'hash' ) {
164
        my %itemtypes;
165
        while ( my $IT = $sth->fetchrow_hashref ) {
166
            $itemtypes{ $IT->{'itemtype'} } = $IT;
167
        }
168
        return ( \%itemtypes );
169
    } else {
170
        return [ sort { lc $a->{translated_description} cmp lc $b->{translated_description} } @{ $sth->fetchall_arrayref( {} ) } ];
171
    }
172
}
173
174
=head2 GetItemTypesCategorized
90
=head2 GetItemTypesCategorized
175
91
176
    $categories = GetItemTypesCategorized();
92
    $categories = GetItemTypesCategorized();
(-)a/t/db_dependent/Koha.t (-11 / +1 lines)
Lines 9-15 use Koha::DateUtils qw(dt_from_string); Link Here
9
use Koha::AuthorisedValue;
9
use Koha::AuthorisedValue;
10
use Koha::AuthorisedValueCategories;
10
use Koha::AuthorisedValueCategories;
11
11
12
use Test::More tests => 8;
12
use Test::More tests => 7;
13
use DateTime::Format::MySQL;
13
use DateTime::Format::MySQL;
14
14
15
BEGIN {
15
BEGIN {
Lines 294-306 subtest 'GetItemTypesCategorized test' => sub{ Link Here
294
    is_deeply(\@results,\@expected, 'GetItemTypesCategorized: grouped and ungrouped items returned as expected.');
294
    is_deeply(\@results,\@expected, 'GetItemTypesCategorized: grouped and ungrouped items returned as expected.');
295
};
295
};
296
296
297
subtest 'GetItemTypes test' => sub {
298
    plan tests => 1;
299
    $dbh->do(q|DELETE FROM itemtypes|);
300
    $dbh->do(q|INSERT INTO itemtypes(itemtype, description) VALUES ('a', 'aa desc'), ('b', 'zz desc'), ('d', 'dd desc'), ('c', 'yy desc')|);
301
    my $itemtypes = C4::Koha::GetItemTypes( style => 'array' );
302
    $itemtypes = [ map { $_->{itemtype} } @$itemtypes ];
303
    is_deeply( $itemtypes, [ 'a', 'd', 'c', 'b' ], 'GetItemTypes(array) should return itemtypes ordered by description');
304
};
305
306
$dbh->rollback();
297
$dbh->rollback();
307
- 

Return to bug 17835