changeset 19:9cf22053e5da

Repair !urlfind functionality.
author Matti Hamalainen <ccr@tnsp.org>
date Mon, 05 Sep 2011 16:56:13 +0300
parents 1e2232135354
children 45b76d81e256
files urllog.tcl
diffstat 1 files changed, 29 insertions(+), 27 deletions(-) [+]
line wrap: on
line diff
--- a/urllog.tcl	Mon Sep 05 16:32:04 2011 +0300
+++ b/urllog.tcl	Mon Sep 05 16:56:13 2011 +0300
@@ -530,41 +530,43 @@
 	global urllog_name urllog_version urllog_shorturl urldb
 	global urllog_showmax_pub urllog_showmax_priv urlmsg_nomatch
 
+	if {$upublic == 0} {
+		set ulimit 5
+	} else {
+		set ulimit 3
+	}
+
 	### Parse the given command
 	urllog_log "$unick/$uhand searched URL: $utext"
 
-	set footokens [split $utext " "]
-	foreach ftoken $footokens {
-		set foomark [string range $ftoken 0 0]
-		set foopat  [string range $ftoken 1 end]
+	set ftokens [split $utext " "]
+	foreach ftoken $ftokens {
+		set fprefix [string range $ftoken 0 0]
+		set fpattern [string range $ftoken 1 end]
 
-		if {$foomark == "-" || $foomark == "+" || $foomark == "%" || $foomark == "@"} {
-			lappend ipatlist "$foomark *$foopat*"
+		if {$fprefix == "-"} {
+			lappend fpatlist "url NOT LIKE '%[urllog_escape $fpattern]%'"
+		} elseif {$fprefix == "%"} {
+			lappend fpatlist "user='[urllog_escape $fpattern]'"
+		} elseif {$fprefix == "@"} {
+			# foo
 		} else {
-			lappend ipatlist "+ *$ftoken*"
+			lappend fpatlist "url LIKE '%[urllog_escape $ftoken]%'"
 		}
 	}
+
+	set iresults 0
+	set query "SELECT id AS urlID, utime AS utime, url AS uurl, user AS uuser, host AS uhost FROM urls WHERE [join $fpatlist " AND "] ORDER BY utime DESC LIMIT $ulimit"
+	urldb eval $query {
+		incr iresults
+		set shortURL $uurl
+		if {$urllog_shorturl != 0 && $urlID != ""} {
+			set shortURL "$shortURL [urllog_get_short $urlID]"
+		}
+		urllog_msg $upublic $unick $uchan "#$iresults: $shortURL ($uuser@[urllog_ctime $utime])"
+	}
 	
-	### Get the matches from database
-	set iresults ""
-
-	### Show the results
-	if {$iresults != ""} {
-		set j 0
-		foreach i $iresults {
-			incr j
-			set foo [split $i " "]
-			set shortURL [lindex $foo 0]
-			set shortID [lindex $foo 4]
-
-			if {$urllog_shorturl != 0 && $shortID != ""} {
-				set shortURL "$shortURL [urllog_get_short $shortID]"
-			}
-
-			urllog_msg $upublic $unick $uchan "#$j: $shortURL ([lindex $foo 2]@[urllog_ctime [lindex $foo 1]])"
-		}
-
-	} else {
+	if {$iresults == 0} {
 		# If no URLs were found
 		urllog_msg $upublic $unick $uchan $urlmsg_nomatch
 	}