From 7c174930ac1618a53dbda4bc785b335f21113238 Mon Sep 17 00:00:00 2001 From: Joe Atzberger Date: Mon, 21 Jul 2008 20:28:33 -0500 Subject: [PATCH] Bug 2279: TagsModeration effectiveness restored. Signed-off-by: Joshua Ferraro --- C4/Tags.pm | 38 ++++++++++++++++++++++++-------------- opac/opac-tags.pl | 4 ++-- 2 files changed, 26 insertions(+), 16 deletions(-) diff --git a/C4/Tags.pm b/C4/Tags.pm index cfdebb5aa4..5f2ff6988a 100644 --- a/C4/Tags.pm +++ b/C4/Tags.pm @@ -409,24 +409,27 @@ sub remove_filter { } 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 = ?"; my $sth = C4::Context->dbh->prepare($query); $sth->execute($term); ($sth->rows) and return increment_weight_total($term); - my $operator = (@_ ? shift : 0); + my $operator = shift || 0; + my $approval = (@_ ? shift : 0); # default is unapproved + my @exe_args = ($term); # all 3 queries will use this argument if ($operator) { - my $approval = (@_ ? shift : 1); # default is to approve $query = "INSERT INTO tags_approval (term,approved_by,approved,date_approved) VALUES (?,?,?,NOW())"; - $debug and print STDERR "add_tag_approval query:\n$query\nadd_tag_approval args: ($term,$operator,$approval)\n"; - $sth = C4::Context->dbh->prepare($query); - $sth->execute($term,$operator,$approval); + push @exe_args, $operator, $approval; + } elsif ($approval) { + $query = "INSERT INTO tags_approval (term,approved,date_approved) VALUES (?,?,NOW())"; + push @exe_args, $approval; } else { $query = "INSERT INTO tags_approval (term,date_approved) VALUES (?,NOW())"; - $debug and print STDERR "add_tag_approval query:\n$query\nadd_tag_approval args: ($term)\n"; - $sth = C4::Context->dbh->prepare($query); - $sth->execute($term); } + $debug and print STDERR "add_tag_approval query: $query\nadd_tag_approval args: (" . join(", ", @exe_args) . ")\n"; + $sth = C4::Context->dbh->prepare($query); + $sth->execute(@exe_args); return $sth->rows; } @@ -434,9 +437,9 @@ 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; - my $approval = (@_ ? shift : 1); # default is to approve + my $approval = (scalar @_ ? shift : 1); # default is to approve my $query = "UPDATE tags_approval SET approved_by=?, approved=?, date_approved=NOW() WHERE term = ?"; - $debug and print STDERR "mod_tag_approval query:\n$query\nmod_tag_approval args: ($operator,$approval,$term)\n"; + $debug and print STDERR "mod_tag_approval query: $query\nmod_tag_approval args: ($operator,$approval,$term)\n"; my $sth = C4::Context->dbh->prepare($query); $sth->execute($operator,$approval,$term); } @@ -449,7 +452,7 @@ sub add_tag_index ($$;$) { $sth->execute($term,$biblionumber); ($sth->rows) and return increment_weight($term,$biblionumber); $query = "INSERT INTO tags_index (term,biblionumber) VALUES (?,?)"; - $debug and print "add_tag_index query:\n$query\nadd_tag_index args: ($term,$biblionumber)\n"; + $debug and print STDERR "add_tag_index query: $query\nadd_tag_index args: ($term,$biblionumber)\n"; $sth = C4::Context->dbh->prepare($query); $sth->execute($term,$biblionumber); return $sth->rows; @@ -539,7 +542,7 @@ sub add_tag ($$;$$) { # biblionumber,term,[borrowernumber,approvernumber] my $query = "INSERT INTO tags_all (borrowernumber,biblionumber,term,date_created) VALUES (?,?,?,NOW())"; - $debug and print STDERR "add_tag query:\n $query\n", + $debug and print STDERR "add_tag query: $query\n", "add_tag query args: ($borrowernumber,$biblionumber,$term)\n"; if (scalar @$rows) { $debug and carp "Duplicate tag detected. Tag not added."; @@ -552,12 +555,15 @@ sub add_tag ($$;$$) { # biblionumber,term,[borrowernumber,approvernumber] # then if (scalar @_) { # if arg remains, it is the borrowernumber of the approver: tag is pre-approved. my $approver = shift; - add_tag_approval($term,$approver); + $debug and print STDERR "term '$term' pre-approved by borrower #$approver\n"; + add_tag_approval($term,$approver,1); add_tag_index($term,$biblionumber,$approver); } elsif (is_approved($term) >= 1) { - add_tag_approval($term,1); + $debug and print STDERR "term '$term' approved by whitelist\n"; + add_tag_approval($term,0,1); add_tag_index($term,$biblionumber,1); } else { + $debug and print STDERR "term '$term' NOT approved (yet)\n"; add_tag_approval($term); add_tag_index($term,$biblionumber); } @@ -588,6 +594,10 @@ Using external Ispell is recommended for both ease of use and performance. Note language version of Ispell can be installed. It is also possible to modify the dictionary at the command line to affect the desired content. +WARNING: The default Ispell dictionary includes (properly spelled) obscenities! Users +should build their own wordlist and recompile Ispell based on it. See man ispell for +instructions. + =head2 Table Structure The tables used by tags are: diff --git a/opac/opac-tags.pl b/opac/opac-tags.pl index 884fb74d0a..f3c514324a 100755 --- a/opac/opac-tags.pl +++ b/opac/opac-tags.pl @@ -132,13 +132,13 @@ if (scalar @newtags_keys) { } } my $result = ($openadds) ? - add_tag($biblionumber,$clean_tag,$loggedinuser,0) : # pre-approved + add_tag($biblionumber,$clean_tag,$loggedinuser,$loggedinuser) : # pre-approved add_tag($biblionumber,$clean_tag,$loggedinuser) ; if ($result) { $counts{$biblionumber}++; } else { push @errors, {failed_add_tag=>$clean_tag}; - warn "add_tag($biblionumber,$clean_tag,$loggedinuser...) returned bad result ($result)"; + warn "add_tag($biblionumber,$clean_tag,$loggedinuser...) returned bad result (" . (defined $result ? $result : 'UNDEF') .")"; } } } -- 2.39.5