X-Git-Url: https://git.plutz.net/?a=blobdiff_plain;ds=sidebyside;f=cards%2Fupdate_card.sh;fp=cards%2Fupdate_card.sh;h=a1143c3d72057359ef7b42a07c919c3d21ef33f4;hb=43e7c60df0632fd383306a2d3c6dc8c4213d4b9d;hp=0000000000000000000000000000000000000000;hpb=d40eb749c3b9766eb85d843e712f1b86543232d2;p=confetti diff --git a/cards/update_card.sh b/cards/update_card.sh new file mode 100755 index 0000000..a1143c3 --- /dev/null +++ b/cards/update_card.sh @@ -0,0 +1,102 @@ +#!/bin/zsh + +# Copyright 2014, 2016 Paul Hänsch +# +# This file is part of Confetti. +# +# Confetti is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Confetti is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with Confetti. If not, see . + +cgi_refdata + +filter="&filter=${_REF[filter]}" +filtertype="&filtertype=${_REF[filtertype]}" +order="&order=${_REF[order]}" + +card="${_POST[card]}" +tempfile="$_DATA/temp/$card" +cardfile="$_DATA/vcard/$card" +attfile="$_DATA/mappings/attendance" + +vcf_escape(){ + for each in "$@"; do + printf %s\\n "$each" \ + | sed -r ':X;$!{N;bX}; s;\r\n;\n;g; s;([;,\\]);\\\1;g; s;\n;\\n;g;' + done \ + | sed -r ':X;$!{N;bX}; s;\n;\;;g' +} + +[ "${_POST[hi_select]}" = "list" ] || _POST[hi_company]="${_POST[hi_other]}" +[ -n "${_POST[hi_company]}${_POST[hi_number]}${_POST[hi_status]}" ] \ +&& _POST[X-HEALTH-INSURANCE]="$(vcf_escape "${_POST[hi_company]}" "${_POST[hi_number]}" "${_POST[hi_status]}")" + +sed -r 's;$;\r;' >"$tempfile" <>"$attfile" + sed -rn 's:^(.+)'$card'$:\1:p' "$attfile" |while read course; do + touch "$_DATA/ical/$course" + done + + mv "$tempfile" "$cardfile" + redirect "?p=cards${filter}${filtertype}${order}#$card" + ;; + cancel) + rm "$tempfile" + [ -f "$cardfile" ] \ + && redirect "?p=cards${filter}${filtertype}${order}#$card" \ + || redirect "?p=cards${filter}${filtertype}${order}" + ;; + delete) + rm "$tempfile" "$cardfile" + redirect "?p=cards${filter}${filtertype}${order}" + ;; +esac