1 package C4::ClassSource;
3 # Copyright (C) 2007 LibLime
5 # This file is part of Koha.
7 # Koha is free software; you can redistribute it and/or modify it under the
8 # terms of the GNU General Public License as published by the Free Software
9 # Foundation; either version 2 of the License, or (at your option) any later
12 # Koha is distributed in the hope that it will be useful, but WITHOUT ANY
13 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
14 # A PARTICULAR PURPOSE. See the GNU General Public License for more details.
16 # You should have received a copy of the GNU General Public License along with
17 # Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
18 # Suite 330, Boston, MA 02111-1307 USA
25 use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
27 # set the version for version checking
32 C4::ClassSources - handle classification sources in Koha
40 This module deals with manipulating classification
41 sources and sorting rules.
61 &GetSourcesForSortRule
64 =head2 GetClassSources
66 my $sources = GetClassSources();
68 Returns reference to hash of references to
69 the class sources, keyed on cn_source.
73 my $sources = GetClassSources();
75 foreach my $cn_source (sort keys %$sources) {
76 my $source = $sources->{$cn_source};
79 code => $source->{'cn_source'},
80 description => $source->{'description'},
81 used => $source->{'used'},
82 sortrule => $source->{'class_sort_rule'}
90 my %class_sources = ();
91 my $dbh = C4::Context->dbh;
92 my $sth = $dbh->prepare_cached("SELECT * FROM `class_sources`");
94 while (my $source = $sth->fetchrow_hashref) {
95 $class_sources{ $source->{'cn_source'} } = $source;
99 return \%class_sources;
103 =head2 AddClassSource
105 AddClassSource($cn_source, $description, $used, $class_sort_rule);
107 Adds a class_sources row.
113 my ($cn_source, $description, $used, $class_sort_rule) = @_;
114 my $dbh = C4::Context->dbh;
115 my $sth = $dbh->prepare_cached("INSERT INTO `class_sources`
116 (`cn_source`, `description`, `used`, `class_sort_rule`)
117 VALUES (?, ?, ?, ?)");
118 $sth->execute($cn_source, $description, $used, $class_sort_rule);
123 =head2 GetClassSource
125 my $hashref = GetClassSource($cn_source);
127 Retrieves a class_sources row by cn_source.
133 my ($cn_source) = (@_);
134 my $dbh = C4::Context->dbh;
135 my $sth = $dbh->prepare_cached("SELECT * FROM `class_sources` WHERE cn_source = ?");
136 $sth->execute($cn_source);
137 my $row = $sth->fetchrow_hashref();
142 =head2 ModClassSource
144 ModClassSource($cn_source, $description, $used, $class_sort_rule);
146 Updates a class_sources row.
152 my ($cn_source, $description, $used, $class_sort_rule) = @_;
153 my $dbh = C4::Context->dbh;
154 my $sth = $dbh->prepare_cached("UPDATE `class_sources`
155 SET `description` = ?,
157 `class_sort_rule` = ?
158 WHERE `cn_source` = ?");
159 $sth->execute($description, $used, $class_sort_rule, $cn_source);
164 =head2 DelClassSource
166 DelClassSource($cn_source);
168 Deletes class_sources row.
174 my ($cn_source) = @_;
175 my $dbh = C4::Context->dbh;
176 my $sth = $dbh->prepare_cached("DELETE FROM `class_sources` WHERE `cn_source` = ?");
177 $sth->execute($cn_source);
182 =head2 GetClassSortRules
184 my $sort_rules = GetClassSortRules();
186 Returns reference to hash of references to
187 the class sorting rules, keyed on class_sort_rule
191 my $sort_rules = GetClassSortRules();
193 foreach my $sort_rule (sort keys %$sort_rules) {
194 my $sort_rule = $sort_rules->{$sort_rule};
197 rule => $sort_rule->{'class_sort_rule'},
198 description => $sort_rule->{'description'},
199 sort_routine => $sort_rule->{'sort_routine'}
205 sub GetClassSortRules {
207 my %class_sort_rules = ();
208 my $dbh = C4::Context->dbh;
209 my $sth = $dbh->prepare_cached("SELECT * FROM `class_sort_rules`");
211 while (my $sort_rule = $sth->fetchrow_hashref) {
212 $class_sort_rules{ $sort_rule->{'class_sort_rule'} } = $sort_rule;
216 return \%class_sort_rules;
220 =head2 AddClassSortRule
222 AddClassSortRule($class_sort_rule, $description, $sort_routine);
224 Adds a class_sort_rules row.
228 sub AddClassSortRule {
230 my ($class_sort_rule, $description, $sort_routine) = @_;
231 my $dbh = C4::Context->dbh;
232 my $sth = $dbh->prepare_cached("INSERT INTO `class_sort_rules`
233 (`class_sort_rule`, `description`, `sort_routine`)
235 $sth->execute($class_sort_rule, $description, $sort_routine);
240 =head2 GetClassSortRule
242 my $hashref = GetClassSortRule($class_sort_rule);
244 Retrieves a class_sort_rules row by class_sort_rule.
248 sub GetClassSortRule {
250 my ($class_sort_rule) = (@_);
251 my $dbh = C4::Context->dbh;
252 my $sth = $dbh->prepare_cached("SELECT * FROM `class_sort_rules` WHERE `class_sort_rule` = ?");
253 $sth->execute($class_sort_rule);
254 my $row = $sth->fetchrow_hashref();
259 =head2 ModClassSortRule
261 ModClassSortRule($class_sort_rule, $description, $sort_routine);
263 Updates a class_sort_rules row.
267 sub ModClassSortRule {
269 my ($class_sort_rule, $description, $sort_routine) = @_;
270 my $dbh = C4::Context->dbh;
271 my $sth = $dbh->prepare_cached("UPDATE `class_sort_rules`
272 SET `description` = ?,
274 WHERE `class_sort_rule` = ?");
275 $sth->execute($description, $sort_routine, $class_sort_rule);
280 =head2 DelClassSortRule
282 DelClassSortRule($class_sort_rule);
284 Deletes class_sort_rules row.
288 sub DelClassSortRule {
290 my ($class_sort_rule) = @_;
291 my $dbh = C4::Context->dbh;
292 my $sth = $dbh->prepare_cached("DELETE FROM `class_sort_rules` WHERE `class_sort_rule` = ?");
293 $sth->execute($class_sort_rule);
298 =head2 GetSourcesForSortRule
300 my @source = GetSourcesForSortRule($class_sort_rule);
302 Retrieves an array class_source.cn_rule for each source
303 that uses the supplied $class_sort_rule.
307 sub GetSourcesForSortRule {
309 my ($class_sort_rule) = @_;
311 my $dbh = C4::Context->dbh;
312 my $sth = $dbh->prepare_cached("SELECT cn_source FROM class_sources WHERE class_sort_rule = ?");
313 $sth->execute($class_sort_rule);
315 while (my ($source) = $sth->fetchrow_array()) {
316 push @sources, $source;
327 Koha Developement team <info@koha.org>