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 ''
144 foreach (qw
/ label description numberingmethod displayorder
145 label1 label2 label3 add1 add2 add3 every1 every2 every3
146 setto1 setto2 setto3 whenmorethan1 whenmorethan2 whenmorethan3
147 numbering1 numbering2 numbering3
/) {
148 if(exists $numberpattern->{$_}) {
150 push @values, $numberpattern->{$_};
154 my $dbh = C4
::Context
->dbh;
155 my $query = "INSERT INTO subscription_numberpatterns";
156 $query .= '(' . join(',', @keys) . ')';
157 $query .= ' VALUES (' . ('?,' x
(scalar(@keys)-1)) . '?)';
158 my $sth = $dbh->prepare($query);
159 my $rv = $sth->execute(@values);
162 return $dbh->last_insert_id(undef, undef, "subscription_numberpatterns", undef);
168 =head2 ModSubscriptionNumberpattern
172 =item &ModSubscriptionNumberpattern($numberpattern)
174 Modifies a numberpattern
176 =item C<$frequency> is a hashref that contains values of the number pattern
178 =item Only id is mandatory
184 sub ModSubscriptionNumberpattern
{
185 my $numberpattern = shift;
188 ref($numberpattern) eq 'HASH'
189 && defined $numberpattern->{'id'}
190 && $numberpattern->{'id'} > 0
192 (defined $numberpattern->{'label'}
193 && $numberpattern->{'label'} ne '')
194 || !defined $numberpattern->{'label'}
197 (defined $numberpattern->{'numberingmethod'}
198 && $numberpattern->{'numberingmethod'} ne '')
199 || !defined $numberpattern->{'numberingmethod'}
207 foreach (qw
/ label description numberingmethod displayorder
208 label1 label2 label3 add1 add2 add3 every1 every2 every3
209 setto1 setto2 setto3 whenmorethan1 whenmorethan2 whenmorethan3
210 numbering1 numbering2 numbering3
/) {
211 if(exists $numberpattern->{$_}) {
213 push @values, $numberpattern->{$_};
217 my $dbh = C4
::Context
->dbh;
218 my $query = "UPDATE subscription_numberpatterns";
219 $query .= ' SET ' . join(' = ?,', @keys) . ' = ?';
220 $query .= ' WHERE id = ?';
221 my $sth = $dbh->prepare($query);
223 return $sth->execute(@values, $numberpattern->{'id'});
226 =head2 DelSubscriptionNumberpattern
230 =item &DelSubscriptionNumberpattern($numberpatternid)
232 Delete a number pattern
238 sub DelSubscriptionNumberpattern
{
239 my $numberpatternid = shift;
241 my $dbh = C4
::Context
->dbh;
243 DELETE FROM subscription_numberpatterns
246 my $sth = $dbh->prepare($query);
247 $sth->execute($numberpatternid);
250 =head2 GetSubscriptionsWithNumberpattern
252 my @subs = GetSubscriptionsWithNumberpattern($numberpatternid);
254 Returns all subscriptions that are using a particular numbering pattern
258 sub GetSubscriptionsWithNumberpattern
{
259 my ($numberpatternid) = @_;
261 return unless $numberpatternid;
263 my $dbh = C4
::Context
->dbh;
267 LEFT JOIN biblio ON subscription
.biblionumber
= biblio
.biblionumber
268 WHERE numberpattern
= ?
270 my $sth = $dbh->prepare($query);
272 if ($sth->execute($numberpatternid)) {
273 @results = @
{ $sth->fetchall_arrayref({}) };
285 Koha Development team <info@koha.org>