X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=C4%2FClassSource.pm;h=ada9540704bfcbed3213187c6fecfccf6d4f9411;hb=87564a834b885188ee0e6fde800775b403d2e1c0;hp=8d8478d10d928f8f78f10b5af88824a9f1de5f5f;hpb=43d3efe39175488ee81e8c6dd4cddaefb1f3f9e3;p=koha_fer diff --git a/C4/ClassSource.pm b/C4/ClassSource.pm index 8d8478d10d..ada9540704 100644 --- a/C4/ClassSource.pm +++ b/C4/ClassSource.pm @@ -13,19 +13,21 @@ package C4::ClassSource; # 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, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. use strict; +use warnings; + require Exporter; use C4::Context; -use C4::Koha; +use C4::ClassSortRoutine; use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS); # set the version for version checking -$VERSION = 3.00; +$VERSION = 3.07.00.049; =head1 NAME @@ -47,18 +49,20 @@ sources and sorting rules. @ISA = qw(Exporter); @EXPORT = qw( - &GetClassSources - &AddClassSource - &GetClassSource - &ModClassSource - &DelClassSource - &GetClassSortRules - &AddClassSortRule - &GetClassSortRule - &ModClassSortRule - &DelClassSortRule + &GetClassSources + &AddClassSource + &GetClassSource + &ModClassSource + &DelClassSource + &GetClassSortRules + &AddClassSortRule + &GetClassSortRule + &ModClassSortRule + &DelClassSortRule - &GetSourcesForSortRule + &GetSourcesForSortRule + &GetClassSort + ); =head2 GetClassSources @@ -89,12 +93,11 @@ 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; @@ -112,11 +115,10 @@ sub AddClassSource { my ($cn_source, $description, $used, $class_sort_rule) = @_; my $dbh = C4::Context->dbh; - my $sth = $dbh->prepare_cached("INSERT INTO `class_sources` + my $sth = $dbh->prepare("INSERT INTO `class_sources` (`cn_source`, `description`, `used`, `class_sort_rule`) VALUES (?, ?, ?, ?)"); $sth->execute($cn_source, $description, $used, $class_sort_rule); - $sth->finish(); } @@ -132,10 +134,9 @@ 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; } @@ -151,13 +152,12 @@ sub ModClassSource { my ($cn_source, $description, $used, $class_sort_rule) = @_; my $dbh = C4::Context->dbh; - my $sth = $dbh->prepare_cached("UPDATE `class_sources` + my $sth = $dbh->prepare("UPDATE `class_sources` SET `description` = ?, `used` = ?, `class_sort_rule` = ? WHERE `cn_source` = ?"); $sth->execute($description, $used, $class_sort_rule, $cn_source); - $sth->finish(); } @@ -173,9 +173,8 @@ sub DelClassSource { my ($cn_source) = @_; my $dbh = C4::Context->dbh; - my $sth = $dbh->prepare_cached("DELETE FROM `class_sources` WHERE `cn_source` = ?"); + my $sth = $dbh->prepare("DELETE FROM `class_sources` WHERE `cn_source` = ?"); $sth->execute($cn_source); - $sth->finish(); } @@ -183,22 +182,22 @@ sub DelClassSource { my $sort_rules = GetClassSortRules(); - Returns reference to hash of references to - the class sorting rules, keyed on class_sort_rule - +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'} + 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 @@ -206,12 +205,11 @@ sub GetClassSortRules { my %class_sort_rules = (); my $dbh = C4::Context->dbh; - my $sth = $dbh->prepare_cached("SELECT * FROM `class_sort_rules`"); + my $sth = $dbh->prepare("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; @@ -229,11 +227,10 @@ sub AddClassSortRule { my ($class_sort_rule, $description, $sort_routine) = @_; my $dbh = C4::Context->dbh; - my $sth = $dbh->prepare_cached("INSERT INTO `class_sort_rules` + my $sth = $dbh->prepare("INSERT INTO `class_sort_rules` (`class_sort_rule`, `description`, `sort_routine`) VALUES (?, ?, ?)"); $sth->execute($class_sort_rule, $description, $sort_routine); - $sth->finish(); } @@ -249,10 +246,9 @@ 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; } @@ -268,12 +264,11 @@ sub ModClassSortRule { my ($class_sort_rule, $description, $sort_routine) = @_; my $dbh = C4::Context->dbh; - my $sth = $dbh->prepare_cached("UPDATE `class_sort_rules` + my $sth = $dbh->prepare("UPDATE `class_sort_rules` SET `description` = ?, `sort_routine` = ? WHERE `class_sort_rule` = ?"); $sth->execute($description, $sort_routine, $class_sort_rule); - $sth->finish(); } @@ -289,9 +284,8 @@ 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` = ?"); + my $sth = $dbh->prepare("DELETE FROM `class_sort_rules` WHERE `class_sort_rule` = ?"); $sth->execute($class_sort_rule); - $sth->finish(); } @@ -309,21 +303,49 @@ 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 = ?"); + my $sth = $dbh->prepare("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; } - $sth->finish(); return @sources; } +=head2 GetClassSort + + my $cn_sort = GetClassSort($cn_source, $cn_class, $cn_item); + +Get the sort key corresponding to the classification part and item part +and the defined call number source. + +=cut + +sub GetClassSort { + + my ($cn_source, $cn_class, $cn_item) = @_; + + my $source_ref = GetClassSource($cn_source); + unless (defined $source_ref) { + $source_ref = GetClassSource(C4::Context->preference("DefaultClassificationSource")); + } + 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); + +} + 1; =head1 AUTHOR -Koha Developement team +Koha Development Team =cut