changeset 64:cd9fd4ec82a9

quotedb: Add in +n flag override for deleting and updating quotes.
author Matti Hamalainen <ccr@tnsp.org>
date Sat, 10 Sep 2011 17:00:22 +0300
parents 7b03971c6d28
children 31c8c4f50aa6
files quotedb.tcl
diffstat 1 files changed, 23 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/quotedb.tcl	Thu Sep 08 22:26:52 2011 +0300
+++ b/quotedb.tcl	Sat Sep 10 17:00:22 2011 +0300
@@ -200,12 +200,20 @@
     qdb_msg $upublic $unick $uchan "$ucmd del <id>"
     return 0
   }
+
+  set qoverride [matchattr $uhand n]
+  set usql "SELECT utime AS utime FROM $utable WHERE id=$unum"
+  if {$qoverride == 0} {
+    set usql "$usql AND user='[qdb_escape $uhand]'"
+    set qextra ""
+  } else {
+    set qextra " (owner/time override)"
+  }
   
-  set usql "SELECT utime AS utime FROM $utable WHERE id=$unum AND user='[qdb_escape $uhand]'"
   quotedb eval $usql {
     set udiff [expr [unixtime] - $utime]
-    if {$udiff < $maxdiff} {
-      set usql "DELETE FROM $utable WHERE id=$unum AND user='[qdb_escape $uhand]'"
+    if {$udiff < $maxdiff || $qoverride} {
+      set usql "DELETE FROM $utable WHERE id=$unum"
       if {![qdb_sql_exec $upublic $unick $uchan $usql]} {
         return 0
       } else {
@@ -213,7 +221,7 @@
         if {![qdb_sql_exec $upublic $unick $uchan $usql]} {
           return 0
         }
-        qdb_msg $upublic $unick $uchan "$utable #$unum poistettu."
+        qdb_msg $upublic $unick $uchan "$utable #$unum poistettu$qextra."
         return 1
       }
     } else {
@@ -242,15 +250,23 @@
     return 0
   }
 
-  set usql "SELECT utime AS utime FROM $utable WHERE id=$unum AND user='[qdb_escape $uhand]'"
+  set qoverride [matchattr $uhand n]
+  set usql "SELECT utime AS utime FROM $utable WHERE id=$unum"
+  if {$qoverride == 0} {
+    set usql "$usql AND user='[qdb_escape $uhand]'"
+    set qextra ""
+  } else {
+    set qextra " (owner/time override)"
+  }
+
   quotedb eval $usql {
     set udiff [expr [unixtime] - $utime]
-    if {$udiff < $maxdiff} {
+    if {$udiff < $maxdiff || $qoverride} {
       set usql "UPDATE $utable SET utext='[qdb_escape $uquote]', utime=[unixtime] WHERE id=$unum"
       if {![qdb_sql_exec $upublic $unick $uchan $usql]} {
         return 0
       } else {
-        qdb_msg $upublic $unick $uchan "$utable #$unum päivitetty."
+        qdb_msg $upublic $unick $uchan "$utable #$unum päivitetty$qextra."
         return 1
       }
     } else {