Merge commit 'c0dcd45c3ecac33376e06b7ca470ae56f2ed5e19' into cgilite
[confetti] / cards / export_csv.sh
1 #!/bin/sh
2
3 . $_EXEC/pdiread.sh
4 . $_EXEC/cards/l10n.sh
5 . $_EXEC/cards/list.sh
6
7 upcase=' y;abcdefghijklmnopqrstuvwxyzäöüé;ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜÉ;; '
8
9 filter="$(GET f)"
10 order="$(GET o)"
11
12 [ "$order" ] || order=firstname
13
14 list_attendance() {
15   grep -F "     ${cardfile##*/}" "$_DATA/mappings/attendance" |while read each discard; do
16     { pdi_value "$(pdi_load "$_DATA/ical/$each")" SUMMARY || l10n "(unnamed course)"; } |unescape
17   done \
18   | sed -E 's;";\\";g;'
19 }
20
21 list_item() {
22   local item="$1"
23   local cnt="$(pdi_count "$card" "$item")"
24   local ret=''
25   
26   seq 1 $cnt |while read n; do case $item in
27     TEL)
28       tel="$(pdi_value "$card" "$item" "$n" |unescape)"
29       ttype="$(pdi_attrib "$card" "$item" "$n" TYPE)"
30       if [ "$tel" -a "$ttype" ]; then 
31         printf '%s: %s\n' "$(l10n "TYPE=$ttype")" "$tel"
32       elif [ "$tel" ]; then
33         printf '%s\n' "$tel"
34       fi
35       ;;
36     GENDER)
37       gen="$(pdi_value "$card" "$item" "$n" |unescape)"
38       [ "$gen" ] && l10n "gender_$gen"
39       ;;
40     *) pdi_value "$card" "$item" "$n" |unescape
41       ;;
42   esac; done \
43   | sed -E 's;";\\";g;'
44 }
45
46 printf '%s\r\n' \
47        'Content-Type: text/csv; charset=utf-8' \
48        'Content-Disposition: inline; filename="confetti_export_'$(date +%F_%T)'.csv"' \
49        ''
50
51 printf '"%s";"%s";"%s";"%s";"%s";"%s";"%s";"%s";"%s"\n' \
52        "$(l10n FN)" "$(l10n GENDER)" "$(l10n BDAY)" \
53        "$(l10n TEL)" "$(l10n EMAIL)" "$(l10n ADR)" \
54        "$(l10n NOTE)" "$(l10n courses)" "$(l10n CATEGORIES)" \
55 | sed -E 's;&shy\;;;g;'
56
57
58 filter_cards \
59 | order_cards \
60 | while read cardfile; do
61   card="$(pdi_load "$cardfile")"
62   printf '"%s";"%s";"%s";"%s";"%s";"%s";"%s";"%s";"%s"\n' \
63   "$(list_item FN)" "$(list_item GENDER)" "$(list_item BDAY)" \
64   "$(list_item TEL)" "$(list_item EMAIL)" "$(list_item ADR)" \
65   "$(list_item NOTE)" "$(list_attendance)" "$(list_item CATEGORIES)"
66 done