diff tj.tcl @ 625:5eca657134a5

tj: Implement command to set/reset default ID for TJs.
author Matti Hamalainen <ccr@tnsp.org>
date Thu, 11 Feb 2021 10:32:51 +0200
parents e7c88d4e917c
children 319c2e73860c
line wrap: on
line diff
--- a/tj.tcl	Thu Feb 11 10:02:55 2021 +0200
+++ b/tj.tcl	Thu Feb 11 10:32:51 2021 +0200
@@ -88,8 +88,8 @@
 }
 
 
+# ------------------------------------------------------------------------
 proc tj_get_id {rstr rindex rid} {
-  global tj_default_id
   upvar $rindex uindex
   upvar $rid uid
 
@@ -98,12 +98,23 @@
     incr uindex
     return 1
   } else {
-    set uid $tj_default_id
     return 0
   }
 }
 
 
+proc tj_get_default_id {uhand} {
+  global tj_default_id
+
+  set uid [getuser $uhand XTRA "tj_default_id"]
+  if {$uid == "" || $uid == "{}" || $uid == "*"} {
+    return $tj_default_id
+  } else {
+    return $uid
+  }
+}
+
+
 proc tj_ctime {ustamp} {
   return [clock format $ustamp -format [tj_qm "datefmt"]]
 }
@@ -167,6 +178,7 @@
 }
 
 
+# ------------------------------------------------------------------------
 proc tj_display_tjs {upublic unick uchan uname uid uclock} {
 
   set nresults 0
@@ -230,6 +242,7 @@
       set rdesc ""
     } else {
       set rdesc $tj_default_desc
+      set uid [tj_get_default_id $uhand]
     }
 
     if {![utl_arg_get $rarglist rindex rarg 1]} {
@@ -392,7 +405,6 @@
       set uname $uhand
     }
 
-
     set usql "SELECT COUNT(*) FROM tj WHERE uuser='[utl_escape $uname]'"
     if {[catch {set nitems [tj_dbh onecolumn $usql]} uerrmsg]} {
       tj_msg $upublic $unick $uchan "err_sql" [list $uerrmsg]
@@ -434,11 +446,40 @@
     }
 
     tj_msg $upublic $unick $uchan "items_deleted" [list $uid $nitems]
+
+  } elseif {[tj_cmd_match "default" $rcmd]} {
+    # !tj default #<id>
+    # Check for #id prefix
+    if {![utl_arg_get $rarglist rindex rarg 0] || ![tj_get_id $rarg rindex uid]} {
+      tj_msg $upublic $unick $uchan "help_default"
+      return 1
+    }
+
+    if {$uid == "" || $uid == "{}" || $uid == "*"} {
+      set uid $tj_default_id
+    } else {
+      set usql "SELECT COUNT(*) FROM tj WHERE uuser='[utl_escape $uhand]' AND uid='[utl_escape $uid]'"
+      if {[catch {set nids [tj_dbh onecolumn $usql]} uerrmsg]} {
+        tj_msg $upublic $unick $uchan "err_sql" [list $uerrmsg]
+        tj_log "$uerrmsg on SQL:\n$usql"
+        return 1
+      }
+
+      if {$nids < 1} {
+        tj_msg $upublic $unick $uchan "err_no_such_id" [list $uid]
+        return 1
+      }
+    }
+
+    setuser $uhand XTRA "tj_default_id" $uid
+
+    tj_msg $upublic $unick $uchan "default_set" [list $uid]
+
   } elseif {[tj_cmd_match "show" $rcmd]} {
     # !tj show [#<id>] <name>
     # Check for #id prefix
     if {[utl_arg_get $rarglist rindex rarg 0]} {
-      tj_get_id $rarg rindex uid
+      set notdefault [tj_get_id $rarg rindex uid]
     }
 
     if {![utl_arg_get $rarglist rindex rarg 0]} {
@@ -452,14 +493,19 @@
       return 1
     }
 
+    if {!$notdefault} {
+      set uid [tj_get_default_id $uname]
+    }
+
     tj_display_tjs $upublic $unick $uchan $uname $uid $uclock
   } else {
     # !tj [#<id>] [name]
+    set notdefault 0
     set uname $uhand
     set rindex 0
     if {[utl_arg_get $rarglist rindex rarg 0]} {
       # Check for #id prefix
-      tj_get_id $rarg rindex uid
+      set notdefault [tj_get_id $rarg rindex uid]
 
       if {[utl_arg_get $rarglist rindex rarg 0]} {
         set uname [tj_correct_handle $rarg]
@@ -468,8 +514,10 @@
           return 1
         }
       }
-    } else {
-      set uid $tj_default_id
+    }
+
+    if {!$notdefault} {
+      set uid [tj_get_default_id $uname]
     }
 
     tj_display_tjs $upublic $unick $uchan $uname $uid $uclock