]> git.plutz.net Git - invoices/commitdiff
improved POST data reader for numbered field arrays
authorPaul Hänsch <paul@plutz.net>
Sat, 5 Apr 2025 07:25:36 +0000 (09:25 +0200)
committerPaul Hänsch <paul@plutz.net>
Sat, 5 Apr 2025 07:25:36 +0000 (09:25 +0200)
index.cgi

index 31478d7fabf603eb87a04eeb4d1ac8502b0346c7..09d07c31abb613e5593ccd8e40421c31d6c4aca6 100755 (executable)
--- a/index.cgi
+++ b/index.cgi
@@ -30,8 +30,8 @@ fi >&2
   new_invoice)
     id="$(timeid)" file="$_DATA/${id}.kvd"
     DB3 new 
-    DB3 set type "$(POST type)"
-    DB3 set status open
+    DB3 store type "$(POST type)"
+    DB3 store status open
     DB3 write "$file"
     REDIRECT "${_BASE}/doc/${id}"
     ;;
@@ -41,13 +41,22 @@ fi >&2
       DB3 open "$file"
       for key in $(POST_KEYS); do case $key in
         id|tid|session_key|action):;;
+        *._*)
+          if DB3 iterate _tmp_modified |grep -qxF "${key%._*}"; then
+            DB3 append "${key%._*}" "$(POST "$key")"
+          else
+            DB3 store "${key%._*}" "$(POST "$key")"
+            DB3 append _tmp_modified "${key%._*}" || DB3 store _tmp_modified "${key%._*}"
+          fi
+          ;;
         *)set --
           for seq in $(seq 1 "$(POST_COUNT "$key")"); do
             set -- "$@" "$(POST "$key" $seq)"
           done
-          DB3 set "$key" "$@"
+          DB3 store "$key" "$@"
           ;;
       esac; done
+      DB3 delete _tmp_modified
       DB3 write "$file"
       RELEASE "$file"
       [ -d .git ] && {