Koha/C4/Serials/Frequency.pm
Julian Maurice a1a8cc41f6 Bug 7688 follow-up: Small fixes for QA #2
- "return undef" -> "return"
- ":utf8" -> ":encoding(UTF-8)"
- TAB -> SPACES

Signed-off-by: Bernardo Gonzalez Kriegel <bgkriegel@gmail.com>

Signed-off-by: Paul Poulain <paul.poulain@biblibre.com>
Signed-off-by: Jared Camins-Esakov <jcamins@cpbibliography.com>
2013-03-22 22:14:35 -04:00

285 lines
5.6 KiB
Perl

package C4::Serials::Frequency;
# Copyright 2000-2002 Biblibre SARL
#
# This file is part of Koha.
#
# Koha is free software; you can redistribute it and/or modify it under the
# terms of the GNU General Public License as published by the Free Software
# Foundation; either version 2 of the License, or (at your option) any later
# version.
#
# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along
# with Koha; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
use strict;
use warnings;
use C4::Context;
use vars qw($VERSION @ISA @EXPORT);
BEGIN {
# set the version for version checking
$VERSION = 3.01;
require Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(
&GetSubscriptionFrequencies
&GetSubscriptionFrequency
&AddSubscriptionFrequency
&ModSubscriptionFrequency
&DelSubscriptionFrequency
&GetSubscriptionsWithFrequency
);
}
=head3 GetSubscriptionFrequencies
=over 4
=item C<@frequencies> = &GetSubscriptionFrequencies();
gets frequencies restricted on filters
=back
=cut
sub GetSubscriptionFrequencies {
my $dbh = C4::Context->dbh;
my $query = qq{
SELECT *
FROM subscription_frequencies
ORDER BY displayorder
};
my $sth = $dbh->prepare($query);
$sth->execute();
my $results = $sth->fetchall_arrayref( {} );
return @$results;
}
=head3 GetSubscriptionFrequency
=over 4
=item $frequency = &GetSubscriptionFrequency($frequencyid);
gets frequency where $frequencyid is the identifier
=back
=cut
sub GetSubscriptionFrequency {
my ($frequencyid) = @_;
my $dbh = C4::Context->dbh;
my $query = qq{
SELECT *
FROM subscription_frequencies
WHERE id = ?
};
my $sth = $dbh->prepare($query);
$sth->execute($frequencyid);
return $sth->fetchrow_hashref;
}
=head3 AddSubscriptionFrequency
=over 4
=item C<$frequencyid> = &AddSubscriptionFrequency($frequency);
Add a new frequency
=item C<$frequency> is a hashref that can contains the following keys
=over 2
=item * description
=item * unit
=item * issuesperunit
=item * unitsperissue
=item * expectedissuesayear
=item * displayorder
=back
Only description is mandatory.
=back
=cut
sub AddSubscriptionFrequency {
my $frequency = shift;
unless(ref($frequency) eq 'HASH' && defined $frequency->{'description'} && $frequency->{'description'} ne '') {
return;
}
my @keys;
my @values;
foreach (qw/ description unit issuesperunit unitsperissue expectedissuesayear displayorder /) {
if(exists $frequency->{$_}) {
push @keys, $_;
push @values, $frequency->{$_};
}
}
my $dbh = C4::Context->dbh;
my $query = "INSERT INTO subscription_frequencies";
$query .= '(' . join(',', @keys) . ')';
$query .= ' VALUES (' . ('?,' x (scalar(@keys)-1)) . '?)';
my $sth = $dbh->prepare($query);
my $rv = $sth->execute(@values);
if(defined $rv) {
return $dbh->last_insert_id(undef, undef, "subscription_frequencies", undef);
}
return $rv;
}
=head3 ModSubscriptionFrequency
=over 4
=item &ModSubscriptionFrequency($frequency);
Modifies a frequency
=item C<$frequency> is a hashref that can contains the following keys
=over 2
=item * id
=item * description
=item * unit
=item * issuesperunit
=item * unitsperissue
=item * expectedissuesayear
=item * displayorder
=back
Only id is mandatory.
=back
=cut
sub ModSubscriptionFrequency {
my $frequency = shift;
unless(
ref($frequency) eq 'HASH'
&& defined $frequency->{'id'} && $frequency->{'id'} > 0
&& (
(defined $frequency->{'description'}
&& $frequency->{'description'} ne '')
|| !defined $frequency->{'description'}
)
) {
return;
}
my @keys;
my @values;
foreach (qw/ description unit issuesperunit unitsperissue expectedissuesayear displayorder /) {
if(exists $frequency->{$_}) {
push @keys, $_;
push @values, $frequency->{$_};
}
}
my $dbh = C4::Context->dbh;
my $query = "UPDATE subscription_frequencies";
$query .= ' SET ' . join(' = ?,', @keys) . ' = ?';
$query .= ' WHERE id = ?';
my $sth = $dbh->prepare($query);
return $sth->execute(@values, $frequency->{'id'});
}
=head3 DelSubscriptionFrequency
=over 4
=item &DelSubscriptionFrequency($frequencyid);
Delete a frequency
=back
=cut
sub DelSubscriptionFrequency {
my $frequencyid = shift;
my $dbh = C4::Context->dbh;
my $query = qq{
DELETE FROM subscription_frequencies
WHERE id = ?
};
my $sth = $dbh->prepare($query);
$sth->execute($frequencyid);
}
=head3 GetSubscriptionsWithFrequency
my @subs = GetSubscriptionsWithFrequency($frequencyid);
Returns all subscriptions that are using a particular frequency
=cut
sub GetSubscriptionsWithFrequency {
my ($frequencyid) = @_;
return unless $frequencyid;
my $dbh = C4::Context->dbh;
my $query = qq{
SELECT *
FROM subscription
LEFT JOIN biblio ON subscription.biblionumber = biblio.biblionumber
WHERE periodicity = ?
};
my $sth = $dbh->prepare($query);
my @results;
if ($sth->execute($frequencyid)) {
@results = @{ $sth->fetchall_arrayref({}) };
}
return @results;
}
1;
__END__
=head1 AUTHOR
Koha Developement team <info@koha.org>
=cut