X-Git-Url: https://git.plutz.net/?p=confetti;a=blobdiff_plain;f=pages%2Fattendees.sh;h=75092c13143511d995a5308a67655ce930c561fc;hp=e4b8cd9d2168758a1ddd73daab5f7fe6886811f8;hb=2dc9740e1452127d64d027b57432032242f04eff;hpb=a8c6f8b510bb4747798c4f576162733d982bae75 diff --git a/pages/attendees.sh b/pages/attendees.sh index e4b8cd9..75092c1 100755 --- a/pages/attendees.sh +++ b/pages/attendees.sh @@ -1,12 +1,121 @@ #!/bin/sh +listcards() { + ls -1 ${_DATA}/vcard/*vcf +} + +vcf_parse() { + tr -d '\n' <"$1" |sed -r 's:\r ::g;s:\r:\n:g' \ + | sed -rn ' + s:^PHOTO:001 PHOTO:p; + s:^X-MS-CARDPICTURE:001 PHOTO:p; + s:^LOGO:002 LOGO:p; + s:^FN:003 FN:p; + s:^NICKNAME:005 NICKNAME:p; + s:^N:004 N:p + s:^SOUND:006 SOUND:p; + s:^GENDER:007 GENDER:p; + s:^X-GENDER:007 GENDER:p; + s:^KIND:008 KIND:p; + s:^TITLE:009 TITLE:p; + s:^ROLE:010 ROLE:p; + s:^ORG:011 ORG:p; + s:^MEMBER:012 MEMBER:p; + s:^CATEGORIES:013 CATEGORIES:p; + s:^ANNIVERSARY:014 ANNIVERSARY:p; + s:^X-ANNIVERSARY:014 ANNIVERSARY:p; + s:^X-EVOLUTION-ANNIVERSARY:014 ANNIVERSARY:p; + s:^X-KADDRESSBOOK-X-Anniversary:014 ANNIVERSARY:p; + s:^BDAY:015 BDAY:p; + s:^EMAIL:016 EMAIL:p; + s:^TEL:017 TEL:p; + s:^IMPP:018 IMPP:p; + s:^X-AIM(;[^"\:]+|;"[^"]+")*\:(.*)$:018 IMPP\1\:aim\:\2:p; + s:^X-ICQ(;[^"\:]+|;"[^"]+")*\:(.*)$:018 IMPP\1\:aim\:\2:p; + s:^X-GOOGLE-TALK(;[^"\:]+|;"[^"]+")*\:(.*)$:018 IMPP\1\:xmpp\:\2:p; + s:^X-JABBER(;[^"\:]+|;"[^"]+")*\:(.*)$:018 IMPP\1\:xmpp\:\2:p; + s:^X-MSN(;[^"\:]+|;"[^"]+")*\:(.*)$:018 IMPP\1\:msn\:\2:p; + s:^X-YAHOO(;[^"\:]+|;"[^"]+")*\:(.*)$:018 IMPP\1\:ymsgr\:\2:p; + s:^X-SIP(;[^"\:]+|;"[^"]+")*\:(sip\:)?(.*)$:018 IMPP\1\:sip\:\3:p; + s:^ADR:019 ADR:p; + s:^LABEL:020 LABEL:p; + s:^URL:021 URL:p; + s:^X-EVOLUTION-BLOG-URL:021 URL:p; + s:^LANG:022 LANG:p; + s:^NOTE:023 NOTE:p; + + s:^RELATED:025 RELATED:p; + s:^AGENT:025 RELATED\;TYPE=agent:p; + s:^X-ASSISTANT:025 RELATED\;TYPE=assistant;VALUE=text:p; + s:^X-EVOLUTION-ASSISTANT:025 RELATED\;TYPE=assistant;VALUE=text:p; + s:^X-KADDRESSBOOK-X-AssistantsName:025 RELATED\;TYPE=assistant;VALUE=text:p; + s:^X-MANAGER:025 RELATED\;TYPE=manager;VALUE=text:p; + s:^X-EVOLUTION-MANAGER:025 RELATED\;TYPE=manager;VALUE=text:p; + s:^X-KADDRESSBOOK-X-ManagersName:025 RELATED\;TYPE=manager;VALUE=text:p; + s:^X-SPOUSE:025 RELATED\;TYPE=spouse;VALUE=text:p; + s:^X-EVOLUTION-SPOUSE:025 RELATED\;TYPE=spouse;VALUE=text:p; + s:^X-KADDRESSBOOK-X-SpouseName:025 RELATED\;TYPE=spouse;VALUE=text:p; + + s:^BEGIN.*$::; + s:^CALADRURI.*$::; + s:^CALURI.*$::; + s:^CLASS.*$::; + s:^CLIENTPIDMAP.*$::; + s:^END.*$::; + s:^FBURL.*$::; + s:^GEO.*$::; + s:^MAILER.*$::; + s:^NAME.*$::; + s:^PRODID.*$::; + s:^PROFILE.*$::; + s:^REV.*$::; + s:^SORT-STRING.*$::; + s:^SOURCE.*$::; + s:^TZ.*$::; + s:^UID.*$::; + s:^VERSION.*$::; + s:^XML.*$::; + + s:^([A-Z].*)$:024 \1:p; + ' \ + | sort |while read -r line; do + case "$line" in + 001*) + echo -E "$line" + ;; + 002*) + echo -E "$line" + ;; + 003*) + fn=$(echo "$line" |sed -r 's:^[0-9]{3} ([^;\:]+)(;[^"\:]+|;"[^"]+")*\:(.*)$:\3:g' |tr -d '\r') + ;; + 004*) + n=$(echo "$line" |sed -rn 's:^([0-9]{3} )([^;\:]+)(;[^"\:]+|;"[^"]+")*\:([^;]*)(\;[^;]*)(\;[^;]*)?(\;[^;]*)?(\;[^;]*)?$:\7 \5 \6 \4 \8:gp' |sed -r 's:,: :;s:\;: :g;s: +: :g' |tr -d '\r') + ;; + 005*) + nick=$(echo "$line" |sed -r 's:^[0-9]{3} ([^;\:]+)(;[^"\:]+|;"[^"]+")*\:(.*)$:\3:g' |tr -d '\r') + ;; + *) [ -n "$fn" -a -n "$nick" ] && fn="$fn aka. $nick" + [ -n "$n" -a -n "$nick" ] && n="$n aka. $nick" + [ -n "$fn" -a -z "$n" ] && echo "003 FN:$fn" + [ -n "$n" ] && echo "003 FN:$n" + [ -z "$fn" -a -z "$n" ] && echo "003 FN:$nick" + echo -E "$line" + cat + ;; + esac + done | sed -r 's:^[0-9]{3} ([^;\:]+)(;[^"\:]+|;"[^"]+")*\:(.*)$:key=\1\nvalue=\3\ntag=\2:g' +} + case "$1" in title) echo "Teilnehmende" ;; css) + . ${_EXEC}/templates/attendees.css.sh ;; body) + . ${_EXEC}/templates/attendees.html.sh ;; esac