package C4::Tags;
+
+# Copyright Liblime 2008
+# Parts Copyright ACPL 2011
+#
# This file is part of Koha.
#
# Koha is free software; you can redistribute it and/or modify it under the
# 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;
use C4::Context;
use C4::Debug;
+#use Data::Dumper;
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
use vars qw($ext_dict $select_all @fields);
BEGIN {
- $VERSION = 0.03;
+ $VERSION = 3.07.00.049;
@ISA = qw(Exporter);
@EXPORT_OK = qw(
&get_tag &get_tags &get_tag_rows
&whitelist
&is_approved
&approval_counts
+ &get_count_by_tag_status
&get_filters
);
# %EXPORT_TAGS = ();
$select_all = "SELECT " . join(',',@fields) . "\n FROM tags_all\n";
}
-sub get_filters (;$) {
+sub get_filters {
my $query = "SELECT * FROM tags_filters ";
my ($sth);
if (@_) {
# (SELECT count(*) FROM tags_all ) as tags_all,
# (SELECT count(*) FROM tags_index ) as tags_index,
-sub approval_counts () {
+sub approval_counts {
my $query = "SELECT
(SELECT count(*) FROM tags_approval WHERE approved= 1) as approved_count,
(SELECT count(*) FROM tags_approval WHERE approved=-1) as rejected_count,
return $result;
}
-sub remove_tag ($;$) {
+=head2 get_count_by_tag_status
+
+ get_count_by_tag_status($status);
+
+Takes a status and gets a count of tags with that status
+
+=cut
+
+sub get_count_by_tag_status {
+ my ($status) = @_;
+ my $dbh = C4::Context->dbh;
+ my $query =
+ "SELECT count(*) FROM tags_approval WHERE approved=?";
+ my $sth = $dbh->prepare($query);
+ $sth->execute( $status );
+ return $sth->fetchrow;
+}
+
+sub remove_tag {
my $tag_id = shift or return undef;
my $user_id = (@_) ? shift : undef;
my $rows = (defined $user_id) ?
delete_tag_row_by_id($tag_id);
}
-sub delete_tag_index ($$) {
+sub delete_tag_index {
(@_) or return undef;
my $sth = C4::Context->dbh->prepare("DELETE FROM tags_index WHERE term = ? AND biblionumber = ? LIMIT 1");
$sth->execute(@_);
return $sth->rows || 0;
}
-sub delete_tag_approval ($) {
+sub delete_tag_approval {
(@_) or return undef;
my $sth = C4::Context->dbh->prepare("DELETE FROM tags_approval WHERE term = ? LIMIT 1");
$sth->execute(shift);
return $sth->rows || 0;
}
-sub delete_tag_row_by_id ($) {
+sub delete_tag_row_by_id {
(@_) or return undef;
my $sth = C4::Context->dbh->prepare("DELETE FROM tags_all WHERE tag_id = ? LIMIT 1");
$sth->execute(shift);
return $sth->rows || 0;
}
-sub delete_tag_rows_by_ids (@) {
+sub delete_tag_rows_by_ids {
(@_) or return undef;
my $i=0;
foreach(@_) {
return $i;
}
-sub get_tag_rows ($) {
+sub get_tag_rows {
my $hash = shift || {};
my @ok_fields = @fields;
push @ok_fields, 'limit'; # push the limit! :)
return $sth->fetchall_arrayref({});
}
-sub get_tags (;$) { # i.e., from tags_index
+sub get_tags { # i.e., from tags_index
my $hash = shift || {};
my @ok_fields = qw(term biblionumber weight limit sort approved);
my $wheres;
return $sth->fetchall_arrayref({});
}
-sub get_approval_rows (;$) { # i.e., from tags_approval
+sub get_approval_rows { # i.e., from tags_approval
my $hash = shift || {};
my @ok_fields = qw(term approved date_approved approved_by weight_total limit sort borrowernumber);
my $wheres;
return $sth->fetchall_arrayref({});
}
-sub is_approved ($) {
+sub is_approved {
my $term = shift or return undef;
my $sth = C4::Context->dbh->prepare("SELECT approved FROM tags_approval WHERE term = ?");
$sth->execute($term);
return $sth->fetchrow;
}
-sub get_tag_index ($;$) {
+sub get_tag_index {
my $term = shift or return undef;
my $sth;
if (@_) {
return scalar @_;
}
-sub add_tag_approval ($;$$) { # or disapproval
+sub add_tag_approval { # or disapproval
$debug and warn "add_tag_approval(" . join(", ",map {defined($_) ? $_ : 'UNDEF'} @_) . ")";
my $term = shift or return undef;
my $query = "SELECT * FROM tags_approval WHERE term = ?";
return $sth->rows;
}
-sub mod_tag_approval ($$$) {
+sub mod_tag_approval {
my $operator = shift;
defined $operator or return undef; # have to test defined to allow =0 (kohaadmin)
my $term = shift or return undef;
$sth->execute($operator,$approval,$term);
}
-sub add_tag_index ($$;$) {
+sub add_tag_index {
my $term = shift or return undef;
my $biblionumber = shift or return undef;
my $query = "SELECT * FROM tags_index WHERE term = ? AND biblionumber = ?";
return $sth->rows;
}
-sub get_tag ($) { # by tag_id
+sub get_tag { # by tag_id
(@_) or return undef;
my $sth = C4::Context->dbh->prepare("$select_all WHERE tag_id = ?");
$sth->execute(shift);
return $sth->fetchrow_hashref;
}
-sub rectify_weights (;$) {
+sub rectify_weights {
my $dbh = C4::Context->dbh;
my $sth;
my $query = "
return ($results,\%tally);
}
-sub increment_weights ($$) {
+sub increment_weights {
increment_weight(@_);
increment_weight_total(shift);
}
-sub decrement_weights ($$) {
+sub decrement_weights {
decrement_weight(@_);
decrement_weight_total(shift);
}
-sub increment_weight_total ($) {
+sub increment_weight_total {
_set_weight_total('weight_total+1',shift);
}
-sub increment_weight ($$) {
+sub increment_weight {
_set_weight('weight+1',shift,shift);
}
-sub decrement_weight_total ($) {
+sub decrement_weight_total {
_set_weight_total('weight_total-1',shift);
}
-sub decrement_weight ($$) {
+sub decrement_weight {
_set_weight('weight-1',shift,shift);
}
-sub _set_weight_total ($$) {
+sub _set_weight_total {
my $sth = C4::Context->dbh->prepare("
UPDATE tags_approval
SET weight_total=" . (shift) . "
"); # note: CANNOT use "?" for weight_total (see the args above).
$sth->execute(shift); # just the term
}
-sub _set_weight ($$$) {
+sub _set_weight {
my $dbh = C4::Context->dbh;
my $sth = $dbh->prepare("
UPDATE tags_index
$sth->execute(@_);
}
-sub add_tag ($$;$$) { # biblionumber,term,[borrowernumber,approvernumber]
+sub add_tag { # biblionumber,term,[borrowernumber,approvernumber]
my $biblionumber = shift or return undef;
my $term = shift or return undef;
my $borrowernumber = (@_) ? shift : 0; # the user, default to kohaadmin