X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=src%2FModules%2FFactoids.pl;h=438471f5ca3ed4467704b9684d3f46baad727ef1;hb=f7cae48a17d6decd0a9bd997188271daa0a885b1;hp=7b1ac1446010d76c9d3aebb3593cf1004e4a7419;hpb=b0ed64e5f19d957102c6e73fc79b06801c1a4ecc;p=infobot.git diff --git a/src/Modules/Factoids.pl b/src/Modules/Factoids.pl index 7b1ac14..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 = ""; @@ -22,7 +23,9 @@ sub CmdFactInfo { return; } - my %factinfo = &dbGetColNiceHash("factoids", "*", "factoid_key=".&dbQuote($faqtoid)); + my %factinfo = &sqlSelectRowHash("factoids", "*", + { factoid_key => $faqtoid } + ); # factoid does not exist. if (scalar (keys %factinfo) <= 1) { @@ -62,7 +65,7 @@ sub CmdFactInfo { push(@array,$string); } - # modified: + # modified: (TimRiker asks "why do you keep turning this off?) if ($factinfo{'modified_by'}) { $string = "last modified"; @@ -75,14 +78,8 @@ sub CmdFactInfo { } } - my @x; - foreach (split ",", $factinfo{'modified_by'}) { - /\!/; - push(@x, $`); - } - $string .= "by ".&IJoin(@x); + $string .= " by ".(split ",", $factinfo{'modified_by'})[0]; - $i++; push(@array,$string); } @@ -98,24 +95,24 @@ sub CmdFactInfo { $string .= "\002". $requested_count. "\002 ". &fixPlural("time", $requested_count); } - } - $string .= ", " if ($string ne ""); + my $requested_by = $factinfo{'requested_by'}; + $requested_by =~ /\!/; + $string .= ", last by $`"; - my $requested_by = $factinfo{'requested_by'}; - $requested_by =~ /\!/; - $string .= "last by $`"; - - my $requested_time = $factinfo{'requested_time'}; - if ($requested_time) { - if (time() - $requested_time > 60*60*24*7) { - $string .= " at \037". scalar(gmtime $requested_time). "\037"; - } else { - $string .= ", ".&Time2String(time() - $requested_time)." ago"; + my $requested_time = $factinfo{'requested_time'}; + if ($requested_time) { + if (time() - $requested_time > 60*60*24*7) { + $string .= " at \037". scalar(localtime $requested_time). "\037"; + } else { + $string .= ", ".&Time2String(time() - $requested_time)." ago"; + } } + } else { + $string = "has not been requested yet"; } - push(@array,$string); + push(@array, $string); } # locked: @@ -132,7 +129,7 @@ sub CmdFactInfo { return; } - &performStrictReply("$factinfo{'factoid_key'} -- ". join("; ", @array) ."."); + &pSReply("$factinfo{'factoid_key'} -- ". join("; ", @array) ."."); return; } @@ -140,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}++; @@ -172,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. @@ -190,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) { @@ -202,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; @@ -233,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}++; @@ -242,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}++; @@ -253,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. @@ -262,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) { @@ -299,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; @@ -332,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) { @@ -417,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) { @@ -428,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) { @@ -494,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) { @@ -506,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) { @@ -522,6 +538,7 @@ sub CmdFactStats { "factoid_value", "^ see "); my %redir; my $f; + my $dangling = 0; for (@list) { my $factoid = $_; @@ -532,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++; } } } @@ -548,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.'; @@ -577,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; @@ -596,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) { @@ -645,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; @@ -703,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'.";