]> git.plutz.net Git - lobster/blob - cards/new_card.sh
updated escape vcf functions
[lobster] / cards / new_card.sh
1 #!/bin/sh
2
3 # Copyright 2014, 2019 Paul Hänsch
4 #
5 # This file is part of Confetti.
6
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.
11
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.
16
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/>. 
19
20 filter="$(REF f)"
21 order="$(REF o)"
22
23 uid="$(timeid)$(randomid)"  # 32 Octets UID, starting with timestamp
24 card="${uid}.vcf"
25
26 IFS='|' read -r date fn ln bmonth byear tel tcell junk1 email junk2 note <<-EOF
27         $(POST seed |tr \\t \|)
28         EOF
29
30 [ ${#byear} = 1 ] && byear="200$byear"
31 [ ${#byear} = 2 ] && byear="20$byear"
32 [ ${#bmonth} = 1 ] && bmonth="0$bmonth"
33
34 mn=""
35 case $fn in
36   *\ *)
37     mn="${fn#* }"
38     fn="${fn%% *}"
39     ;;
40 esac
41
42 mkdir -p "${_DATA}/lock/vcard/"
43 lockdir="${_DATA}/lock/vcard/${card}/"
44 lockfile=${lockdir}/${SESSION_ID}
45
46 if mkdir "$lockdir"; then
47   cat >"$lockfile" <<-EOF
48         BEGIN:VCARD
49         VERSION:4.0
50         N:$(pdi_escape "$ln" "$fn" "$mn" "" "")
51         FN:$(pdi_escape "${fn}${mn:+ }${mn} ${ln}")
52         BDAY:$(parse_date "${byear}-${bmonth}-01")
53         TEL:$(pdi_escape "$tel")
54         TEL;TYPE=CELL:$(pdi_escape "$tcell")
55         EMAIL:$(pdi_escape "$email")
56         X-ZACK-JOINDATE:$(parse_date "$date")
57         ADR:
58         NOTE:$(pdi_escape "$note")
59         UID:${uid}
60         END:VCARD
61         EOF
62   REDIRECT "/cards/?o=${order}&f=${filter}&e=${card}"
63 else
64   SET_COOKIE session message="EDITLOCK"
65   REDIRECT "/cards/?o=${order}&f=${filter}"
66 fi