3 # Copyright 2016, 2020 Paul Hänsch
5 # This file is part of Confetti.
7 # Confetti is free software: you can redistribute it and/or modify
8 # it under the terms of the GNU Affero General Public License as published by
9 # the Free Software Foundation, either version 3 of the License, or
10 # (at your option) any later version.
12 # Confetti is distributed in the hope that it will be useful,
13 # but WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 # GNU Affero General Public License for more details.
17 # You should have received a copy of the GNU Affero General Public License
18 # along with Confetti. If not, see <http://www.gnu.org/licenses/>.
23 tpyfile="$_DATA/therapies/${tpy}.tpy"
24 tempfile="$_DATA/temp/${tpy}.tpy"
26 if [ "$(POST tid)" != "$(transid "$tpyfile")" ]; then
27 if [ "$(POST autosubmit)" = "true" ]; then
28 printf 'Status: 409 Conflict\r\nContent-Length: 0\r\n\r\n'
31 SET_COOKIE session message="TRANSACTION CONFLICT"
32 REDIRECT "/therapies/${tpy%.*}/${tpy#*.}"
36 # serialize POST array into file
37 for key in $(POST_KEYS); do
41 value="$(POST "$key")"
44 *.*.*) IFS=. read dom mon y <<-END
48 *.*.) IFS=. read dom mon <<-END
52 */*/*) IFS=/ read mon dom y <<-END
56 */*) IFS=/ read mon dom <<-END
60 *-*-*) IFS=- read y mon dom <<-END
65 [ ! "$y" ] && y="$(date +%Y)"
66 [ "$y" -gt 0 -a "$y" -lt 100 ] && y="$((y + 2000))"
67 date -d "${y}-${mon}-${dom}" + && printf %s:%s\\n "$key" "$(date -d "${y}-${mon}-${dom}" +%F)" \
68 || printf %s:\\n "$key"
70 *) printf %s:%s\\n "$key" "$(pdi_escape "$(POST "$key")")" ;;
72 done >"$tempfile" 2>&-
74 if [ "$(POST delete_session)" ]; then
75 n="$(POST delete_session)"
76 sed -Ei '/^session'$n'[_:]/d' "$tempfile"
77 rm "${tpyfile%.tpy}_session${n}.png"
79 while grep -Eq '^session'$(($n + 1))'_' "$tempfile"; do
80 sed -Ei 's;^session'$(($n + 1))'(_|:);session'$n'\1;' "$tempfile"
81 mv "${tpyfile%.tpy}_session$(($n+1)).png" "${tpyfile%.tpy}_session${n}.png"
85 elif [ "$(POST new_session)" ]; then
86 sid="$(POST new_session)"
88 read junkx junky dim junkz <<-E_READ
89 $(identify "$_EXEC/therapies/therapy_background.png")
92 convert -size "$dim" xc:transparent "${tpyfile%.tpy}_${sid}.png"
94 printf '%s:exists\n' "$sid" >>"$tempfile"
95 printf '%s_open:checked\n' "$sid" >>"$tempfile"
97 elif [ "$(POST imagedata)" ]; then
98 sid="$(sed -En 's;^(session[0-9]+)_open:checked$;\1;p' "$tempfile" \
103 convert "${tpyfile%.tpy}_${sid}.png" \
104 -draw "$(POST imagedata)" -transparent white \
105 "${tpyfile%.tpy}_${sid}.png"
109 if ! diff -q "$tempfile" "$tpyfile" >/dev/null; then
110 mv "$tempfile" "$tpyfile"
111 rm -f -- "${_DATA}/cache/${tpy%%.*}.vcf.cache"
114 if [ "$(POST autosubmit)" = "true" ]; then
115 msg="$(transid "$tpyfile")"
116 printf 'HTTP/1.1 200 OK\r\nContent-Length: %i\r\n\r\n%s' \
119 REDIRECT "/therapies/${tpy%.*}/${tpy#*.}"