]> git.donarmstrong.com Git - infobot.git/blobdiff - src/Modules/Search.pl
ws
[infobot.git] / src / Modules / Search.pl
index e307902ecf6128b5737f685da5dfeab000b26596..8e65df3d81c64ffa404046886f1d61c1d6d82400 100644 (file)
@@ -10,24 +10,35 @@ use strict;
 ###
 # Search(keys||vals, str);
 sub Search {
-    my ($type, $str) = @_;
-    my $start_time = &main::gettimeofday();
+    my ( $type, $str ) = @_;
+    my $start_time = &::timeget();
     my @list;
+    my $maxshow = &::getChanConfDefault( 'maxListReplyCount', 15, $::chan );
 
-    $type =~ s/s$//;   # nice work-around.
+    $type =~ s/s$//;    # nice work-around.
 
-    if ($type eq "value") {    # search by value.
-       @list = &main::searchTable("factoids", "factoid_key", "factoid_value", $str);
-    } else {                   # search by key.
-       @list = &main::searchTable("factoids", "factoid_key", "factoid_key", $str);
+    if ( $type eq 'value' ) {
+
+        # search by value.
+        @list =
+          &::searchTable( 'factoids', 'factoid_key', 'factoid_value', $str );
+    }
+    else {
+
+        # search by key.
+        @list =
+          &::searchTable( 'factoids', 'factoid_key', 'factoid_key', $str );
     }
 
-    my $delta_time = sprintf("%.02f", &main::gettimeofday() - $start_time);
-    &main::status("search: took $delta_time sec for query.") if ($delta_time > 0);
+    @list = grep( !/\#DEL\#$/, @list ) if ( scalar(@list) > $maxshow );
+    my $delta_time = sprintf( "%.02f", &::timedelta($start_time) );
+    &::status("search: took $delta_time sec for query.") if ( $delta_time > 0 );
 
     my $prefix = "Factoid search of '\002$str\002' by $type ";
 
-    &main::performStrictReply( &main::formListReply(1, $prefix, @list) );
+    &::performStrictReply( &::formListReply( 1, $prefix, @list ) );
 }
 
 1;
+
+# vim:ts=4:sw=4:expandtab:tw=80