1 package C4
::Serials
::Numberpattern
;
3 # Copyright 2011-2013 Biblibre SARL
5 # This file is part of Koha.
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.
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.
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>.
25 use vars
qw(@ISA @EXPORT);
32 &GetSubscriptionNumberpatterns
33 &GetSubscriptionNumberpattern
34 &GetSubscriptionNumberpatternByName
35 &AddSubscriptionNumberpattern
36 &ModSubscriptionNumberpattern
37 &DelSubscriptionNumberpattern
39 &GetSubscriptionsWithNumberpattern
46 C4::Serials::Numberpattern - Serials numbering pattern module
50 =head2 GetSubscriptionNumberpatterns
52 @results = GetSubscriptionNumberpatterns;
53 this function get all subscription number patterns entered in table
57 sub GetSubscriptionNumberpatterns
{
58 my $dbh = C4
::Context
->dbh;
61 FROM subscription_numberpatterns
64 my $sth = $dbh->prepare($query);
66 my $results = $sth->fetchall_arrayref({});
71 =head2 GetSubscriptionNumberpattern
73 $result = GetSubscriptionNumberpattern($numberpatternid);
74 this function get the data of the subscription numberpatterns which id is $numberpatternid
78 sub GetSubscriptionNumberpattern
{
79 my $numberpatternid = shift;
80 my $dbh = C4
::Context
->dbh;
83 FROM subscription_numberpatterns
86 my $sth = $dbh->prepare($query);
87 $sth->execute($numberpatternid);
89 return $sth->fetchrow_hashref;
92 =head2 GetSubscriptionNumberpatternByName
94 $result = GetSubscriptionNumberpatternByName($name);
95 this function get the data of the subscription numberpatterns which name is $name
99 sub GetSubscriptionNumberpatternByName
{
101 my $dbh = C4
::Context
->dbh;
104 FROM subscription_numberpatterns
107 my $sth = $dbh->prepare($query);
108 my $rv = $sth->execute($name);
110 return $sth->fetchrow_hashref;
113 =head2 AddSubscriptionNumberpattern
117 =item C<$numberpatternid> = &AddSubscriptionNumberpattern($numberpattern)
119 Add a new numberpattern
121 =item C<$frequency> is a hashref that contains values of the number pattern
123 =item Only label and numberingmethod are mandatory
129 sub AddSubscriptionNumberpattern
{
130 my $numberpattern = shift;
133 ref($numberpattern) eq 'HASH'
134 && defined $numberpattern->{'label'}
135 && $numberpattern->{'label'} ne ''
136 && defined $numberpattern->{'numberingmethod'}
137 && $numberpattern->{'numberingmethod'} ne ''
142 # FIXME label, description and numberingmethod must be mandatory
145 foreach (qw
/ label description numberingmethod displayorder
146 label1 label2 label3 add1 add2 add3 every1 every2 every3
147 setto1 setto2 setto3 whenmorethan1 whenmorethan2 whenmorethan3
148 numbering1 numbering2 numbering3
/) {
149 if(exists $numberpattern->{$_}) {
151 push @values, $numberpattern->{$_};
155 my $dbh = C4
::Context
->dbh;
156 my $query = "INSERT INTO subscription_numberpatterns";
157 $query .= '(' . join(',', @keys) . ')';
158 $query .= ' VALUES (' . ('?,' x
(scalar(@keys)-1)) . '?)';
159 my $sth = $dbh->prepare($query);
160 my $rv = $sth->execute(@values);
163 return $dbh->last_insert_id(undef, undef, "subscription_numberpatterns", undef);
169 =head2 ModSubscriptionNumberpattern
173 =item &ModSubscriptionNumberpattern($numberpattern)
175 Modifies a numberpattern
177 =item C<$frequency> is a hashref that contains values of the number pattern
179 =item Only id is mandatory
185 sub ModSubscriptionNumberpattern
{
186 my $numberpattern = shift;
189 ref($numberpattern) eq 'HASH'
190 && defined $numberpattern->{'id'}
191 && $numberpattern->{'id'} > 0
193 (defined $numberpattern->{'label'}
194 && $numberpattern->{'label'} ne '')
195 || !defined $numberpattern->{'label'}
198 (defined $numberpattern->{'numberingmethod'}
199 && $numberpattern->{'numberingmethod'} ne '')
200 || !defined $numberpattern->{'numberingmethod'}
208 foreach (qw
/ label description numberingmethod displayorder
209 label1 label2 label3 add1 add2 add3 every1 every2 every3
210 setto1 setto2 setto3 whenmorethan1 whenmorethan2 whenmorethan3
211 numbering1 numbering2 numbering3
/) {
212 if(exists $numberpattern->{$_}) {
214 push @values, $numberpattern->{$_};
218 my $dbh = C4
::Context
->dbh;
219 my $query = "UPDATE subscription_numberpatterns";
220 $query .= ' SET ' . join(' = ?,', @keys) . ' = ?';
221 $query .= ' WHERE id = ?';
222 my $sth = $dbh->prepare($query);
224 return $sth->execute(@values, $numberpattern->{'id'});
227 =head2 DelSubscriptionNumberpattern
231 =item &DelSubscriptionNumberpattern($numberpatternid)
233 Delete a number pattern
239 sub DelSubscriptionNumberpattern
{
240 my $numberpatternid = shift;
242 my $dbh = C4
::Context
->dbh;
244 DELETE FROM subscription_numberpatterns
247 my $sth = $dbh->prepare($query);
248 $sth->execute($numberpatternid);
251 =head2 GetSubscriptionsWithNumberpattern
253 my @subs = GetSubscriptionsWithNumberpattern($numberpatternid);
255 Returns all subscriptions that are using a particular numbering pattern
259 sub GetSubscriptionsWithNumberpattern
{
260 my ($numberpatternid) = @_;
262 return unless $numberpatternid;
264 my $dbh = C4
::Context
->dbh;
268 LEFT JOIN biblio ON subscription
.biblionumber
= biblio
.biblionumber
269 WHERE numberpattern
= ?
271 my $sth = $dbh->prepare($query);
273 if ($sth->execute($numberpatternid)) {
274 @results = @
{ $sth->fetchall_arrayref({}) };
286 Koha Development team <info@koha.org>