X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=src%2FModules%2FFactoids.pl;h=438471f5ca3ed4467704b9684d3f46baad727ef1;hb=f7cae48a17d6decd0a9bd997188271daa0a885b1;hp=5da983d4357c6e5fafca4e1d002526f5e1e46645;hpb=6fc9191943cad96ab17f89d115ebaf0e2638346a;p=infobot.git diff --git a/src/Modules/Factoids.pl b/src/Modules/Factoids.pl index 5da983d..438471f 100644 --- a/src/Modules/Factoids.pl +++ b/src/Modules/Factoids.pl @@ -14,6 +14,7 @@ use vars qw(%param); # Usage: &CmdFactInfo($faqtoid, $query); sub CmdFactInfo { my ($faqtoid, $query) = (lc $_[0], $_[1]); + $faqtoid =~ s/^cmd:/CMD:/; my @array; my $string = ""; @@ -64,9 +65,8 @@ sub CmdFactInfo { push(@array,$string); } - # modified: - # disabled for the time being... it's misleading/useless info. - if (0 && $factinfo{'modified_by'}) { + # modified: (TimRiker asks "why do you keep turning this off?) + if ($factinfo{'modified_by'}) { $string = "last modified"; my $time = $factinfo{'modified_time'}; @@ -98,7 +98,7 @@ sub CmdFactInfo { my $requested_by = $factinfo{'requested_by'}; $requested_by =~ /\!/; - $string .= "last by $`"; + $string .= ", last by $`"; my $requested_time = $factinfo{'requested_time'}; if ($requested_time) { @@ -129,7 +129,7 @@ sub CmdFactInfo { return; } - &performStrictReply("$factinfo{'factoid_key'} -- ". join("; ", @array) ."."); + &pSReply("$factinfo{'factoid_key'} -- ". join("; ", @array) ."."); return; } @@ -137,11 +137,14 @@ sub CmdFactStats { my ($type) = @_; if ($type =~ /^author$/i) { - my %hash = &dbGetCol("factoids", "factoid_key,created_by", "created_by IS NOT NULL"); + my %hash = &sqlSelectColHash("factoids", + "factoid_key,created_by", undef, + "WHERE created_by IS NOT NULL" + ); my %author; - foreach (keys %hash) { - my $thisnuh = $hash{$_}; + foreach my $factoid (keys %hash) { + my $thisnuh = $hash{$factoid}; $thisnuh =~ /^(\S+)!\S+@\S+$/; $author{lc $1}++; @@ -169,13 +172,16 @@ sub CmdFactStats { return &formListReply(0, $prefix, @list); } elsif ($type =~ /^vandalism$/i) { - &status("factstats(vandalism): starting..."); + &status("factstats(vandalism): starting..."); my $start_time = &timeget(); - my %data = &dbGetCol("factoids", "factoid_key,factoid_value", "factoid_value IS NOT NULL"); + my %data = &sqlSelectColHash("factoids", + "factoid_key,factoid_value", undef, + "WHERE factoid_value IS NOT NULL" + ); my @list; my $delta_time = &timedelta($start_time); - &status(sprintf("factstats(vandalismbroken): %.02f sec to retreive all factoids.", $delta_time)) if ($delta_time > 0); + &status(sprintf("factstats(vandalism): %.02f sec to retreive all factoids.", $delta_time)) if ($delta_time > 0); $start_time = &timeget(); # parse the factoids. @@ -187,7 +193,7 @@ sub CmdFactStats { } $delta_time = &timedelta($start_time); - &status(sprintf("factstats(vandalism): %.02f sec to complete.", $delta_time)) if ($delta_time > 0); + &status(sprintf("factstats(vandalism): %.02f sec to complete.", $delta_time)) if ($delta_time > 0); # bail out on no results. if (scalar @list == 0) { @@ -199,7 +205,7 @@ sub CmdFactStats { return &formListReply(1, $prefix, @list); } elsif ($type =~ /^total$/i) { - &status("factstats(total): starting..."); + &status("factstats(total): starting..."); my $start_time = &timeget(); my @list; my $str; @@ -230,7 +236,8 @@ sub CmdFactStats { push(@list, "total prepared for deletion - $str"); # total unique authors. - foreach ( &dbRawReturn("SELECT created_by FROM factoids WHERE created_by IS NOT NULL") ) { + # todo: convert to sqlSelectColHash ? (or ColArray?) + foreach ( &sqlRawReturn("SELECT created_by FROM factoids WHERE created_by IS NOT NULL") ) { /^(\S+)!/; my $nick = lc $1; $hash{$nick}++; @@ -239,7 +246,7 @@ sub CmdFactStats { undef %hash; # total unique requesters. - foreach ( &dbRawReturn("SELECT requested_by FROM factoids WHERE requested_by IS NOT NULL") ) { + foreach ( &sqlRawReturn("SELECT requested_by FROM factoids WHERE requested_by IS NOT NULL") ) { /^(\S+)!/; my $nick = lc $1; $hash{$nick}++; @@ -250,7 +257,7 @@ sub CmdFactStats { ### end of "job". my $delta_time = &timedelta($start_time); - &status(sprintf("factstats(broken): %.02f sec to retreive all factoids.", $delta_time)) if ($delta_time > 0); + &status(sprintf("factstats(broken): %.02f sec to retreive all factoids.", $delta_time)) if ($delta_time > 0); $start_time = &timeget(); # bail out on no results. @@ -259,7 +266,7 @@ sub CmdFactStats { } # parse the results. - my $prefix = "General factoid stiatistics "; + my $prefix = "General factoid statistics "; return &formListReply(1, $prefix, @list); } elsif ($type =~ /^deadredir$/i) { @@ -296,9 +303,12 @@ sub CmdFactStats { return &formListReply(1, $prefix, @newlist); } elsif ($type =~ /^dup(licate|e)$/i) { - &status("factstats(dupe): starting..."); + &status("factstats(dupe): starting..."); my $start_time = &timeget(); - my %hash = &dbGetCol("factoids", "factoid_key,factoid_value", "factoid_value IS NOT NULL", 1); + my %hash = &sqlSelectColHash("factoids", + "factoid_key,factoid_value", undef, + "WHERE factoid_value IS NOT NULL", 1 + ); my $refs = 0; my @list; my $v; @@ -329,7 +339,7 @@ sub CmdFactStats { &status("factstats(dupe): (good) dupe refs: $refs."); my $delta_time = &timedelta($start_time); - &status(sprintf("factstats(dupe): %.02f sec to complete", $delta_time)) if ($delta_time > 0); + &status(sprintf("factstats(dupe): %.02f sec to complete", $delta_time)) if ($delta_time > 0); # bail out on no results. if (scalar @list == 0) { @@ -414,7 +424,10 @@ sub CmdFactStats { return &formListReply(1, $prefix, @list); } elsif ($type =~ /^locked$/i) { - my %hash = &dbGetCol("factoids", "factoid_key,locked_by", "locked_by IS NOT NULL"); + my %hash = &sqlSelectColhash("factoids", + "factoid_key,locked_by", undef, + "WHERE locked_by IS NOT NULL" + ); my @list = keys %hash; for (@list) { @@ -425,7 +438,10 @@ sub CmdFactStats { return &formListReply(0, $prefix, @list); } elsif ($type =~ /^new$/i) { - my %hash = &dbGetCol("factoids", "factoid_key,created_time", "created_time IS NOT NULL"); + my %hash = &sqlSelectColHash("factoids", + "factoid_key,created_time", undef, + "WHERE created_time IS NOT NULL" + ); my %age; foreach (keys %hash) { @@ -491,7 +507,7 @@ sub CmdFactStats { } my $delta_time = sprintf("%.02fs", &timedelta($start_time) ); - &status("factstats(partdupe): $delta_time sec to complete.") if ($delta_time > 0); + &status("factstats(partdupe): $delta_time sec to complete.") if ($delta_time > 0); # bail out on no results. if (scalar @list == 0) { @@ -503,7 +519,10 @@ sub CmdFactStats { return &formListReply(1, $prefix, @list); } elsif ($type =~ /^profanity$/i) { - my %data = &dbGetCol("factoids", "factoid_key,factoid_value", "factoid_value IS NOT NULL"); + my %data = &sqlSelectColHash("factoids", + "factoid_key,factoid_value", undef, + "WHERE factoid_value IS NOT NULL" + ); my @list; foreach (keys %data) { @@ -519,6 +538,7 @@ sub CmdFactStats { "factoid_value", "^ see "); my %redir; my $f; + my $dangling = 0; for (@list) { my $factoid = $_; @@ -529,7 +549,8 @@ sub CmdFactStats { if (defined $redirval) { $redir{$redir}{$factoid} = 1; } else { - &WARN("factstats(redir): '$factoid' has loose link => '$redir'."); + &DEBUG("factstats(redir): '$factoid' has loose link => '$redir'."); + $dangling++; } } } @@ -545,11 +566,14 @@ sub CmdFactStats { } # parse the results. - my $prefix = "Redirections in factoids "; + my $prefix = "Redirections in factoids, $dangling dangling "; return &formListReply(1, $prefix, @newlist); } elsif ($type =~ /^request(ed)?$/i) { - my %hash = &dbGetCol("factoids", "factoid_key,requested_count", "requested_count IS NOT NULL", 1); + my %hash = &sqlSelectColHash("factoids", + "factoid_key,requested_count", undef, + "WHERE requested_count IS NOT NULL", 1 + ); if (!scalar keys %hash) { return 'sorry, no factoids have been questioned.'; @@ -574,9 +598,10 @@ sub CmdFactStats { return &formListReply(0, $prefix, @list); } elsif ($type =~ /^reqrate$/i) { - my %hash = &dbGetCol("factoids", - "factoid_key,(unix_timestamp() - created_time)/requested_count as rate", - "requested_by IS NOT NULL and created_time IS NOT NULL ORDER BY rate LIMIT 15", 1); + my %hash = &sqlSelectColHash("factoids", + "factoid_key,(unix_timestamp() - created_time)/requested_count as rate", undef, + "WHERE requested_by IS NOT NULL and created_time IS NOT NULL ORDER BY rate LIMIT 15", 1 + ); my $rate; my @list; @@ -593,7 +618,10 @@ sub CmdFactStats { return &formListReply(0, $prefix, @list); } elsif ($type =~ /^requesters?$/i) { - my %hash = &dbGetCol("factoids", "factoid_key,requested_by", "requested_by IS NOT NULL"); + my %hash = &sqlSelectColHash("factoids", + "factoid_key,requested_by", undef, + "WHERE requested_by IS NOT NULL" + ); my %requester; foreach (keys %hash) { @@ -642,7 +670,7 @@ sub CmdFactStats { for (@list) { my $factoid = $_; my $val = &getFactInfo($factoid, "factoid_value"); - + next unless ($val =~ /^see( also)? (.*?)\.?$/i); my $redirf = lc $2; @@ -700,14 +728,10 @@ sub CmdFactStats { return &formListReply(1, $prefix, @list); } elsif ($type =~ /^unrequest(ed)?$/i) { - my @list = &dbRawReturn("SELECT factoid_key FROM factoids WHERE requested_count IS NULL"); - - for (@list) { - s/([\,\;]+)/\037$1\037/g; - } + # todo: use sqlSelect() + my ($count) = &sqlRawReturn("SELECT COUNT(*) FROM factoids WHERE requested_count = '0'"); - my $prefix = "Unrequested factoids "; - return &formListReply(0, $prefix, @list); + return "Unrequested factoids: $count"; } return "error: invalid type => '$type'.";