77e5309b302e5e6967f0e9635e05d05b452e1055
[srvgit] / Koha / Item / Search / Field.pm
1 package Koha::Item::Search::Field;
2
3 use Modern::Perl;
4 use base qw( Exporter );
5
6 our @EXPORT_OK = qw(
7     AddItemSearchField
8     ModItemSearchField
9     DelItemSearchField
10     GetItemSearchField
11     GetItemSearchFields
12 );
13
14 use C4::Context;
15
16 sub AddItemSearchField {
17     my ($field) = @_;
18
19     my ( $name, $label, $tagfield, $tagsubfield, $av_category ) =
20       @$field{qw(name label tagfield tagsubfield authorised_values_category)};
21
22     return unless ($name and $label and $tagfield);
23
24     my $dbh = C4::Context->dbh;
25     my $query = q{
26         INSERT INTO items_search_fields (name, label, tagfield, tagsubfield, authorised_values_category)
27         VALUES (?, ?, ?, ?, ?)
28     };
29     my $sth = $dbh->prepare($query);
30     my $rv = $sth->execute($name, $label, $tagfield, $tagsubfield, $av_category);
31
32     return ($rv) ? $field : undef;
33 }
34
35 sub ModItemSearchField {
36     my ($field) = @_;
37
38     my ( $name, $label, $tagfield, $tagsubfield, $av_category ) =
39       @$field{qw(name label tagfield tagsubfield authorised_values_category)};
40
41     return unless ($name and $label and $tagfield);
42
43     my $dbh = C4::Context->dbh;
44     my $query = q{
45         UPDATE items_search_fields
46         SET label = ?,
47             tagfield = ?,
48             tagsubfield = ?,
49             authorised_values_category = ?
50         WHERE name = ?
51     };
52     my $sth = $dbh->prepare($query);
53     my $rv = $sth->execute($label, $tagfield, $tagsubfield, $av_category, $name);
54
55     return ($rv) ? $field : undef;
56 }
57
58 sub DelItemSearchField {
59     my ($name) = @_;
60
61     my $dbh = C4::Context->dbh;
62     my $query = q{
63         DELETE FROM items_search_fields
64         WHERE name = ?
65     };
66     my $sth = $dbh->prepare($query);
67     my $rv = $sth->execute($name);
68
69     my $is_deleted = $rv ? int($rv) : 0;
70     if (!$is_deleted) {
71         warn "DelItemSearchField: Field '$name' doesn't exist";
72     }
73
74     return $is_deleted;
75 }
76
77 sub GetItemSearchField {
78     my ($name) = @_;
79
80     my $dbh = C4::Context->dbh;
81     my $query = q{
82         SELECT * FROM items_search_fields
83         WHERE name = ?
84     };
85     my $sth = $dbh->prepare($query);
86     my $rv = $sth->execute($name);
87
88     my $field;
89     if ($rv) {
90         $field = $sth->fetchrow_hashref;
91     }
92
93     return $field;
94 }
95
96 sub GetItemSearchFields {
97     my $dbh = C4::Context->dbh;
98     my $query = q{
99         SELECT * FROM items_search_fields
100     };
101     my $sth = $dbh->prepare($query);
102     my $rv = $sth->execute();
103
104     my @fields;
105     if ($rv) {
106         my $fields = $sth->fetchall_arrayref( {} );
107         @fields = @$fields;
108     }
109
110     return @fields;
111 }
112
113 1;