X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=C4%2FClassSource.pm;h=6ee5fc880692bff4e0fa0fb66092d07ff6fc1213;hb=a56cbc6d47ab11e7d4f599e2eec3a03a7c7f4690;hp=8d8478d10d928f8f78f10b5af88824a9f1de5f5f;hpb=43d3efe39175488ee81e8c6dd4cddaefb1f3f9e3;p=srvgit diff --git a/C4/ClassSource.pm b/C4/ClassSource.pm index 8d8478d10d..6ee5fc8806 100644 --- a/C4/ClassSource.pm +++ b/C4/ClassSource.pm @@ -1,31 +1,37 @@ package C4::ClassSource; -# Copyright (C) 2007 LibLime -# +# Copyright 2022 Koha Development Team # 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 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 3 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. +# 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., 59 Temple Place, -# Suite 330, Boston, MA 02111-1307 USA +# You should have received a copy of the GNU General Public License +# along with Koha; if not, see . -use strict; -require Exporter; -use C4::Context; -use C4::Koha; - -use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS); +use Modern::Perl; -# set the version for version checking -$VERSION = 3.00; +use C4::Context; +use C4::ClassSortRoutine qw( GetClassSortKey ); + +our (@ISA, @EXPORT_OK); +BEGIN { + require Exporter; + @ISA = qw(Exporter); + @EXPORT_OK = qw( + GetClassSources + GetClassSource + GetClassSortRule + GetClassSort + ); +} =head1 NAME @@ -44,23 +50,6 @@ sources and sorting rules. =cut - -@ISA = qw(Exporter); -@EXPORT = qw( - &GetClassSources - &AddClassSource - &GetClassSource - &ModClassSource - &DelClassSource - &GetClassSortRules - &AddClassSortRule - &GetClassSortRule - &ModClassSortRule - &DelClassSortRule - - &GetSourcesForSortRule -); - =head2 GetClassSources my $sources = GetClassSources(); @@ -89,37 +78,16 @@ sub GetClassSources { my %class_sources = (); my $dbh = C4::Context->dbh; - my $sth = $dbh->prepare_cached("SELECT * FROM `class_sources`"); + my $sth = $dbh->prepare("SELECT * FROM `class_sources`"); $sth->execute(); while (my $source = $sth->fetchrow_hashref) { $class_sources{ $source->{'cn_source'} } = $source; } - $sth->finish(); return \%class_sources; } -=head2 AddClassSource - - AddClassSource($cn_source, $description, $used, $class_sort_rule); - - Adds a class_sources row. - -=cut - -sub AddClassSource { - - my ($cn_source, $description, $used, $class_sort_rule) = @_; - my $dbh = C4::Context->dbh; - my $sth = $dbh->prepare_cached("INSERT INTO `class_sources` - (`cn_source`, `description`, `used`, `class_sort_rule`) - VALUES (?, ?, ?, ?)"); - $sth->execute($cn_source, $description, $used, $class_sort_rule); - $sth->finish(); - -} - =head2 GetClassSource my $hashref = GetClassSource($cn_source); @@ -132,111 +100,12 @@ sub GetClassSource { my ($cn_source) = (@_); my $dbh = C4::Context->dbh; - my $sth = $dbh->prepare_cached("SELECT * FROM `class_sources` WHERE cn_source = ?"); + my $sth = $dbh->prepare("SELECT * FROM `class_sources` WHERE cn_source = ?"); $sth->execute($cn_source); my $row = $sth->fetchrow_hashref(); - $sth->finish(); return $row; } -=head2 ModClassSource - - ModClassSource($cn_source, $description, $used, $class_sort_rule); - - Updates a class_sources row. - -=cut - -sub ModClassSource { - - my ($cn_source, $description, $used, $class_sort_rule) = @_; - my $dbh = C4::Context->dbh; - my $sth = $dbh->prepare_cached("UPDATE `class_sources` - SET `description` = ?, - `used` = ?, - `class_sort_rule` = ? - WHERE `cn_source` = ?"); - $sth->execute($description, $used, $class_sort_rule, $cn_source); - $sth->finish(); - -} - -=head2 DelClassSource - - DelClassSource($cn_source); - - Deletes class_sources row. - -=cut - -sub DelClassSource { - - my ($cn_source) = @_; - my $dbh = C4::Context->dbh; - my $sth = $dbh->prepare_cached("DELETE FROM `class_sources` WHERE `cn_source` = ?"); - $sth->execute($cn_source); - $sth->finish(); - -} - -=head2 GetClassSortRules - - my $sort_rules = GetClassSortRules(); - - Returns reference to hash of references to - the class sorting rules, keyed on class_sort_rule - -=head3 Example - -my $sort_rules = GetClassSortRules(); -my @sort_rules = (); -foreach my $sort_rule (sort keys %$sort_rules) { - my $sort_rule = $sort_rules->{$sort_rule}; - push @sort_rules, - { - rule => $sort_rule->{'class_sort_rule'}, - description => $sort_rule->{'description'}, - sort_routine => $sort_rule->{'sort_routine'} - } -} - -=cut - -sub GetClassSortRules { - - my %class_sort_rules = (); - my $dbh = C4::Context->dbh; - my $sth = $dbh->prepare_cached("SELECT * FROM `class_sort_rules`"); - $sth->execute(); - while (my $sort_rule = $sth->fetchrow_hashref) { - $class_sort_rules{ $sort_rule->{'class_sort_rule'} } = $sort_rule; - } - $sth->finish(); - - return \%class_sort_rules; - -} - -=head2 AddClassSortRule - - AddClassSortRule($class_sort_rule, $description, $sort_routine); - - Adds a class_sort_rules row. - -=cut - -sub AddClassSortRule { - - my ($class_sort_rule, $description, $sort_routine) = @_; - my $dbh = C4::Context->dbh; - my $sth = $dbh->prepare_cached("INSERT INTO `class_sort_rules` - (`class_sort_rule`, `description`, `sort_routine`) - VALUES (?, ?, ?)"); - $sth->execute($class_sort_rule, $description, $sort_routine); - $sth->finish(); - -} - =head2 GetClassSortRule my $hashref = GetClassSortRule($class_sort_rule); @@ -249,74 +118,38 @@ sub GetClassSortRule { my ($class_sort_rule) = (@_); my $dbh = C4::Context->dbh; - my $sth = $dbh->prepare_cached("SELECT * FROM `class_sort_rules` WHERE `class_sort_rule` = ?"); + my $sth = $dbh->prepare("SELECT * FROM `class_sort_rules` WHERE `class_sort_rule` = ?"); $sth->execute($class_sort_rule); my $row = $sth->fetchrow_hashref(); - $sth->finish(); return $row; } -=head2 ModClassSortRule +=head2 GetClassSort - ModClassSortRule($class_sort_rule, $description, $sort_routine); + my $cn_sort = GetClassSort($cn_source, $cn_class, $cn_item); - Updates a class_sort_rules row. +Get the sort key corresponding to the classification part and item part +and the defined call number source. =cut -sub ModClassSortRule { +sub GetClassSort { - my ($class_sort_rule, $description, $sort_routine) = @_; - my $dbh = C4::Context->dbh; - my $sth = $dbh->prepare_cached("UPDATE `class_sort_rules` - SET `description` = ?, - `sort_routine` = ? - WHERE `class_sort_rule` = ?"); - $sth->execute($description, $sort_routine, $class_sort_rule); - $sth->finish(); - -} + my ($cn_source, $cn_class, $cn_item) = @_; -=head2 DelClassSortRule - - DelClassSortRule($class_sort_rule); - - Deletes class_sort_rules row. - -=cut - -sub DelClassSortRule { - - my ($class_sort_rule) = @_; - my $dbh = C4::Context->dbh; - my $sth = $dbh->prepare_cached("DELETE FROM `class_sort_rules` WHERE `class_sort_rule` = ?"); - $sth->execute($class_sort_rule); - $sth->finish(); - -} - -=head2 GetSourcesForSortRule - - my @source = GetSourcesForSortRule($class_sort_rule); - - Retrieves an array class_source.cn_rule for each source - that uses the supplied $class_sort_rule. - -=cut - -sub GetSourcesForSortRule { - - my ($class_sort_rule) = @_; - - my $dbh = C4::Context->dbh; - my $sth = $dbh->prepare_cached("SELECT cn_source FROM class_sources WHERE class_sort_rule = ?"); - $sth->execute($class_sort_rule); - my @sources = (); - while (my ($source) = $sth->fetchrow_array()) { - push @sources, $source; + my $source_ref = GetClassSource($cn_source); + unless (defined $source_ref) { + $source_ref = GetClassSource(C4::Context->preference("DefaultClassificationSource")); } - $sth->finish(); - return @sources; + my $routine = ""; + if (defined $source_ref) { + my $rule_ref = GetClassSortRule($source_ref->{'class_sort_rule'}); + if (defined $rule_ref) { + $routine = $rule_ref->{'sort_routine'}; + } + } + + return GetClassSortKey($routine, $cn_class, $cn_item); } @@ -324,6 +157,6 @@ sub GetSourcesForSortRule { =head1 AUTHOR -Koha Developement team +Koha Development Team =cut